1 // Emacs style mode select -*- C++ -*-
2 //---------------------------------------------------------------------------
3 //
4 // $Id: swsymbol.c,v 1.1.1.1 2003/02/14 19:03:21 fraggle Exp $
5 //
6 // Copyright(C) 1984-2000 David L. Clark
7 // Copyright(C) 2001-2003 Simon Howard
8 //
9 // This program is free software; you can redistribute it and/or modify it
10 // under the terms of the GNU General Public License as published by the
11 // Free Software Foundation; either version 2 of the License, or (at your
12 // option) any later version. This program is distributed in the hope that
13 // it will be useful, but WITHOUT ANY WARRANTY; without even the implied
14 // warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
15 // the GNU General Public License for more details. You should have
16 // received a copy of the GNU General Public License along with this
17 // program; if not, write to the Free Software Foundation, Inc., 59 Temple
18 // Place - Suite 330, Boston, MA 02111-1307, USA.
19 //
20 //---------------------------------------------------------------------------
21 //
22 // Sprites
23 //
24 //---------------------------------------------------------------------------
25 
26 #include "sw.h"
27 #include "swsymbol.h"
28 
29 // sdh 28/6/2002: these are from swsymbol.h
30 // some of this is probably kind of redundant seeing as the data is
31 // all static now
32 
33 #define BOMBBYTES       16              /*  Bytes in a bomb symbol          */
34 #define BOMBANGS        8               /*  Number of bomb angles           */
35 #define TARGBYTES       64              /*  Bytes in a target symbol        */
36 #define TARGORIENTS     4               /*  Number of target types          */
37 #define EXPLSYMS        8               /*  Number of explosion symbols     */
38 #define EXPBYTES        16              /*  Bytes in an explosion symbol    */
39 #define FLCKSYMS        2               /*  Number of flock symbols         */
40 #define FLKBYTES        64              /*  Bytes in a flock symbol         */
41 #define BIRDSYMS        2               /*  Number of bird symbols          */
42 #define BRDBYTES        2               /*  Bytes in a bird symbol          */
43 #define OXSYMS          2               /*  Number of ox symbols            */
44 #define OXBYTES         64              /*  Bytes in an ox symbol           */
45 #define GHSTBYTES       16              /*  Bytes in a ghost symbol         */
46 #define SHOTBYTES       64              /*  Bytes in a shot window symbol   */
47 #define SPLTBYTES       256             /*  Bytes in a splatted bird symbol */
48 #define MISCBYTES       16              /*  Bytes in a missile symbol       */
49 #define MISCANGS        16              /*  Number of missile angles        */
50 #define BRSTBYTES       16              /*  Bytes in a starburst symbol     */
51 #define BRSTSYMS        2               /*  Number of starburst symbols     */
52 
53 #define HITSYMS         2               /*  Number of hit symbols per plane */
54 #define SYMBYTES        64              /*  Bytes in a symbol               */
55 #define WINSIZES        4               /*  Number of winner plane sizes    */
56 #define WINBYTES        64              /*  Bytes in a winner symbol        */
57 
58 // sdh 28/6/2002: moved planes here
59 
60 static unsigned char swplnsym[ORIENTS][ANGLES][SYMBYTES] = {
61 
62 /*  airplane symbols based on the following template file:
63 16
64 . . . . . . . . . . . . . . . .
65 . . . . . . . . . . . . . . . .
66 . . . . . . . . . . . . . . . .
67 . . . . . . . . . . . . . . . .
68 1 1 1 . . . . . . . . . . . . .
69 1 1 1 1 . . . . 2 2 2 2 2 2 2 .
70 1 1 1 1 1 . . . . . 2 . 2 . . .
71 2 2 2 2 2 1 1 1 1 1 2 1 2 1 1 1
72 . 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1
73 . . 1 1 1 1 1 1 2 2 2 2 2 2 1 1
74 . . 1 . . . . . . . . 1 . . . .
75 . . . . . . . . . . 1 1 1 . . .
76 . . . . . . . . . . . 1 . . . .
77 . . . . . . . . . . . . . . . .
78 . . . . . . . . . . . . . . . .
79 . . . . . . . . . . . . . . . .
80 */
81     {
82 	{
83 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
84 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x54, 0x0 , 0x0 , 0x0 ,
85 		0x55, 0x0 , 0xAA, 0xA8, 0x55, 0x40, 0x8 , 0x80, 0xAA, 0x95,
86 		0x59, 0x95, 0x15, 0x55, 0x59, 0x95, 0x5 , 0x55, 0xAA, 0xA5,
87 		0x4 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x5 , 0x40, 0x0 , 0x0 ,
88 		0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
89 		0x0 , 0x0 , 0x0 , 0x0 ,
90 	},
91 	{
92 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
93 		0x0 , 0x0 , 0x0 , 0x0 , 0x2 , 0xA0, 0x0 , 0x0 , 0x2A, 0x4 ,
94 		0x0 , 0x2 , 0xA2, 0x55, 0x10, 0x0 , 0x19, 0x95, 0x54, 0x41,
95 		0x59, 0xA0, 0x55, 0x95, 0x6A, 0x0 , 0x6A, 0x55, 0x60, 0x50,
96 		0x15, 0x54, 0x1 , 0x40, 0x1 , 0x40, 0x0 , 0x0 , 0x1 , 0x0 ,
97 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
98 		0x0 , 0x0 , 0x0 , 0x0 ,
99 	},
100 	{
101 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x8 , 0x0 , 0x0 , 0x0 ,
102 		0x8 , 0x40, 0x0 , 0x0 , 0xA1, 0x50, 0x0 , 0x2 , 0x9 , 0x50,
103 		0x0 , 0x8 , 0xA6, 0x80, 0x0 , 0x0 , 0x4A, 0x0 , 0x0 , 0x1 ,
104 		0x58, 0x50, 0x0 , 0x5 , 0x60, 0x50, 0x11, 0x55, 0x40, 0x0 ,
105 		0x55, 0x95, 0x0 , 0x0 , 0x56, 0x54, 0x0 , 0x0 , 0x19, 0x50,
106 		0x0 , 0x0 , 0x0 , 0x10, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
107 		0x0 , 0x0 , 0x0 , 0x0 ,
108 	},
109 	{
110 		0x0 , 0x0 , 0x4 , 0x0 , 0x0 , 0x2 , 0x95, 0x40, 0x0 , 0x2 ,
111 		0x15, 0x0 , 0x0 , 0x8 , 0xA6, 0x0 , 0x0 , 0x8 , 0x5A, 0x0 ,
112 		0x0 , 0xA , 0xA9, 0x40, 0x0 , 0x20, 0x58, 0x50, 0x0 , 0x1 ,
113 		0x60, 0x0 , 0x0 , 0x1 , 0x60, 0x0 , 0x0 , 0x5 , 0x50, 0x0 ,
114 		0x0 , 0x15, 0x40, 0x0 , 0x5 , 0x69, 0x40, 0x0 , 0x5 , 0x65,
115 		0x0 , 0x0 , 0x15, 0x65, 0x0 , 0x0 , 0x5 , 0x80, 0x40, 0x0 ,
116 		0x0 , 0x0 , 0x0 , 0x0 ,
117 	},
118 	{
119 		0x0 , 0x1 , 0x50, 0x0 , 0x0 , 0x21, 0x50, 0x0 , 0x0 , 0x21,
120 		0x60, 0x0 , 0x0 , 0x2A, 0xA1, 0x0 , 0x0 , 0x21, 0x65, 0x40,
121 		0x0 , 0x2A, 0xA1, 0x0 , 0x0 , 0x21, 0x60, 0x0 , 0x0 , 0x21,
122 		0x60, 0x0 , 0x0 , 0x1 , 0x50, 0x0 , 0x0 , 0x1 , 0x50, 0x0 ,
123 		0x0 , 0x1 , 0x50, 0x0 , 0x0 , 0x6 , 0x50, 0x0 , 0x0 , 0x16,
124 		0x50, 0x0 , 0x0 , 0x56, 0x54, 0x0 , 0x0 , 0x56, 0x40, 0x0 ,
125 		0x0 , 0x56, 0x0 , 0x0 ,
126 	},
127 	{
128 		0x0 , 0x14, 0x0 , 0x0 , 0x0 , 0x54, 0x0 , 0x0 , 0x2 , 0x16,
129 		0x10, 0x0 , 0x2 , 0x1A, 0x14, 0x0 , 0x2 , 0xA5, 0x84, 0x0 ,
130 		0x0 , 0x8A, 0x80, 0x0 , 0x0 , 0xA5, 0xA0, 0x0 , 0x0 , 0x21,
131 		0x50, 0x0 , 0x0 , 0x21, 0x50, 0x0 , 0x0 , 0x0 , 0x54, 0x0 ,
132 		0x0 , 0x0 , 0x54, 0x0 , 0x0 , 0x1 , 0x95, 0x0 , 0x0 , 0x0 ,
133 		0x65, 0x40, 0x0 , 0x1 , 0x64, 0x0 , 0x0 , 0x5 , 0x64, 0x0 ,
134 		0x0 , 0x1 , 0x50, 0x0 ,
135 	},
136 	{
137 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x41,
138 		0x40, 0x0 , 0x5 , 0x61, 0x40, 0x0 , 0x1 , 0x68, 0x0 , 0x0 ,
139 		0x28, 0x9A, 0x0 , 0x0 , 0x2 , 0x21, 0x80, 0x0 , 0x2 , 0x25,
140 		0x50, 0x0 , 0x0 , 0x81, 0x54, 0x0 , 0x0 , 0x20, 0x55, 0x0 ,
141 		0x0 , 0x0 , 0x15, 0x50, 0x0 , 0x0 , 0x19, 0x40, 0x0 , 0x0 ,
142 		0x16, 0x40, 0x0 , 0x0 , 0x5 , 0x80, 0x0 , 0x0 , 0x15, 0x40,
143 		0x0 , 0x0 , 0x5 , 0x0 ,
144 	},
145 	{
146 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x4 ,
147 		0x0 , 0x0 , 0x10, 0x14, 0x0 , 0x0 , 0x16, 0x90, 0x0 , 0x0 ,
148 		0x55, 0xA8, 0x0 , 0x0 , 0x16, 0x66, 0x90, 0x0 , 0x22, 0x65,
149 		0x55, 0x4 , 0x28, 0x21, 0x55, 0x50, 0x2 , 0xA0, 0x16, 0x50,
150 		0x0 , 0x8 , 0x6 , 0xA0, 0x0 , 0x0 , 0x1 , 0x58, 0x0 , 0x0 ,
151 		0x1 , 0x54, 0x0 , 0x0 , 0x1 , 0x54, 0x0 , 0x0 , 0x0 , 0x10,
152 		0x0 , 0x0 , 0x0 , 0x0 ,
153 	},
154 	{
155 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
156 		0x0 , 0x0 , 0x0 , 0x40, 0x0 , 0x0 , 0x1 , 0x50, 0x0 , 0x0 ,
157 		0x0 , 0x40, 0x0 , 0x10, 0x5A, 0xAA, 0x55, 0x50, 0x56, 0x65,
158 		0x55, 0x54, 0x56, 0x65, 0x56, 0xAA, 0x2 , 0x20, 0x1 , 0x55,
159 		0x2A, 0xAA, 0x0 , 0x55, 0x0 , 0x0 , 0x0 , 0x15, 0x0 , 0x0 ,
160 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
161 		0x0 , 0x0 , 0x0 , 0x0 ,
162 	},
163 	{
164 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
165 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x40, 0x0 , 0x0 , 0x1 , 0x40,
166 		0x1 , 0x40, 0x15, 0x54, 0x5 , 0x9 , 0x55, 0xA9, 0x0 , 0xA9,
167 		0x56, 0x55, 0xA , 0x65, 0x41, 0x15, 0x56, 0x64, 0x0 , 0x4 ,
168 		0x55, 0x8A, 0x80, 0x0 , 0x10, 0xA8, 0x0 , 0x0 , 0xA , 0x80,
169 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
170 		0x0 , 0x0 , 0x0 , 0x0 ,
171 	},
172 	{
173 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
174 		0x4 , 0x0 , 0x0 , 0x0 , 0x5 , 0x64, 0x0 , 0x0 , 0x15, 0x95,
175 		0x0 , 0x0 , 0x56, 0x55, 0x0 , 0x1 , 0x55, 0x44, 0x5 , 0x9 ,
176 		0x50, 0x0 , 0x5 , 0x25, 0x40, 0x0 , 0x0 , 0xA1, 0x0 , 0x0 ,
177 		0x2 , 0x9A, 0x20, 0x0 , 0x5 , 0x60, 0x80, 0x0 , 0x5 , 0x4A,
178 		0x0 , 0x0 , 0x1 , 0x20, 0x0 , 0x0 , 0x0 , 0x20, 0x0 , 0x0 ,
179 		0x0 , 0x0 , 0x0 , 0x0 ,
180 	},
181 	{
182 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x2 , 0x50, 0x0 , 0x0 ,
183 		0x59, 0x54, 0x0 , 0x0 , 0x59, 0x50, 0x0 , 0x1 , 0x69, 0x50,
184 		0x0 , 0x1 , 0x54, 0x0 , 0x0 , 0x5 , 0x50, 0x0 , 0x0 , 0x9 ,
185 		0x40, 0x0 , 0x0 , 0x9 , 0x40, 0x0 , 0x5 , 0x25, 0x8 , 0x0 ,
186 		0x1 , 0x6A, 0xA0, 0x0 , 0x0 , 0xA5, 0x20, 0x0 , 0x0 , 0x9A,
187 		0x20, 0x0 , 0x0 , 0x54, 0x80, 0x0 , 0x1 , 0x56, 0x80, 0x0 ,
188 		0x0 , 0x10, 0x0 , 0x0 ,
189 	},
190 	{
191 		0x0 , 0x0 , 0x95, 0x0 , 0x0 , 0x1 , 0x95, 0x0 , 0x0 , 0x15,
192 		0x95, 0x0 , 0x0 , 0x5 , 0x94, 0x0 , 0x0 , 0x5 , 0x90, 0x0 ,
193 		0x0 , 0x5 , 0x40, 0x0 , 0x0 , 0x5 , 0x40, 0x0 , 0x0 , 0x5 ,
194 		0x40, 0x0 , 0x0 , 0x9 , 0x48, 0x0 , 0x0 , 0x9 , 0x48, 0x0 ,
195 		0x0 , 0x4A, 0xA8, 0x0 , 0x1 , 0x59, 0x48, 0x0 , 0x0 , 0x4A,
196 		0xA8, 0x0 , 0x0 , 0x9 , 0x48, 0x0 , 0x0 , 0x5 , 0x48, 0x0 ,
197 		0x0 , 0x5 , 0x40, 0x0 ,
198 	},
199 	{
200 		0x0 , 0x5 , 0x40, 0x0 , 0x0 , 0x19, 0x50, 0x0 , 0x0 , 0x19,
201 		0x40, 0x0 , 0x1 , 0x59, 0x0 , 0x0 , 0x0 , 0x56, 0x40, 0x0 ,
202 		0x0 , 0x15, 0x0 , 0x0 , 0x0 , 0x15, 0x0 , 0x0 , 0x0 , 0x5 ,
203 		0x48, 0x0 , 0x0 , 0x5 , 0x48, 0x0 , 0x0 , 0xA , 0x5A, 0x0 ,
204 		0x0 , 0x2 , 0xA2, 0x0 , 0x0 , 0x12, 0x5A, 0x80, 0x0 , 0x14,
205 		0xA4, 0x80, 0x0 , 0x4 , 0x94, 0x80, 0x0 , 0x0 , 0x15, 0x0 ,
206 		0x0 , 0x0 , 0x14, 0x0 ,
207 	},
208 	{
209 		0x0 , 0x50, 0x0 , 0x0 , 0x1 , 0x54, 0x0 , 0x0 , 0x2 , 0x50,
210 		0x0 , 0x0 , 0x1 , 0x94, 0x0 , 0x0 , 0x1 , 0x64, 0x0 , 0x0 ,
211 		0x5 , 0x54, 0x0 , 0x0 , 0x0 , 0x55, 0x8 , 0x0 , 0x0 , 0x15,
212 		0x42, 0x0 , 0x0 , 0x5 , 0x58, 0x80, 0x0 , 0x2 , 0x48, 0x80,
213 		0x0 , 0x0 , 0xA6, 0x28, 0x0 , 0x0 , 0x29, 0x40, 0x0 , 0x1 ,
214 		0x49, 0x50, 0x0 , 0x1 , 0x41, 0x40, 0x0 , 0x0 , 0x0 , 0x0 ,
215 		0x0 , 0x0 , 0x0 , 0x0 ,
216 	},
217 	{
218 		0x0 , 0x0 , 0x0 , 0x0 , 0x4 , 0x0 , 0x0 , 0x0 , 0x15, 0x40,
219 		0x0 , 0x0 , 0x15, 0x40, 0x0 , 0x0 , 0x25, 0x40, 0x0 , 0x0 ,
220 		0xA , 0x90, 0x20, 0x0 , 0x5 , 0x94, 0xA , 0x80, 0x5 , 0x55,
221 		0x48, 0x28, 0x10, 0x55, 0x59, 0x88, 0x0 , 0x6 , 0x99, 0x94,
222 		0x0 , 0x0 , 0x2A, 0x55, 0x0 , 0x0 , 0x6 , 0x94, 0x0 , 0x0 ,
223 		0x14, 0x4 , 0x0 , 0x0 , 0x10, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
224 		0x0 , 0x0 , 0x0 , 0x0 ,
225 	}
226     },
227     {
228 	{
229 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
230 		0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x0 , 0x0 ,  0x0 ,  0x5 ,  0x40,
231 		0x4 , 0x0 , 0x1 , 0x0 , 0x5 , 0x55, 0xAA,  0xA5,  0x15,  0x55,
232 		0x59, 0x95, 0xAA, 0x95, 0x59, 0x95, 0x55,  0x40,  0x8 ,  0x80,
233 		0x55, 0x0 , 0xAA, 0xA8, 0x54, 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
234 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
235 		0x0 , 0x0 , 0x0 , 0x0 ,
236 	},
237 	{
238 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
239 		0x10, 0x0 , 0x0 , 0x0 , 0x14, 0x4 , 0x0 ,  0x0 ,  0x6 ,  0x94,
240 		0x0 , 0x0 , 0x2A, 0x55, 0x0 , 0x6 , 0x99,  0x94,  0x10,  0x55,
241 		0x59, 0x88, 0x5 , 0x55, 0x48, 0x28, 0x5 ,  0x94,  0xA ,  0x80,
242 		0xA , 0x90, 0x20, 0x0 , 0x25, 0x40, 0x0 ,  0x0 ,  0x15,  0x40,
243 		0x0 , 0x0 , 0x15, 0x40, 0x0 , 0x0 , 0x4 ,  0x0 ,  0x0 ,  0x0 ,
244 		0x0 , 0x0 , 0x0 , 0x0 ,
245 	},
246 	{
247                 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x1 ,
248 		0x41, 0x40, 0x0 , 0x1 , 0x49, 0x50, 0x0 ,  0x0 ,  0x29,  0x40,
249 		0x0 , 0x0 , 0xA6, 0x28, 0x0 , 0x2 , 0x48,  0x80,  0x0 ,  0x5 ,
250 		0x58, 0x80, 0x0 , 0x15, 0x42, 0x0 , 0x0 ,  0x55,  0x8 ,  0x0 ,
251 		0x5 , 0x54, 0x0 , 0x0 , 0x1 , 0x64, 0x0 ,  0x0 ,  0x1 ,  0x94,
252 		0x0 , 0x0 , 0x2 , 0x50, 0x0 , 0x0 , 0x1 ,  0x54,  0x0 ,  0x0 ,
253 		0x0 , 0x50, 0x0 , 0x0 ,
254 	},
255 	{
256 		0x0 , 0x0 , 0x14, 0x0 , 0x0 , 0x0 , 0x15,  0x0 ,  0x0 ,  0x4 ,
257 		0x94, 0x80, 0x0 , 0x14, 0xA4, 0x80, 0x0 ,  0x12,  0x5A,  0x80,
258 		0x0 , 0x2 , 0xA2, 0x0 , 0x0 , 0xA , 0x5A,  0x0 ,  0x0 ,  0x5 ,
259 		0x48, 0x0 , 0x0 , 0x5 , 0x48, 0x0 , 0x0 ,  0x15,  0x0 ,  0x0 ,
260 		0x0 , 0x15, 0x0 , 0x0 , 0x0 , 0x56, 0x40,  0x0 ,  0x1 ,  0x59,
261 		0x0 , 0x0 , 0x0 , 0x19, 0x40, 0x0 , 0x0 ,  0x19,  0x50,  0x0 ,
262 		0x0 , 0x5 , 0x40, 0x0 ,
263 	},
264 	{
265 		0x0 , 0x5 , 0x40, 0x0 , 0x0 , 0x5 , 0x48,  0x0 ,  0x0 ,  0x9 ,
266 		0x48, 0x0 , 0x0 , 0x4A, 0xA8, 0x0 , 0x1 ,  0x59,  0x48,  0x0 ,
267 		0x0 , 0x4A, 0xA8, 0x0 , 0x0 , 0x9 , 0x48,  0x0 ,  0x0 ,  0x9 ,
268 		0x48, 0x0 , 0x0 , 0x5 , 0x40, 0x0 , 0x0 ,  0x5 ,  0x40,  0x0 ,
269 		0x0 , 0x5 , 0x40, 0x0 , 0x0 , 0x5 , 0x90,  0x0 ,  0x0 ,  0x5 ,
270 		0x94, 0x0 , 0x0 , 0x15, 0x95, 0x0 , 0x0 ,  0x1 ,  0x95,  0x0 ,
271 		0x0 , 0x0 , 0x95, 0x0 ,
272 	},
273 	{
274 		0x0 , 0x10, 0x0 , 0x0 , 0x1 , 0x56, 0x80,  0x0 ,  0x0 ,  0x54,
275 		0x80, 0x0 , 0x0 , 0x9A, 0x20, 0x0 , 0x0 ,  0xA5,  0x20,  0x0 ,
276 		0x1 , 0x6A, 0xA0, 0x0 , 0x5 , 0x25, 0x8 ,  0x0 ,  0x0 ,  0x9 ,
277 		0x40, 0x0 , 0x0 , 0x9 , 0x40, 0x0 , 0x0 ,  0x5 ,  0x50,  0x0 ,
278 		0x0 , 0x1 , 0x54, 0x0 , 0x0 , 0x1 , 0x69,  0x50,  0x0 ,  0x0 ,
279 		0x59, 0x50, 0x0 , 0x0 , 0x59, 0x54, 0x0 ,  0x1 ,  0x2 ,  0x50,
280 		0x0 , 0x0 , 0x0 , 0x0 ,
281 	},
282 	{
283 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x20, 0x0 ,  0x0 ,  0x1 ,  0x20,
284 		0x0 , 0x0 , 0x5 , 0x4A, 0x0 , 0x0 , 0x5 ,  0x60,  0x80,  0x0 ,
285 		0x2 , 0x9A, 0x20, 0x0 , 0x0 , 0xA1, 0x0 ,  0x0 ,  0x5 ,  0x25,
286 		0x40, 0x0 , 0x5 , 0x9 , 0x50, 0x0 , 0x0 ,  0x1 ,  0x55,  0x44,
287 		0x0 , 0x0 , 0x56, 0x55, 0x0 , 0x0 , 0x15,  0x95,  0x0 ,  0x0 ,
288 		0x5 , 0x64, 0x0 , 0x0 , 0x4 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
289 		0x0 , 0x0 , 0x0 , 0x0 ,
290 	},
291 	{
292 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
293 		0x0 , 0x0 , 0xA , 0x80, 0x0 , 0x0 , 0x10,  0xA8,  0x0 ,  0x0 ,
294 		0x55, 0x8A, 0x80, 0x0 , 0x56, 0x64, 0x0 ,  0x4 ,  0xA ,  0x65,
295 		0x41, 0x15, 0x0 , 0xA9, 0x56, 0x55, 0x5 ,  0x9 ,  0x55,  0xA9,
296 		0x1 , 0x40, 0x15, 0x54, 0x0 , 0x0 , 0x1 ,  0x40,  0x0 ,  0x0 ,
297 		0x0 , 0x40, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
298 		0x0 , 0x0 , 0x0 , 0x0 ,
299 	},
300 	{
301 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
302 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x15,
303 		0x2A, 0xAA, 0x0 , 0x55, 0x2 , 0x20, 0x1 ,  0x55,  0x56,  0x65,
304 		0x56, 0xAA, 0x56, 0x65, 0x55, 0x54, 0x5A,  0xAA,  0x55,  0x50,
305 		0x0 , 0x40, 0x0 , 0x10, 0x1 , 0x50, 0x0 ,  0x0 ,  0x0 ,  0x40,
306 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
307 		0x0 , 0x0 , 0x0 , 0x0 ,
308 	},
309 	{
310 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x10,  0x0 ,  0x0 ,
311 		0x1 , 0x54, 0x0 , 0x0 , 0x1 , 0x54, 0x0 ,  0x0 ,  0x1 ,  0x58,
312 		0x0 , 0x8 , 0x6 , 0xA0, 0x2 , 0xA0, 0x16,  0x50,  0x28,  0x21,
313 		0x55, 0x50, 0x22, 0x65, 0x55, 0x4 , 0x16,  0x66,  0x90,  0x0 ,
314 		0x55, 0xA8, 0x0 , 0x0 , 0x16, 0x90, 0x0 ,  0x0 ,  0x10,  0x14,
315 		0x0 , 0x0 , 0x0 , 0x4 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
316 		0x0 , 0x0 , 0x0 , 0x0 ,
317 	},
318 	{
319 		0x0 , 0x0 , 0x5 , 0x0 , 0x0 , 0x0 , 0x15,  0x40,  0x0 ,  0x0 ,
320 		0x5 , 0x80, 0x0 , 0x0 , 0x16, 0x40, 0x0 ,  0x0 ,  0x19,  0x40,
321 		0x0 , 0x0 , 0x15, 0x50, 0x0 , 0x20, 0x55,  0x0 ,  0x0 ,  0x81,
322 		0x54, 0x0 , 0x2 , 0x25, 0x50, 0x0 , 0x2 ,  0x21,  0x80,  0x0 ,
323 		0x28, 0x9A, 0x0 , 0x0 , 0x1 , 0x68, 0x0 ,  0x0 ,  0x5 ,  0x61,
324 		0x40, 0x0 , 0x1 , 0x41, 0x40, 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
325 		0x0 , 0x0 , 0x0 , 0x0 ,
326 	},
327 	{
328 		0x0 , 0x1 , 0x50, 0x0 , 0x0 , 0x5 , 0x64,  0x0 ,  0x0 ,  0x1 ,
329 		0x64, 0x0 , 0x0 , 0x0 , 0x65, 0x40, 0x0 ,  0x1 ,  0x95,  0x0 ,
330 		0x0 , 0x0 , 0x54, 0x0 , 0x0 , 0x0 , 0x54,  0x0 ,  0x0 ,  0x21,
331 		0x50, 0x0 , 0x0 , 0x21, 0x50, 0x0 , 0x0 ,  0xA5,  0xA0,  0x0 ,
332 		0x0 , 0x8A, 0x80, 0x0 , 0x2 , 0xA5, 0x84,  0x0 ,  0x2 ,  0x1A,
333 		0x14, 0x0 , 0x2 , 0x16, 0x10, 0x0 , 0x0 ,  0x54,  0x0 ,  0x0 ,
334 		0x0 , 0x14, 0x0 , 0x0 ,
335 	},
336 	{
337 		0x0 , 0x56, 0x0 , 0x0 , 0x0 , 0x56, 0x40,  0x0 ,  0x0 ,  0x56,
338 		0x54, 0x0 , 0x0 , 0x16, 0x50, 0x0 , 0x0 ,  0x6 ,  0x50,  0x0 ,
339 		0x0 , 0x1 , 0x50, 0x0 , 0x0 , 0x1 , 0x50,  0x0 ,  0x0 ,  0x1 ,
340 		0x50, 0x0 , 0x0 , 0x21, 0x60, 0x0 , 0x0 ,  0x21,  0x60,  0x0 ,
341 		0x0 , 0x2A, 0xA1, 0x0 , 0x0 , 0x21, 0x65,  0x40,  0x0 ,  0x2A,
342 		0xA1, 0x0 , 0x0 , 0x21, 0x60, 0x0 , 0x0 ,  0x21,  0x50,  0x0 ,
343 		0x0 , 0x1 , 0x50, 0x0 ,
344 	},
345 	{
346 		0x0 , 0x0 , 0x0 , 0x0 , 0x5 , 0x80, 0x40,  0x0 ,  0x15,  0x65,
347 		0x0 , 0x0 , 0x5 , 0x65, 0x0 , 0x0 , 0x5 ,  0x69,  0x40,  0x0 ,
348 		0x0 , 0x15, 0x40, 0x0 , 0x0 , 0x5 , 0x50,  0x0 ,  0x0 ,  0x1 ,
349 		0x60, 0x0 , 0x0 , 0x1 , 0x60, 0x0 , 0x0 ,  0x20,  0x58,  0x50,
350 		0x0 , 0xA , 0xA9, 0x40, 0x0 , 0x8 , 0x5A,  0x0 ,  0x0 ,  0x8 ,
351 		0xA6, 0x0 , 0x0 , 0x2 , 0x15, 0x0 , 0x0 ,  0x2 ,  0x95,  0x40,
352 		0x0 , 0x0 , 0x4 , 0x0 ,
353 	},
354 	{
355 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x10,
356 		0x0 , 0x0 , 0x19, 0x50, 0x0 , 0x0 , 0x56,  0x54,  0x0 ,  0x0 ,
357 		0x55, 0x95, 0x0 , 0x0 , 0x11, 0x55, 0x40,  0x0 ,  0x0 ,  0x5 ,
358 		0x60, 0x50, 0x0 , 0x1 , 0x58, 0x50, 0x0 ,  0x0 ,  0x4A,  0x0 ,
359 		0x0 , 0x8 , 0xA6, 0x80, 0x0 , 0x2 , 0x9 ,  0x50,  0x0 ,  0x0 ,
360 		0xA1, 0x50, 0x0 , 0x0 , 0x8 , 0x40, 0x0 ,  0x0 ,  0x8 ,  0x0 ,
361 		0x0 , 0x0 , 0x0 , 0x0 ,
362 	},
363 	{
364 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
365 		0x0 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 , 0x1 ,  0x40,  0x0 ,  0x0 ,
366 		0x15, 0x54, 0x1 , 0x40, 0x6A, 0x55, 0x60,  0x50,  0x55,  0x95,
367 		0x6A, 0x0 , 0x54, 0x41, 0x59, 0xA0, 0x10,  0x0 ,  0x19,  0x95,
368 		0x0 , 0x2 , 0xA2, 0x55, 0x0 , 0x0 , 0x2A,  0x4 ,  0x0 ,  0x0 ,
369 		0x2 , 0xA0, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,  0x0 ,  0x0 ,  0x0 ,
370 		0x0 , 0x0 , 0x0 , 0x0
371 	}
372     }
373 };
374 
375 static unsigned char swhitsym[HITSYMS][SYMBYTES] = {  /*  Hit plane pixel array  */
376 
377 /*  airplane symbols based on the following template file:
378 16
379 . . . . . . 2 2 2 2 2 2 2 2 2 2
380 . . . . . . . 2 2 2 1 1 2 2 2 .
381 . . . . . . . . 2 2 1 1 2 2 . .
382 . . . . . . . . . . 1 1 . . . .
383 . . . . . . . . . . 1 1 . . . .
384 . . . . . . . . . . 1 1 . . . .
385 . . . . . . . . . 1 1 1 1 . . .
386 . . . . . . . . . 1 1 1 1 . . .
387 . . . . . . . . . 1 1 1 1 . . .
388 . . . . . . . . . 1 1 1 1 . . .
389 . . 2 2 2 2 2 2 2 2 1 1 2 2 2 2
390 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 .
391 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 2
392 2 2 2 2 2 2 2 2 2 2 1 1 2 2 . 2
393 . . . . . . . . . 1 1 1 1 . . .
394 . . . . . . . . . 1 1 1 1 . . .
395 */
396 	{
397 		0x0 , 0xA , 0xAA, 0xAA, 0x0 , 0x2 , 0xA5, 0xA8, 0x0 , 0x0 ,
398 		0xA5, 0xA0, 0x0 , 0x0 , 0x5 , 0x0 , 0x0 , 0x0 , 0x5 , 0x0 ,
399 		0x0 , 0x0 , 0x5 , 0x0 , 0x0 , 0x0 , 0x15, 0x40, 0x0 , 0x0 ,
400 		0x15, 0x40, 0x0 , 0x0 , 0x15, 0x40, 0x0 , 0x0 , 0x15, 0x40,
401 		0xA , 0xAA, 0xA5, 0xAA, 0xAA, 0xAA, 0xA5, 0xA8, 0xAA, 0xAA,
402 		0xA5, 0xAA, 0xAA, 0xAA, 0xA5, 0xA2, 0x0 , 0x0 , 0x15, 0x40,
403 		0x0 , 0x0 , 0x15, 0x40,
404 	},
405 	{
406 		0x0 , 0x0 , 0x95, 0x0 , 0x0 , 0x1 , 0x95, 0x0 , 0x0 , 0x15,
407 		0x95, 0x0 , 0x0 , 0x5 , 0x94, 0x0 , 0x0 , 0x5 , 0x90, 0x0 ,
408 		0x0 , 0x5 , 0x40, 0x0 , 0x0 , 0x5 , 0x40, 0x0 , 0x0 , 0x5 ,
409 		0x40, 0x0 , 0x0 , 0x9 , 0x48, 0x0 , 0x0 , 0x9 , 0x48, 0x0 ,
410 		0x0 , 0x4A, 0xA8, 0x0 , 0x1 , 0x59, 0x48, 0x0 , 0x0 , 0x4A,
411 		0xA8, 0x0 , 0x0 , 0x9 , 0x48, 0x0 , 0x0 , 0x5 , 0x48, 0x0 ,
412 		0x0 , 0x5 , 0x40, 0x0
413 	}
414 };
415 
416 
417 static unsigned char swwinsym[WINSIZES][WINBYTES] = {  /*  Win plane pixel array  */
418 
419 /*  airplane symbols based on the following template files:
420 16                                 16
421 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
422 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
423 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
424 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
425 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
426 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
427 . . . . . . . . . . . . . . . .    . . . . . . . 1 1 . . . . . . .
428 . . . . . . . 1 1 . . . . . . .    . . . . . . 2 2 2 2 . . . . . .
429 . . . . . . . 1 1 . . . . . . .    . . . . . . 2 2 2 2 . . . . . .
430 . . . . . . . . . . . . . . . .    . . . . . . . 1 1 . . . . . . .
431 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
432 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
433 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
434 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
435 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
436 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
437 
438 16                                 16
439 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
440 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
441 . . . . . . . . . . . . . . . .    . . . . . . . 1 1 . . . . . . .
442 . . . . . . . . . . . . . . . .    . . . . . . . 1 1 . . . . . . .
443 . . . . . . . . . . . . . . . .    . . . . . . . 1 1 . . . . . . .
444 . . . . . . . . . . . . . . . .    2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2
445 . . . . . . . 1 1 . . . . . . .    . . . . . . . 1 1 . . . . . . .
446 . . . . 2 2 2 1 1 2 2 2 . . . .    . . . . 2 2 2 2 2 2 2 2 . . . .
447 . . . . . . . 1 1 . . . . . . .    . . . . . . 1 1 1 1 . . . . . .
448 . . . . . 2 2 2 2 2 2 . . . . .    . . . . . . 1 1 1 1 . . . . . .
449 . . . . . . 1 . . 1 . . . . . .    . 2 2 2 2 2 2 2 2 2 2 2 2 2 2 .
450 . . . . . . . . . . . . . . . .    . . . . . 1 . . . . 1   . . . .
451 . . . . . . . . . . . . . . . .    . . . . 1 . . . . . . 1 . . . .
452 . . . . . . . . . . . . . . . .    . . . . 1 . . . . . . 1 . . . .
453 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
454 . . . . . . . . . . . . . . . .    . . . . . . . . . . . . . . . .
455 */
456 	{
457 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
458 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
459 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 ,
460 		0x40, 0x0 , 0x0 , 0x1 , 0x40, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
461 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
462 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
463 		0x0 , 0x0 , 0x0 , 0x0 ,
464 	},
465 	{
466 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
467 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
468 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x40, 0x0 , 0x0 , 0xA ,
469 		0xA0, 0x0 , 0x0 , 0xA , 0xA0, 0x0 , 0x0 , 0x1 , 0x40, 0x0 ,
470 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
471 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
472 		0x0 , 0x0 , 0x0 , 0x0 ,
473 	},
474 	{
475 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
476 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
477 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 , 0x40, 0x0 , 0x0 , 0xA9,
478 		0x6A, 0x0 , 0x0 , 0x1 , 0x40, 0x0 , 0x0 , 0x2A, 0xA8, 0x0 ,
479 		0x0 , 0x4 , 0x10, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
480 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
481 		0x0 , 0x0 , 0x0 , 0x0 ,
482 	},
483 	{
484 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1 ,
485 		0x40, 0x0 , 0x0 , 0x1 , 0x40, 0x0 , 0x0 , 0x1 , 0x40, 0x0 ,
486 		0xAA, 0xA9, 0x6A, 0xAA, 0x0 , 0x1 , 0x40, 0x0 , 0x0 , 0xAA,
487 		0xAA, 0x0 , 0x0 , 0x5 , 0x50, 0x0 , 0x0 , 0x5 , 0x50, 0x0 ,
488 		0x2A, 0xAA, 0xAA, 0xA8, 0x0 , 0x10, 0x4 , 0x0 , 0x0 , 0x40,
489 		0x1 , 0x0 , 0x0 , 0x40, 0x1 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
490 		0x0 , 0x0 , 0x0 , 0x0
491 	}
492 };
493 
494 
495 static unsigned char swbmbsym[BOMBANGS][BOMBBYTES] = {
496 
497 /*  bomb symbols based on the following template file:
498 08
499 . . . . . . . .
500 . . . . . . . .
501 1 1 . 1 1 1 1 .
502 1 1 1 1 1 1 1 1
503 1 1 1 1 1 1 1 1
504 1 1 . 1 1 1 1 .
505 . .  .. . . . .
506 . . . . . . . .
507 */
508 	{
509 		0x0 , 0x0 , 0x0 , 0x0 , 0x51, 0x54, 0x55, 0x55, 0x55, 0x55,
510 		0x51, 0x54, 0x0 , 0x0 , 0x0 , 0x0 ,
511 	},
512 	{
513 		0x0 , 0x0 , 0x0 , 0x54, 0x1 , 0x55, 0x5 , 0x55, 0x11, 0x54,
514 		0x55, 0x10, 0x15, 0x40, 0x1 , 0x0 ,
515 	},
516 	{
517 		0x1 , 0x40, 0x5 , 0x50, 0x5 , 0x50, 0x5 , 0x50, 0x5 , 0x50,
518 		0x1 , 0x40, 0x5 , 0x50, 0x5 , 0x50,
519 	},
520 	{
521 		0x0 , 0x0 , 0x15, 0x0 , 0x55, 0x40, 0x55, 0x50, 0x15, 0x44,
522 		0x4 , 0x55, 0x1 , 0x54, 0x0 , 0x40,
523 	},
524 	{
525 		0x0 , 0x0 , 0x0 , 0x0 , 0x15, 0x45, 0x55, 0x55, 0x55, 0x55,
526 		0x15, 0x45, 0x0 , 0x0 , 0x0 , 0x0 ,
527 	},
528 	{
529 		0x0 , 0x40, 0x1 , 0x54, 0x4 , 0x55, 0x15, 0x44, 0x55, 0x50,
530 		0x55, 0x40, 0x15, 0x0 , 0x0 , 0x0 ,
531 	},
532 	{
533 		0x5 , 0x50, 0x5 , 0x50, 0x1 , 0x40, 0x5 , 0x50, 0x5 , 0x50,
534 		0x5 , 0x50, 0x5 , 0x50, 0x1 , 0x40,
535 	},
536 	{
537 		0x1 , 0x0 , 0x15, 0x40, 0x55, 0x10, 0x11, 0x54, 0x5 , 0x55,
538 		0x1 , 0x55, 0x0 , 0x54, 0x0 , 0x0
539 	}
540 };
541 
542 static unsigned char swtrgsym[TARGORIENTS][TARGBYTES] = {
543 
544 /*  target symbols based on the following template files:
545 16                                    16
546 . . . . . . . . . . . 2 . . . .       . . . . . . . . . . 2 2 . . 2 2
547 . . . . . . . . . . . 2 1 1 1 1       . . . . . . . . . . 2 2 . . 2 2
548 . . . . . . . . . . . 2 1 1 1 1       . . . . . . . . . . 2 2 . . 2 2
549 . . . . . . . . . . . 2 . . . .       1 1 1 1 1 1 1 1 1 1 2 2 . . 2 2
550 . . . . . . . . . . . 2 . . . .       1 1 1 1 1 1 1 1 1 1 2 2 . . 2 2
551 . . . . . . . . . . . 2 . . . .       1 1 1 2 1 2 1 2 1 1 2 2 . . 2 2
552 . . . . . . . . . . . 2 . . . .       1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
553 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1       1 1 1 2 1 2 1 2 1 1 1 1 1 1 2 2
554 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1       1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
555 1 1 2 2 2 2 2 2 2 2 2 2 2 2 1 1       1 1 1 2 1 2 1 2 1 2 1 2 1 1 2 2
556 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1       1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
557 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1       1 1 1 2 1 2 1 2 1 2 1 2 1 1 2 2
558 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1       1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
559 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1       1 1 1 2 1 2 1 2 1 2 1 2 1 1 2 2
560 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1       1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
561 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1       1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
562 
563 
564 16                                    16
565 . . . . . . . . . . . . . . . .       . . . . . . . . . . . . . . . .
566 . . . . . . . . . . . . . . . .       . . . . . . . . . . . . . . . .
567 . . . . . . . . . . . . . . . .       . . . . . . . . . . . . . . . .
568 . . . . . . . . . . . . . . . .       . . . . . . . . . . . . . . . .
569 . . . . . . . . . . . . . . . .       . . . . . . . . . . . . . . . .
570 . . . 1 1 1 1 1 1 1 1 1 1 . . .       . . . . . . . . . . . . . . . .
571 . 1 1 1 1 1 1 1 1 1 1 1 1 1 1 .       . . . . . . . . . . . . . . . .
572 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1       . . . . . 1 1 1 1 1 1 . . . . .
573 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1       . . . . . 1 1 1 1 1 1 1 1 1 1 1
574 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1       . . . . . 1 1 1 1 1 1 . . . . .
575 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1       1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
576 . 1 1 1 1 1 2 1 2 1 1 1 1 1 1 .       1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
577 . . 1 1 1 1 2 2 2 1 1 1 1 1 . .       1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1
578 . . 2 2 . . 2 . 2 . . . 2 2 . .       2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
579 . . 2 2 . . 2 2 2 . . . 2 2 . .       2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
580 . . 2 2 . . 2 . 2 . . . 2 2 . .       . 2 2 2 2 2 2 2 2 2 2 2 2 2 2 .
581 */
582 	{
583 		0x0 , 0x0 , 0x2 , 0x0 , 0x0 , 0x0 , 0x2 , 0x55, 0x0 , 0x0 ,
584 		0x2 , 0x55, 0x0 , 0x0 , 0x2 , 0x0 , 0x0 , 0x0 , 0x2 , 0x0 ,
585 		0x0 , 0x0 , 0x2 , 0x0 , 0x0 , 0x0 , 0x2 , 0x0 , 0x55, 0x55,
586 		0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5A, 0xAA, 0xAA, 0xA5,
587 		0x59, 0x55, 0x55, 0x65, 0x59, 0x55, 0x55, 0x65, 0x59, 0x55,
588 		0x55, 0x65, 0x59, 0x55, 0x55, 0x65, 0x59, 0x55, 0x55, 0x65,
589 		0x59, 0x55, 0x55, 0x65,
590 	},
591 	{
592 		0x0 , 0x0 , 0xA , 0xA , 0x0 , 0x0 , 0xA , 0xA , 0x0 , 0x0 ,
593 		0xA , 0xA , 0x55, 0x55, 0x5A, 0xA , 0x55, 0x55, 0x5A, 0xA ,
594 		0x56, 0x66, 0x5A, 0xA , 0x55, 0x55, 0x55, 0x5A, 0x56, 0x66,
595 		0x55, 0x5A, 0x55, 0x55, 0x55, 0x5A, 0x56, 0x66, 0x66, 0x5A,
596 		0x55, 0x55, 0x55, 0x5A, 0x56, 0x66, 0x66, 0x5A, 0x55, 0x55,
597 		0x55, 0x5A, 0x56, 0x66, 0x66, 0x5A, 0x55, 0x55, 0x55, 0x5A,
598 		0x55, 0x55, 0x55, 0x5A,
599 	},
600 	{
601 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
602 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
603 		0x1 , 0x55, 0x55, 0x40, 0x15, 0x55, 0x55, 0x54, 0x55, 0x59,
604 		0x95, 0x55, 0x55, 0x5A, 0x95, 0x55, 0x55, 0x59, 0x95, 0x55,
605 		0x55, 0x5A, 0x95, 0x55, 0x15, 0x59, 0x95, 0x54, 0x5 , 0x5A,
606 		0x95, 0x50, 0xA , 0x8 , 0x80, 0xA0, 0xA , 0xA , 0x80, 0xA0,
607 		0xA , 0x8 , 0x80, 0xA0,
608 	},
609 	{
610 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
611 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
612 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x15,
613 		0x54, 0x0 , 0x0 , 0x15, 0x55, 0x55, 0x0 , 0x15, 0x54, 0x0 ,
614 		0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6A, 0xAA,
615 		0xAA, 0xA9, 0x95, 0x55, 0x55, 0x56, 0x95, 0x55, 0x55, 0x56,
616 		0x2A, 0xAA, 0xAA, 0xA8
617 	},
618 };
619 
620 static unsigned char swhtrsym[TARGBYTES] = {
621 
622 /*  hit target symbols based on the following template file:
623 16
624 . . . . . . . . . . . . . . . .
625 . . . . . . . . . . . . . . . .
626 . . . . . . . . . . . . . . . .
627 . . . . . . . . . . . . . . . .
628 . . . . . . . . . . . . . . . .
629 . . . . . . . . . . . . . . . .
630 . . . . . . . . . . . . . . . .
631 . . . . . . . . . . . . . . . .
632 . . . . . . . . . . . . . . . .
633 . . . . . . . . . . . . . . . .
634 . . . . . . . . . . . . . . 1 .
635 1 . . . . . . . . . . . . . 1 1
636 1 1 . . . 1 . . . . . 2 . 1 1 1
637 1 1 . 1 1 1 . . 1 1 . 2 1 1 1 1
638 1 1 1 1 2 2 1 1 1 1 2 1 1 1 1 1
639 1 1 1 1 2 2 1 1 1 2 1 1 1 1 1 1
640 */
641        0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
642        0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
643        0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
644        0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
645        0x0 , 0x0 , 0x0 , 0x4 , 0x40, 0x0 , 0x0 , 0x5 , 0x50, 0x10,
646        0x2 , 0x15, 0x51, 0x50, 0x52, 0x55, 0x55, 0xA5, 0x59, 0x55,
647        0x55, 0xA5, 0x65, 0x55
648 };
649 
650 static unsigned char swexpsym[EXPLSYMS][EXPBYTES] = {
651 
652 /*  explosion symbols based on the following template files:
653 08                 08                08                08
654 1 1 1 . 2 . . .    . . . 1 1 . . .   . . . . . 2 . .   . . . 1 1 . . .
655 1 1 1 . 2 . . .    . 1 1 1 1 1 1 .   . . . . 2 2 2 .   . . . 1 1 1 . .
656 1 1 1 2 . . . .    1 1 1 2 2 1 1 1   . . . 2 2 2 2 2   . 1 1 1 1 1 1 .
657 . . 2 2 2 1 1 1    1 1 2 2 2 2 1 1   . . 2 2 2 2 2 .   1 1 1 1 1 1 1 1
658 2 2 . 2 1 1 1 1    1 1 2 2 2 2 1 1   . 2 2 2 2 2 . .   1 1 1 1 1 1 1 1
659 . . . 1 1 . . .    1 1 1 2 2 1 1 1   2 2 2 2 2 . . .   . 1 1 1 1 . 1 .
660 . . . 1 1 . . .    . 1 1 1 1 1 1 .   . 2 2 2 . . . .   . . 1 1 1 . . .
661 . . . 1 1 . . .    . . . 1 1 . . .   . . 2 . . . . .   . . . 1 1 . . .
662 
663 08                 08                08                08
664 . 1 2 2 2 . . .    1 1 . . . . . .   . . . . . . . .   . . . . . . . .
665 . 1 1 1 1 1 . .    1 1 . . 1 2 . .   . . . . . . 1 1   . 1 . . . 1 . .
666 . . 2 2 1 2 1 .    . . . . 2 1 . .   . . . . . . 1 1   . . . 1 . . . .
667 2 1 1 2 2 2 1 .    . . . . . . . .   . . . 1 1 . . .   . . . . . . 1 .
668 . . . . . . 1 1    . . . . . 2 2 .   1 2 . 1 1 . . .   1 . 1 . . . . .
669 . 1 2 . . . 1 2    . 2 2 . . 2 2 .   2 1 . . . . . .   . . . . 1 . . 1
670 . . 1 1 . . 2 1    . 2 2 . . . . .   . . . . . 2 2 .   . . 1 . . . . .
671 . . 1 2 . . . 1    . . . . . . . .   . . . . . 2 2 .   . . . . . . 1 .
672 */
673 
674 	{
675 		0x54, 0x80, 0x54, 0x80, 0x56, 0x0 , 0xA , 0x95, 0xA2, 0x55,
676 		0x1 , 0x40, 0x1 , 0x40, 0x1 , 0x40,
677 	},
678 	{
679 		0x1 , 0x40, 0x15, 0x54, 0x56, 0x95, 0x5A, 0xA5, 0x5A, 0xA5,
680 		0x56, 0x95, 0x15, 0x54, 0x1 , 0x40,
681 	},
682 	{
683 		0x0 , 0x20, 0x0 , 0xA8, 0x2 , 0xAA, 0xA , 0xA8, 0x2A, 0xA0,
684 		0xAA, 0x80, 0x2A, 0x0 , 0x8 , 0x0 ,
685 	},
686 	{
687 		0x1 , 0x40, 0x1 , 0x50, 0x15, 0x54, 0x55, 0x55, 0x55, 0x55,
688 		0x15, 0x44, 0x5 , 0x40, 0x1 , 0x40,
689 	},
690 	{
691 		0x1A, 0x80, 0x15, 0x50, 0xA , 0x64, 0x96, 0xA4, 0x0 , 0x5 ,
692 		0x18, 0x6 , 0x5 , 0x9 , 0x6 , 0x1 ,
693 	},
694 	{
695 		0x50, 0x0 , 0x50, 0x60, 0x0 , 0x90, 0x0 , 0x0 , 0x0 , 0x28,
696 		0x28, 0x28, 0x28, 0x0 , 0x0 , 0x0 ,
697 	},
698 	{
699 		0x0 , 0x0 , 0x0 , 0x5 , 0x0 , 0x5 , 0x1 , 0x40, 0x61, 0x40,
700 		0x90, 0x0 , 0x0 , 0x28, 0x0 , 0x28,
701 	},
702 	{
703 		0x0 , 0x0 , 0x10, 0x10, 0x1 , 0x0 , 0x0 , 0x4 , 0x44, 0x0 ,
704 		0x0 , 0x41, 0x4 , 0x0 , 0x0 , 0x4
705 	}
706 };
707 
708 static unsigned char swflksym[FLCKSYMS][FLKBYTES] = {
709 
710 /*  flock symbols based on the following template files:
711 16                                16
712 . 3 . . . . . . . . . . . . . .   3 . 3 . . . . . . . . . . . . .
713 3 . 3 . . . . . . . . . . . . .   . 3 . . . . . . . . . . . . . .
714 . . . . . . . 3 . 3 . . . . 3 .   . . . . . . . . 3 . . . . 3 . 3
715 . . . 3 . . . . 3 . . . . 3 . 3   . . 3 . 3 . . 3 . 3 . . . . 3 .
716 . . 3 . 3 . . . . . . . . . . .   . . . 3 . . . . . . . . . . . .
717 . . . . . . . . . . . . . . . .   . . . . . . . . . . . . . . . .
718 3 . 3 . . 3 . 3 . . . . 3 . . .   . 3 . . . . 3 . . . . 3 . 3 . .
719 . 3 . . . . 3 . . . . 3 . 3 . .   3 . 3 . . 3 . 3 . . . . 3 . . .
720 . . . . . . . . . . . . . . . .   . . . . . . . . . . . . . . . .
721 . . 3 . 3 . . 3 . . . . 3 . 3 .   . . . 3 . . 3 . 3 . . . . 3 . .
722 . . . 3 . . 3 . 3 . . . . 3 . .   . . 3 . 3 . . 3 . . . . 3 . 3 .
723 . . . . . . . . . . . . . . . .   . . . . . . . . . . . . . . . .
724 . . . 3 . . . . . . 3 . . . . .   . . 3 . 3 . . . . 3 . 3 . . . .
725 . . 3 . 3 . . . . 3 . 3 . . . .   . . . 3 . . . . . . 3 . . . . .
726 . . . . . . 3 . 3 . . . . . . .   . . . . . . . 3 . . . . . . . .
727 . . . . . . . 3 . . . . . . . .   . . . . . . 3 . 3 . . . . . . .
728 */
729 	{
730 		0x30, 0x0 , 0x0 , 0x0 , 0xCC, 0x0 , 0x0 , 0x0 , 0x0 , 0x3 ,
731 		0x30, 0xC , 0x3 , 0x0 , 0xC0, 0x33, 0xC , 0xC0, 0x0 , 0x0 ,
732 		0x0 , 0x0 , 0x0 , 0x0 , 0xCC, 0x33, 0x0 , 0xC0, 0x30, 0xC ,
733 		0x3 , 0x30, 0x0 , 0x0 , 0x0 , 0x0 , 0xC , 0xC3, 0x0 , 0xCC,
734 		0x3 , 0xC , 0xC0, 0x30, 0x0 , 0x0 , 0x0 , 0x0 , 0x3 , 0x0 ,
735 		0xC , 0x0 , 0xC , 0xC0, 0x33, 0x0 , 0x0 , 0xC , 0xC0, 0x0 ,
736 		0x0 , 0x3 , 0x0 , 0x0 ,
737 	},
738 	{
739 		0xCC, 0x0 , 0x0 , 0x0 , 0x30, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
740 		0xC0, 0x33, 0xC , 0xC3, 0x30, 0xC , 0x3 , 0x0 , 0x0 , 0x0 ,
741 		0x0 , 0x0 , 0x0 , 0x0 , 0x30, 0xC , 0x3 , 0x30, 0xCC, 0x33,
742 		0x0 , 0xC0, 0x0 , 0x0 , 0x0 , 0x0 , 0x3 , 0xC , 0xC0, 0x30,
743 		0xC , 0xC3, 0x0 , 0xCC, 0x0 , 0x0 , 0x0 , 0x0 , 0xC , 0xC0,
744 		0x33, 0x0 , 0x3 , 0x0 , 0xC , 0x0 , 0x0 , 0x3 , 0x0 , 0x0 ,
745 		0x0 , 0xC , 0xC0, 0x0
746 	},
747 };
748 
749 static unsigned char swbrdsym[BIRDSYMS][BRDBYTES] = {
750 
751 /*  bird symbols based on the following template files:
752 4         4
753 . 3 . .   3 . 3 .
754 3 . 3 .   . 3 . .
755 */
756        {0x30, 0xCC},
757        {0xCC, 0x30}
758 };
759 
760 static unsigned char swoxsym[OXSYMS][OXBYTES] = {
761 
762 /*  ox symbols based on the following template files:
763 16                                16
764 . . . . . . . . . . . . . . . .   . . . . . . . . . . . . . . . .
765 . . . . . . . . . . . . . . . .   . . . . . . . . . . . . . . . .
766 . . . . . . . . . . . . . . . .   . . . . . . . . . . . . . . . .
767 . . . . . . . . . . . . . . . .   . . . . . . . . . . . . . . . .
768 . . . . . . . . . . . . . . . .   . . . . . . . . . . . . . . . .
769 . . . . . . . . . . 3 . . 3 . .   . . . . . . . . . . . . . . . .
770 . . . . . . . . . . 3 2 2 2 . .   . . . . . . . . . . . . . . . .
771 . . . . . . . . . . 2 3 1 3 3 .   . . . . . . . . . . . . . . . .
772 . . . 2 2 2 2 2 2 3 2 2 3 3 3 .   . . . . . . . . . . . . . . . .
773 . 2 2 2 2 2 2 2 2 3 2 2 3 3 2 3   . . . . . . . . . . . . . . . .
774 3 2 2 2 2 2 2 2 2 3 2 2 2 3 3 .   . . . . . . . . . . . . . . . .
775 3 2 2 2 2 2 2 2 2 2 3 3 . . . .   . . . . . . . . . . . . 3 . . .
776 3 2 2 2 2 2 2 2 2 2 2 2 . . . .   . . 2 2 2 2 2 2 2 2 . 2 2 2 . .
777 3 2 2 . 2 2 . . 2 2 . 2 2 . . .   3 2 3 3 2 2 2 2 3 3 2 2 2 3 3 .
778 . 2 2 . 2 2 . . 2 2   2 2 . . .   3 2 2 2 2 2 2 2 2 2 2 2 2 3 3 .
779 . 3 3 . 3 3 . . 3 3 . 3 3 . . .   3 2 2 3 3 2 2 3 3 2 . 2 2 3 . .
780 */
781 	{
782 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
783 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
784 		0x0 , 0x0 , 0xC , 0x30, 0x0 , 0x0 , 0xE , 0xA0, 0x0 , 0x0 ,
785 		0xB , 0x7C, 0x2 , 0xAA, 0xBA, 0xFC, 0x2A, 0xAA, 0xBA, 0xFB,
786 		0xEA, 0xAA, 0xBA, 0xBC, 0xEA, 0xAA, 0xAF, 0x0 , 0xEA, 0xAA,
787 		0xAA, 0x0 , 0xE8, 0xA0, 0xA2, 0x80, 0x28, 0xA0, 0xA2, 0x80,
788 		0x3C, 0xF0, 0xF3, 0xC0,
789 	},
790 	{
791 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
792 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
793 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
794 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
795 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0xC0, 0xA , 0xAA,
796 		0xA2, 0xA0, 0xEF, 0xAA, 0xFA, 0xBC, 0xEA, 0xAA, 0xAA, 0xBC,
797 		0xEB, 0xEB, 0xE2, 0xB0
798 	},
799 };
800 
801 static unsigned char swghtsym[GHSTBYTES] = {
802 
803 /*  ghost symbol based on the following template file:
804 08
805 0 0 1 1 1 1 0 0
806 0 1 1 1 1 1 1 0
807 1 1 2 1 1 2 1 1
808 1 2 2 2 2 2 2 1
809 1 1 2 1 1 2 1 1
810 1 1 1 1 1 1 1 1
811 1 2 2 2 2 2 2 1
812 1 1 1 1 1 1 1 1
813 */
814        0x5 , 0x50, 0x15, 0x54, 0x59, 0x65, 0x6A, 0xA9, 0x59, 0x65,
815        0x55, 0x55, 0x6A, 0xA9, 0x55, 0x55
816 };
817 
818 static unsigned char swshtsym[SHOTBYTES] = {
819 
820 /*  shot window symbol based on the following template file:
821 16
822 . . . . . . . . . . . . . . 1 .
823 . . . 1 . . . . . . . . 1 1 . .
824 . . . 1 . . . . . 1 1 1 . . . .
825 . . . . 1 . . . 1 . . . . . . .
826 . . . . 1 . . 1 . . 1 1 . . . .
827 . . . . . 1 1 1 . 1 . . 1 . . .
828 1 1 1 1 . 1 1 2 1 . . . . 1 1 .
829 . . . . 1 1 1 2 2 1 . . . . . 1
830 . . . . 1 1 1 2 1 1 . . . . . .
831 . . . . . 1 2 2 1 . 1 1 . . . .
832 . . . . 1 . 1 1 . . . . 1 . . .
833 . . . 1 . . . 1 . . . . 1 . . .
834 . . 1 . . . . 1 . . . . 1 . . .
835 . . 1 . . 1 1 1 . . . 1 . . . .
836 . . 1 . 1 . . . . . . . 1 . . .
837 . . . . . 1 1 . . . . . . 1 . .
838 */
839        0x0 , 0x0 , 0x0 , 0x4 , 0x1 , 0x0 , 0x0 , 0x50, 0x1 , 0x0 ,
840        0x15, 0x0 , 0x0 , 0x40, 0x40, 0x0 , 0x0 , 0x41, 0x5 , 0x0 ,
841        0x0 , 0x15, 0x10, 0x40, 0x55, 0x16, 0x40, 0x14, 0x0 , 0x56,
842        0x90, 0x1 , 0x0 , 0x56, 0x50, 0x0 , 0x0 , 0x1A, 0x45, 0x0 ,
843        0x0 , 0x45, 0x0 , 0x40, 0x1 , 0x1 , 0x0 , 0x40, 0x4 , 0x1 ,
844        0x0 , 0x40, 0x4 , 0x15, 0x1 , 0x0 , 0x4 , 0x40, 0x0 , 0x40,
845        0x0 , 0x14, 0x0 , 0x10
846 };
847 
848 static unsigned char swsplsym[SPLTBYTES] = {
849 
850 /*  splatted bird symbol based on the following template file:
851 32
852 . . . . . . . . . . . . . . . . . 2 2 2 . . . . . . . . . . . .
853 . . . . . . . . . . . . . . . . . 2 1 1 2 2 . . . . . . . . . .
854 . . . 1 . . . . . . . . . . . . . . 2 1 1 1 2 . . . . . . 1 . .
855 . . 1 1 1 . . . . . . . . . . . . . . 2 1 1 1 2 . . . . . 1 . .
856 . . . 1 1 . . . . . 1 . . . . . . . . 2 1 1 1 1 2 . . . 1 1 . .
857 . . . 1 1 . . . . 1 1 1 . . . . . . . 2 1 1 1 1 1 2 . . . . . .
858 . . . . . . . . . . 1 . . . . 1 . . . 2 1 1 1 1 1 1 2 . . . . .
859 . . . . . . . . . . . . . . . . . . . 2 1 1 1 1 1 1 1 2 . . . .
860 . . . . 1 . . . . . . . . . . . . . 2 1 1 1 1 1 1 1 1 2 . . . .
861 . . . . . . . . . . . . . . . . . 2 1 1 1 1 1 1 1 1 1 2 . . . .
862 . . . . . . . . . . . . . 1 . . 2 1 1 1 1 1 1 1 1 1 1 2 . . . .
863 . . 1 . . . . . . . . . . . . 2 1 1 1 1 1 1 1 1 1 1 1 2 . . . .
864 . . . . . . . 2 2 2 2 2 2 . 2 1 1 1 1 1 1 1 1 1 1 1 2 . . . . .
865 . . . . . . 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 . . . . . .
866 . . . . . 2 1 2 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 2 . . . . 1 1 .
867 . . . . 2 1 2 . 2 1 2.. 2 1 1 2 1 1 1 1 1 1 1 2 . . . . . . . .
868 . . . . 2 1 2 . 2 1 2 . 2 1 1 2 2 2 1 1 2 2 2 . . . 1 . . . . .
869 . . . . 2 1 1 2 1 1 1 2 1 1 1 2 1 1 2 2 . . . . . . . . . . 1 .
870 . . . . 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 . . . . . . 1 . 1 . . .
871 . . . . 2 1 2 2 1 2 1 1 1 1 1 2 1 1 1 1 2 . . . . . . . . . . .
872 . . . . . 2 2 1 2 1 1 1 1 1 2 2 1 1 1 1 1 2 . . . . . . . 1 . .
873 . . . . 2 2 1 2 1 1 1 1 1 2 . 2 1 1 1 1 1 1 2 2 2 2 2 . . . . .
874 . . . 2 2 1 2 2 2 2 2 2 2 . . . 2 1 1 1 1 1 1 1 1 1 1 2 . . . .
875 . . 2 2 1 2 . . . . . . 2 2 . . . 2 1 1 1 1 1 1 1 1 1 1 2 . . .
876 . . 2 1 2 . . . . . . . 2 . 2 . . . 2 1 1 1 1 1 1 1 1 1 1 2 . .
877 . . . . . . . . . . . . 2 . . 2 . . . 2 1 1 1 1 1 1 1 1 1 1 2 .
878 . . . . . . . . . . . . 2 . . . 2 . . . 2 1 1 1 1 1 1 1 1 1 1 2
879 . . . . . . . . . . . 2 . . . . . 2 . . . 2 1 1 1 1 1 1 1 1 1 2
880 . . . 1 . . . . 2 2 2 2 2 . . . . 2 . . . . 2 2 2 2 2 1 1 1 1 2
881 . 1 1 . . . 1 . . . 2 . . . 2 2 2 2 2 2 . . . . . . . 2 1 1 1 2
882 1 1 1 . . 1 1 1 . . 2 . . . . . 2 . . . . 1 . . . . . . 2 1 2 .
883 1 1 . . . . 1 . . . . . . . . 2 . . . . . . . . 1 . . . . 2 . .
884 */
885        0x0 , 0x0 , 0x0 , 0x0 , 0x2A, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
886        0x0 , 0x0 , 0x25, 0xA0, 0x0 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 ,
887        0x9 , 0x58, 0x0 , 0x10, 0x5 , 0x40, 0x0 , 0x0 , 0x2 , 0x56,
888        0x0 , 0x10, 0x1 , 0x40, 0x4 , 0x0 , 0x2 , 0x55, 0x80, 0x50,
889        0x1 , 0x40, 0x15, 0x0 , 0x2 , 0x55, 0x60, 0x0 , 0x0 , 0x0 ,
890        0x4 , 0x1 , 0x2 , 0x55, 0x58, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
891        0x2 , 0x55, 0x56, 0x0 , 0x0 , 0x40, 0x0 , 0x0 , 0x9 , 0x55,
892        0x56, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x25, 0x55, 0x56, 0x0 ,
893        0x0 , 0x0 , 0x0 , 0x10, 0x95, 0x55, 0x56, 0x0 , 0x4 , 0x0 ,
894        0x0 , 0x2 , 0x55, 0x55, 0x56, 0x0 , 0x0 , 0x2 , 0xAA, 0x89,
895        0x55, 0x55, 0x58, 0x0 , 0x0 , 0x9 , 0x55, 0x65, 0x55, 0x55,
896        0x60, 0x0 , 0x0 , 0x26, 0x56, 0x59, 0x55, 0x55, 0x80, 0x14,
897        0x0 , 0x98, 0x98, 0x96, 0x55, 0x56, 0x0 , 0x0 , 0x0 , 0x98,
898        0x98, 0x96, 0xA5, 0xA8, 0x4 , 0x0 , 0x0 , 0x96, 0x56, 0x56,
899        0x5A, 0x0 , 0x0 , 0x4 , 0x0 , 0x95, 0x55, 0x56, 0x56, 0x0 ,
900        0x4 , 0x40, 0x0 , 0x9A, 0x65, 0x56, 0x55, 0x80, 0x0 , 0x0 ,
901        0x0 , 0x29, 0x95, 0x5A, 0x55, 0x60, 0x0 , 0x10, 0x0 , 0xA6,
902        0x55, 0x62, 0x55, 0x5A, 0xA8, 0x0 , 0x2 , 0x9A, 0xAA, 0x80,
903        0x95, 0x55, 0x56, 0x0 , 0xA , 0x60, 0x0 , 0xA0, 0x25, 0x55,
904        0x55, 0x80, 0x9 , 0x80, 0x0 , 0x88, 0x9 , 0x55, 0x55, 0x60,
905        0x0 , 0x0 , 0x0 , 0x82, 0x2 , 0x55, 0x55, 0x58, 0x0 , 0x0 ,
906        0x0 , 0x80, 0x80, 0x95, 0x55, 0x56, 0x0 , 0x0 , 0x2 , 0x0 ,
907        0x20, 0x25, 0x55, 0x56, 0x1 , 0x0 , 0xAA, 0x80, 0x20, 0xA ,
908        0xA9, 0x56, 0x14, 0x4 , 0x8 , 0xA , 0xAA, 0x0 , 0x2 , 0x56,
909        0x54, 0x15, 0x8 , 0x0 , 0x80, 0x10, 0x0 , 0x98, 0x50, 0x4 ,
910        0x0 , 0x2 , 0x0 , 0x0 , 0x40, 0x20
911 };
912 
913 static unsigned char swmscsym[MISCANGS][MISCBYTES] = {
914 
915 /*  bomb symbols based on the following template file:
916 
917 
918 08                08                08                08
919 . . . . . . . .   . . . . . . . .   . . . . . . . .   . . . . . . . .
920 . . . . . . . .   . . . . . . . .   . . . . . 1 1 .   . . . . 1 1 . .
921 . 1 1 . . . . .   . . . . . 1 1 .   . . . . 1 1 1 .   . . . . 1 1 . .
922 . 1 1 1 1 1 1 .   . . . 1 1 1 1 .   . . . 1 1 1 . .   . . . 1 1 . . .
923 . 1 1 1 1 1 1 .   1 1 1 1 1 . . .   . 1 1 1 1 . . .   . . . 1 1 . . .
924 . 1 1 . . . . .   . 1 1 1 . . . .   . . 1 1 . . . .   . 1 1 1 . . . .
925 . . . . . . . .   . . 1 1 . . . .   . . . 1 . . . .   . . 1 1 1 . . .
926 . . . . . . . .   . . . . . . . .   . . . . . . . .   . . . . . . . .
927 */
928 	{
929 		0x0 , 0x0 , 0x0 , 0x0 , 0x14, 0x0 , 0x15, 0x54, 0x15, 0x54,
930 		0x14, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
931 	},
932 	{
933 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x14, 0x1 , 0x54, 0x55, 0x40,
934 		0x15, 0x0 , 0x5 , 0x0 , 0x0 , 0x0 ,
935 	},
936 	{
937 		0x0 , 0x0 , 0x0 , 0x14, 0x0 , 0x54, 0x1 , 0x50, 0x15, 0x40,
938 		0x5 , 0x0 , 0x1 , 0x0 , 0x0 , 0x0 ,
939 	},
940 	{
941 		0x0 , 0x0 , 0x0 , 0x50, 0x0 , 0x50, 0x1 , 0x40, 0x1 , 0x40,
942 		0x15, 0x0 , 0x5 , 0x40, 0x0 , 0x0 ,
943 	},
944 	{
945 		0x0 , 0x0 , 0x1 , 0x40, 0x1 , 0x40, 0x1 , 0x40, 0x1 , 0x40,
946 		0x5 , 0x50, 0x5 , 0x50, 0x0 , 0x0 ,
947 	},
948 	{
949 		0x0 , 0x0 , 0x5 , 0x0 , 0x5 , 0x0 , 0x1 , 0x40, 0x1 , 0x54,
950 		0x0 , 0x54, 0x0 , 0x50, 0x0 , 0x40,
951 	},
952 	{
953 		0x0 , 0x0 , 0x14, 0x0 , 0x15, 0x0 , 0x5 , 0x40, 0x1 , 0x54,
954 		0x0 , 0x50, 0x0 , 0x40, 0x0 , 0x0 ,
955 	},
956 	{
957 		0x0 , 0x0 , 0x0 , 0x0 , 0x14, 0x0 , 0x15, 0x44, 0x1 , 0x54,
958 		0x0 , 0x14, 0x0 , 0x10, 0x0 , 0x0 ,
959 	},
960 	{
961 		0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x14, 0x15, 0x54, 0x15, 0x54,
962 		0x0 , 0x14, 0x0 , 0x0 , 0x0 , 0x0 ,
963 	},
964 	{
965 		0x0 , 0x0 , 0x0 , 0x50, 0x0 , 0x54, 0x1 , 0x55, 0x15, 0x40,
966 		0x14, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,
967 	},
968 	{
969 		0x0 , 0x0 , 0x0 , 0x40, 0x0 , 0x50, 0x1 , 0x54, 0x5 , 0x40,
970 		0x15, 0x0 , 0x14, 0x0 , 0x0 , 0x0 ,
971 	},
972 	{
973 		0x0 , 0x0 , 0x1 , 0x50, 0x0 , 0x54, 0x1 , 0x40, 0x1 , 0x40,
974 		0x5 , 0x0 , 0x5 , 0x0 , 0x0 , 0x0 ,
975 	},
976 	{
977 		0x0 , 0x0 , 0x5 , 0x50, 0x5 , 0x50, 0x1 , 0x40, 0x1 , 0x40,
978 		0x1 , 0x40, 0x1 , 0x40, 0x0 , 0x0 ,
979 	},
980 	{
981 		0x1 , 0x0 , 0x5 , 0x0 , 0x15, 0x0 , 0x15, 0x40, 0x1 , 0x40,
982 		0x0 , 0x50, 0x0 , 0x50, 0x0 , 0x0 ,
983 	},
984 	{
985 		0x0 , 0x0 , 0x1 , 0x0 , 0x5 , 0x0 , 0x15, 0x40, 0x1 , 0x50,
986 		0x0 , 0x54, 0x0 , 0x14, 0x0 , 0x0 ,
987 	},
988 	{
989 		0x0 , 0x0 , 0x4 , 0x0 , 0x14, 0x0 , 0x15, 0x40, 0x11, 0x54,
990 		0x0 , 0x14, 0x0 , 0x0 , 0x0 , 0x0
991 	}
992 };
993 
994 static unsigned char swbstsym[BRSTSYMS][BRSTBYTES] = {
995 
996 
997 /*  starburst symbols based on the following template file:
998 
999 08                 08
1000 . . . . 1 . . .    . . . 1 . . 1 .
1001 . 1 . . 1 . 1 .    1 . . 1 . 1 . .
1002 . . 1 . 1 1 . .    . 1 . 1 1 . . .
1003 1 1 1 1 1 . . .    . . 1 1 1 1 1 1
1004 . . . 1 1 1 1 1    1 1 1 1 1 1 . .
1005 . . 1 1 . 1 . .    . . . 1 1 . 1 .
1006 . 1 . 1 . . 1 .    . . 1 . 1 . . 1
1007 . . . 1 . . . .    . 1 . . 1 . . .
1008 */
1009 	{
1010 		0x0 , 0x40, 0x10, 0x44, 0x4 , 0x50, 0x55, 0x40, 0x1 , 0x55,
1011 		0x5 , 0x10, 0x11, 0x4 , 0x1 , 0x0 ,
1012 	},
1013 	{
1014 		0x1 , 0x4 , 0x41, 0x10, 0x11, 0x40, 0x5 , 0x55, 0x55, 0x50,
1015 		0x1 , 0x44, 0x4 , 0x41, 0x10, 0x40
1016 	}
1017 };
1018 
1019 // sdh 27/6/2002: create a sopsym_t structure from the original
1020 // raw sprite data.
1021 // the data in sopsym_t's is in a simpler one-byte-per-pixel format
1022 // rather than packing 4 pixels into one byte as in the original data.
1023 // this simplifies various stuff such as collision detection.
1024 
sopsym_from_data(unsigned char * data,int w,int h)1025 static sopsym_t *sopsym_from_data(unsigned char *data, int w, int h)
1026 {
1027 	sopsym_t *sym = malloc(sizeof(*sym));
1028 	unsigned char *d, *s;
1029 	int x, y;
1030 
1031 	sym->w = w;
1032 	sym->h = h;
1033 	sym->data = malloc(w * h);
1034 
1035 	// decode the symbol data
1036 
1037 	for (d=data, s=sym->data, y=0; y<h; ++y) {
1038 
1039 		// all symbols are multiples of 4 wide
1040 		// so this should be ok
1041 
1042 		for (x=0; x<w; x += 4, ++d) {
1043 			*s++ = (*d & 0xc0) >> 6;
1044 			*s++ = (*d & 0x30) >> 4;
1045 			*s++ = (*d & 0x0c) >> 2;
1046 			*s++ = (*d & 0x03);
1047 		}
1048 	}
1049 
1050 	return sym;
1051 }
1052 
1053 // converted symbols:
1054 
1055 sopsym_t *symbol_bomb[8];                 // swbmbsym
1056 sopsym_t *symbol_targets[4];              // swtrgsym
1057 sopsym_t *symbol_target_hit;              // swhtrsym
1058 sopsym_t *symbol_debris[8];               // swexpsym
1059 sopsym_t *symbol_flock[2];                // swflksym
1060 sopsym_t *symbol_bird[2];                 // swbrdsym
1061 sopsym_t *symbol_ox[2];                   // swoxsym
1062 sopsym_t *symbol_ghost;                   // swghtsym
1063 sopsym_t *symbol_shotwin;                 // swshtsym
1064 sopsym_t *symbol_birdsplat;               // swsplsym
1065 sopsym_t *symbol_missile[16];             // swmscsym
1066 sopsym_t *symbol_burst[2];                // swbstsym
1067 sopsym_t *symbol_plane[2][16];            // swplnsym
1068 sopsym_t *symbol_plane_hit[2];            // swhitsym
1069 sopsym_t *symbol_plane_win[4];            // swwinsym
1070 
1071 // special symbol for single pixel (bullets etc)
1072 
1073 sopsym_t symbol_pixel = {
1074 	.data = NULL,
1075 	.w = 1,
1076 	.h = 1
1077 };
1078 
1079 // generate symbols from data
1080 
1081 #define sopsyms_from_data(data, w, h, out)                              \
1082         { int _i;                                                       \
1083           for (_i=0; _i<sizeof(out)/sizeof(*(out)); ++_i)               \
1084              (out)[_i] = sopsym_from_data((data)[_i], (w), (h));        \
1085         }
1086 
symbol_generate()1087 void symbol_generate()
1088 {
1089 	sopsyms_from_data(swbmbsym, 8, 8, symbol_bomb);
1090 	sopsyms_from_data(swtrgsym, 16, 16, symbol_targets);
1091 	sopsyms_from_data(swexpsym, 8, 8, symbol_debris);
1092 	sopsyms_from_data(swflksym, 16, 16, symbol_flock);
1093 	sopsyms_from_data(swbrdsym, 4, 2, symbol_bird);
1094 	sopsyms_from_data(swoxsym, 16, 16, symbol_ox);
1095 	sopsyms_from_data(swmscsym, 8, 8, symbol_missile);
1096 	sopsyms_from_data(swbstsym, 8, 8, symbol_burst);
1097 	sopsyms_from_data(swplnsym[0], 16, 16, symbol_plane[0]);
1098 	sopsyms_from_data(swplnsym[1], 16, 16, symbol_plane[1]);
1099 	sopsyms_from_data(swhitsym, 16, 16, symbol_plane_hit);
1100 	sopsyms_from_data(swwinsym, 16, 16, symbol_plane_win);
1101 
1102 	symbol_target_hit = sopsym_from_data(swhtrsym, 16, 16);
1103 	symbol_ghost = sopsym_from_data(swghtsym, 8, 8);
1104 	symbol_shotwin = sopsym_from_data(swshtsym, 16, 16);
1105 	symbol_birdsplat = sopsym_from_data(swsplsym, 32, 32);
1106 
1107 	{
1108 		static unsigned char p = 3;
1109 		symbol_pixel.data = &p;
1110 	}
1111 }
1112 
1113 
1114 
1115 //---------------------------------------------------------------------------
1116 //
1117 // $Log: swsymbol.c,v $
1118 // Revision 1.1.1.1  2003/02/14 19:03:21  fraggle
1119 // Initial Sourceforge CVS import
1120 //
1121 //
1122 // sdh 14/2/2003: change license header to GPL
1123 // sdh 28/06/2002: move plane sprites here, drop swplanes.c
1124 //                 original sprite data (char sw*) made static
1125 // sdh 27/06/2002: add code to generate new sopsym_t objects from the
1126 //                 original sprite data
1127 // sdh 21/10/2001: reformatted headers, added cvs tags
1128 // sdh 20/10/2001: added some missing {}'s to shut up compiler
1129 //
1130 //---------------------------------------------------------------------------
1131 
1132