From mipos3!intelca!oliveb!pyramid!decwrl!decvax!tektronix!tekgen!tekred!games-request Mon Jul 6 17:35:37 PDT 1987 Article 22 of comp.sources.games: Path: td2cad!mipos3!intelca!oliveb!pyramid!decwrl!decvax!tektronix!tekgen!tekred!games-request From: games-request@tekred.TEK.COM Newsgroups: comp.sources.games Subject: v01i074: xtrek - muliplayer space war for X-windows, Part02/06 Message-ID: <1367@tekred.TEK.COM> Date: 2 Jul 87 19:13:30 GMT Sender: billr@tekred.TEK.COM Lines: 1462 Approved: billr@tekred.TEK.COM Submitted by: Chris Guthrie Comp.sources.games: Volume 1, Issue 74 Archive-name: xtrek/Part02 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh bitmaps.h <<'END_OF_bitmaps.h' X X/* X X Copyright (c) 1986 Chris Guthrie X XPermission to use, copy, modify, and distribute this Xsoftware and its documentation for any purpose and without Xfee is hereby granted, provided that the above copyright Xnotice appear in all copies and that both that copyright Xnotice and this permission notice appear in supporting Xdocumentation. No representations are made about the Xsuitability of this software for any purpose. It is Xprovided "as is" without express or implied warranty. X X*/ X X/**** These are the ships ****/ X#define VIEWS 16 X#define ship_width 16 X#define ship_height 16 X Xstatic short fed_bits[VIEWS][16] = { X { /* fed rotated 0 degrees */ X 0x03c0, 0x07e0, 0x0ff0, 0x0ff0, 0x0ff0, 0x07e0, 0x03c0, 0x0990, X 0x0990, 0x0990, 0x0ff0, 0x0990, 0x0990, 0x0810, 0x0810, 0x0810 X }, X { /* fed rotated 22.5000 degrees */ X 0x0600, 0x1fc0, 0x1fc0, 0x1fc0, 0x3fc0, 0x1f80, 0x1f90, 0x0390, X 0x0998, 0x08f8, 0x05c8, 0x06e4, 0x0244, 0x0202, 0x0200, 0x0100 X }, X { /* fed rotated 45.0000 degrees */ X 0x0000, 0x1e00, 0x3f00, 0x7f00, 0x7f00, 0x7f20, 0x7f10, 0x3f98, X 0x1de4, 0x00e2, 0x04f1, 0x02a0, 0x0180, 0x0080, 0x0040, 0x0020 X }, X { /* fed rotated 67.5000 degrees */ X 0x0000, 0x0000, 0x0800, 0x7e00, 0x7ec0, 0xfe30, 0xff1e, 0x7fa1, X 0x7ff0, 0x7878, 0x0050, 0x03c0, 0x00e0, 0x0018, 0x0004, 0x0000 X }, X { /* fed rotated 90.0000 degrees */ X 0x0000, 0x0000, 0x0000, 0x0000, 0x39ff, 0x7c20, 0xfe20, 0xfff8, X 0xfff8, 0xfe20, 0x7c20, 0x39ff, 0x0000, 0x0000, 0x0000, 0x0000 X }, X { /* fed rotated 112.5000 degrees */ X 0x0000, 0x0004, 0x0018, 0x00e0, 0x03c0, 0x0050, 0x7878, 0x7ff0, X 0x7fa1, 0xff1e, 0xfe30, 0x7ec0, 0x7e00, 0x0800, 0x0000, 0x0000 X }, X { /* fed rotated 135.0000 degrees */ X 0x0020, 0x0040, 0x0080, 0x0100, 0x0320, 0x04f1, 0x00e2, 0x01fc, X 0x3f88, 0x7f10, 0x7fa0, 0x7f80, 0x7f80, 0x3f00, 0x1e00, 0x0000 X }, X { /* fed rotated 157.5000 degrees */ X 0x0100, 0x0200, 0x0202, 0x0244, 0x06e4, 0x05c8, 0x08f8, 0x0998, X 0x0390, 0x1f90, 0x1f80, 0x3fc0, 0x1fc0, 0x1fc0, 0x1fc0, 0x0600 X }, X { /* fed rotated 180.0000 degrees */ X 0x0810, 0x0810, 0x0810, 0x0990, 0x0990, 0x0ff0, 0x0990, 0x0990, X 0x0990, 0x03c0, 0x07e0, 0x0ff0, 0x0ff0, 0x0ff0, 0x07e0, 0x03c0 X }, X { /* fed rotated 202.5000 degrees */ X 0x0080, 0x0040, 0x4040, 0x2240, 0x2760, 0x13a0, 0x1f10, 0x1990, X 0x09c0, 0x09f8, 0x01f8, 0x03fc, 0x03f8, 0x03f8, 0x03f8, 0x0060 X }, X { /* fed rotated 225.0000 degrees */ X 0x0400, 0x0200, 0x0100, 0x0180, 0x0540, 0x8f20, 0x4700, 0x27b8, X 0x19fc, 0x08fe, 0x04fe, 0x00fe, 0x00fe, 0x00fc, 0x0078, 0x0000 X }, X { /* fed rotated 247.5000 degrees */ X 0x0000, 0x2000, 0x1800, 0x0700, 0x03c0, 0x0a00, 0x1e1e, 0x0ffe, X 0x85fe, 0x78ff, 0x0c7f, 0x037e, 0x007e, 0x0010, 0x0000, 0x0000 X }, X { /* fed rotated 270.0000 degrees */ X 0x0000, 0x0000, 0x0000, 0x0000, 0xff9c, 0x043e, 0x047f, 0x1fff, X 0x1fff, 0x047f, 0x043e, 0xff9c, 0x0000, 0x0000, 0x0000, 0x0000 X }, X { /* fed rotated 292.5000 degrees */ X 0x0000, 0x0000, 0x0010, 0x007e, 0x037e, 0x0c7f, 0x78ff, 0x85fe, X 0x0ffe, 0x1e1e, 0x0a00, 0x03c0, 0x0700, 0x1800, 0x2000, 0x0000 X }, X { /* fed rotated 315.0000 degrees */ X 0x0000, 0x0078, 0x00fc, 0x01fe, 0x01fe, 0x05fe, 0x08fe, 0x11fc, X 0x3f80, 0x4700, 0x8f20, 0x04c0, 0x0080, 0x0100, 0x0200, 0x0400 X }, X { /* fed rotated 337.5000 degrees */ X 0x0060, 0x03f8, 0x03f8, 0x03f8, 0x03fc, 0x01f8, 0x09f8, 0x09c0, X 0x1990, 0x1f10, 0x13a0, 0x2760, 0x2240, 0x4040, 0x0040, 0x0080 X }, X}; X Xstatic short rom_bits[VIEWS][16] = { X { /* rom rotated 0 degrees */ X 0x0000, 0x0000, 0x0000, 0x43c2, 0x47e2, 0x4ff2, 0x5ffa, 0x5ffa, X 0x7ffe, 0x7ffe, 0x700e, 0x4002, 0x4002, 0x0000, 0x0000, 0x0000 X }, X { /* rom rotated 22.5000 degrees */ X 0x0000, 0x0008, 0x0008, 0x0384, 0x0ff4, 0x0ff6, 0x8ffe, 0x9ffe, X 0x5ff7, 0x5fc1, 0x7e00, 0x3800, 0x3800, 0x1000, 0x1000, 0x0000 X }, X { /* rom rotated 45.0000 degrees */ X 0x0060, 0x0020, 0x0010, 0x07c8, 0x0ffc, 0x1fff, 0x1ff9, 0x1fe0, X 0x1fc0, 0x9f80, 0xcf00, 0x2e00, 0x1e00, 0x0c00, 0x0400, 0x0600 X }, X { /* rom rotated 67.5000 degrees */ X 0x0300, 0x00e0, 0x0038, 0x01fe, 0x0ff8, 0x0fe0, 0x1fe0, 0x1fc0, X 0x1fc0, 0x0fc0, 0x0f80, 0x0f80, 0x6300, 0x1f80, 0x0780, 0x00c0 X }, X { /* rom rotated 90.0000 degrees */ X 0x0000, 0x1ff8, 0x00e0, 0x03e0, 0x07c0, 0x0fc0, 0x1fc0, 0x1fc0, X 0x1fc0, 0x1fc0, 0x0fc0, 0x07c0, 0x03e0, 0x00e0, 0x1ff8, 0x0000 X }, X { /* rom rotated 112.5000 degrees */ X 0x00c0, 0x0780, 0x1f80, 0x6300, 0x0f80, 0x0f80, 0x0fc0, 0x1fc0, X 0x1fc0, 0x1fe0, 0x0fe0, 0x0ff8, 0x01fe, 0x0038, 0x00e0, 0x0300 X }, X { /* rom rotated 135.0000 degrees */ X 0x0600, 0x0400, 0x0c00, 0x1e00, 0x2e00, 0xcf00, 0x9f80, 0x1fc0, X 0x1fe0, 0x1ff9, 0x1fff, 0x0ffc, 0x07e8, 0x0010, 0x0020, 0x0060 X }, X { /* rom rotated 157.5000 degrees */ X 0x0000, 0x1000, 0x1000, 0x3800, 0x3800, 0x7e00, 0x5fc1, 0x5ff7, X 0x9ffe, 0x8ffe, 0x0ff6, 0x0ff4, 0x0384, 0x0008, 0x0008, 0x0000 X }, X { /* rom rotated 180.0000 degrees */ X 0x0000, 0x0000, 0x0000, 0x4002, 0x4002, 0x700e, 0x7ffe, 0x7ffe, X 0x5ffa, 0x5ffa, 0x4ff2, 0x47e2, 0x43c2, 0x0000, 0x0000, 0x0000 X }, X { /* rom rotated 202.5000 degrees */ X 0x0000, 0x0008, 0x0008, 0x001c, 0x001c, 0x007e, 0x83fa, 0xeffa, X 0x7ff9, 0x7ff1, 0x6ff0, 0x2ff0, 0x21c0, 0x1000, 0x1000, 0x0000 X }, X { /* rom rotated 225.0000 degrees */ X 0x0060, 0x0020, 0x0030, 0x0078, 0x0074, 0x00f3, 0x01f9, 0x03f8, X 0x07f8, 0x9ff8, 0xfff8, 0x3ff0, 0x13e0, 0x0800, 0x0400, 0x0600 X }, X { /* rom rotated 247.5000 degrees */ X 0x0300, 0x01e0, 0x01f8, 0x00c6, 0x01f0, 0x01f0, 0x03f0, 0x03f8, X 0x03f8, 0x07f8, 0x07f0, 0x1ff0, 0x7f80, 0x1c00, 0x0700, 0x00c0 X }, X { /* rom rotated 270.0000 degrees */ X 0x0000, 0x1ff8, 0x0700, 0x07c0, 0x03e0, 0x03f0, 0x03f8, 0x03f8, X 0x03f8, 0x03f8, 0x03f0, 0x03e0, 0x07c0, 0x0700, 0x1ff8, 0x0000 X }, X { /* rom rotated 292.5000 degrees */ X 0x00c0, 0x0700, 0x1c00, 0x7f80, 0x1ff0, 0x07f0, 0x07f8, 0x03f8, X 0x03f8, 0x03f0, 0x01f0, 0x01f0, 0x00c6, 0x01f8, 0x01e0, 0x0300 X }, X { /* rom rotated 315.0000 degrees */ X 0x0600, 0x0400, 0x0800, 0x13e0, 0x3ff0, 0xfff8, 0x9ff8, 0x07f8, X 0x07f8, 0x01f9, 0x00f3, 0x0074, 0x0078, 0x0030, 0x0020, 0x0060 X }, X { /* rom rotated 337.5000 degrees */ X 0x0000, 0x1000, 0x1000, 0x21c0, 0x2ff0, 0x6ff0, 0x7ff1, 0x7ff9, X 0xeffa, 0x83fa, 0x007e, 0x001c, 0x001c, 0x0008, 0x0008, 0x0000 X }, X}; X Xstatic short kli_bits[VIEWS][16] = { X { /* kli rotated 0 degrees */ X 0x0180, 0x03c0, 0x07e0, 0x03c0, 0x0180, 0x0180, 0x0180, 0x2184, X 0x2184, 0x3ffc, 0x3ffc, 0x318c, 0x2004, 0x2004, 0x2004, 0x2004 X }, X { /* kli rotated 22.5000 degrees */ X 0x0400, 0x0e80, 0x0f00, 0x1f00, 0x0f00, 0x0308, 0x0304, 0x018c, X 0x01fe, 0x21f6, 0x17c3, 0x1ec1, 0x1c01, 0x0800, 0x0800, 0x0400 X }, X { /* kli rotated 45.0000 degrees */ X 0x0000, 0x0000, 0x1c00, 0x3c10, 0x3c08, 0x3e0c, 0x071e, 0x03bd, X 0x01e0, 0x00e0, 0x01e0, 0x1380, 0x0f00, 0x0700, 0x0200, 0x0180 X }, X { /* kli rotated 67.5000 degrees */ X 0x0000, 0x0000, 0x0040, 0x1038, 0x781e, 0xf839, 0x7e30, 0x3fe0, X 0x41f0, 0x00f0, 0x00c0, 0x00c0, 0x0580, 0x03c0, 0x00e0, 0x0038 X }, X { /* kli rotated 90.0000 degrees */ X 0x0000, 0x0000, 0x01ff, 0x0070, 0x0060, 0x2060, 0x7060, 0xfff0, X 0xfff0, 0x7060, 0x2060, 0x0060, 0x0070, 0x01ff, 0x0000, 0x0000 X }, X { /* kli rotated 112.5000 degrees */ X 0x0038, 0x00e0, 0x03c0, 0x0580, 0x00c0, 0x00c0, 0x00f0, 0x41f0, X 0x3fe0, 0x7e30, 0xf839, 0x781e, 0x1038, 0x0040, 0x0000, 0x0000 X }, X { /* kli rotated 135.0000 degrees */ X 0x0180, 0x0200, 0x0700, 0x0f00, 0x1380, 0x01e0, 0x00e0, 0x01f1, X 0x03bd, 0x071e, 0x3e0c, 0x3c08, 0x3c10, 0x1c00, 0x0000, 0x0000 X }, X { /* kli rotated 157.5000 degrees */ X 0x0400, 0x0800, 0x0800, 0x1c01, 0x1ec1, 0x17c3, 0x21f6, 0x01fe, X 0x018c, 0x0304, 0x0308, 0x0f00, 0x1f00, 0x0f00, 0x0e80, 0x0400 X }, X { /* kli rotated 180.0000 degrees */ X 0x2004, 0x2004, 0x2004, 0x2004, 0x318c, 0x3ffc, 0x3ffc, 0x2184, X 0x2184, 0x0180, 0x0180, 0x0180, 0x03c0, 0x07e0, 0x03c0, 0x0180 X }, X { /* kli rotated 202.5000 degrees */ X 0x0020, 0x0010, 0x0010, 0x8038, 0x8378, 0xc3e8, 0x6f84, 0x7f80, X 0x3180, 0x20c0, 0x10c0, 0x00f0, 0x00f8, 0x00f0, 0x0170, 0x0020 X }, X { /* kli rotated 225.0000 degrees */ X 0x0180, 0x0040, 0x00e0, 0x00f0, 0x01c8, 0x0780, 0x0700, 0x8f80, X 0xbdc0, 0x78e0, 0x307c, 0x103c, 0x083c, 0x0038, 0x0000, 0x0000 X }, X { /* kli rotated 247.5000 degrees */ X 0x1c00, 0x0700, 0x03c0, 0x01a0, 0x0300, 0x0300, 0x0f00, 0x0f82, X 0x07fc, 0x0c7e, 0x9c1f, 0x781e, 0x1c08, 0x0200, 0x0000, 0x0000 X }, X { /* kli rotated 270.0000 degrees */ X 0x0000, 0x0000, 0xff80, 0x0e00, 0x0600, 0x0604, 0x060e, 0x0fff, X 0x0fff, 0x060e, 0x0604, 0x0600, 0x0e00, 0xff80, 0x0000, 0x0000 X }, X { /* kli rotated 292.5000 degrees */ X 0x0000, 0x0000, 0x0200, 0x1c08, 0x781e, 0x9c1f, 0x0c7e, 0x07fc, X 0x0f82, 0x0f00, 0x0300, 0x0300, 0x01a0, 0x03c0, 0x0700, 0x1c00 X }, X { /* kli rotated 315.0000 degrees */ X 0x0000, 0x0000, 0x0038, 0x083c, 0x103c, 0x307c, 0x78e0, 0xbdc0, X 0x8f80, 0x0700, 0x0780, 0x01c8, 0x00f0, 0x00e0, 0x0040, 0x0080 X }, X { /* kli rotated 337.5000 degrees */ X 0x0020, 0x0170, 0x00f0, 0x00f8, 0x00f0, 0x10c0, 0x20c0, 0x3180, X 0x7f80, 0x6f84, 0xc3e8, 0x8378, 0x8038, 0x0010, 0x0010, 0x0020 X }, X}; X Xstatic short ori_bits[VIEWS][16] = { X { /* ori rotated 0 degrees */ X 0x0180, 0x03c0, 0x03c0, 0x0180, 0x0180, 0x0180, 0x03c0, 0x07e0, X 0x0ff0, 0x1ff8, 0x3bdc, 0x318c, 0x318c, 0x318c, 0x318c, 0x318c X }, X { /* ori rotated 22.5000 degrees */ X 0x0400, 0x0e00, 0x0f00, 0x0e00, 0x0700, 0x0300, 0x03e0, 0x03f8, X 0x07fe, 0x0fe6, 0x07c7, 0x0ce3, 0x1c63, 0x0c61, 0x0c30, 0x0620 X }, X { /* ori rotated 45.0000 degrees */ X 0x0000, 0x0000, 0x1800, 0x3c00, 0x3c00, 0x1f7c, 0x07fe, 0x03e7, X 0x07e3, 0x07e1, 0x07f0, 0x0638, 0x061c, 0x0708, 0x0380, 0x01c0 X }, X { /* ori rotated 67.5000 degrees */ X 0x0000, 0x0000, 0x0000, 0x0008, 0x705e, 0xf8ff, 0x7fe1, 0x2fe0, X 0x03f0, 0x03fc, 0x03df, 0x0182, 0x0180, 0x00e0, 0x00f8, 0x003c X }, X { /* ori rotated 90.0000 degrees */ X 0x0000, 0x0000, 0x003f, 0x007f, 0x00e0, 0x01c0, 0x63e0, 0xffff, X 0xffff, 0x63e0, 0x01c0, 0x00e0, 0x007f, 0x003f, 0x0000, 0x0000 X }, X { /* ori rotated 112.5000 degrees */ X 0x003c, 0x00f8, 0x00e0, 0x0180, 0x0182, 0x03df, 0x03fc, 0x03f0, X 0x2fe0, 0x7fe1, 0xf8ff, 0x705e, 0x0008, 0x0000, 0x0000, 0x0000 X }, X { /* ori rotated 135.0000 degrees */ X 0x01e0, 0x0380, 0x0708, 0x061c, 0x0638, 0x0770, 0x07e1, 0x03c3, X 0x07e7, 0x07fe, 0x1efc, 0x3c00, 0x3c00, 0x1800, 0x0000, 0x0000 X }, X { /* ori rotated 157.5000 degrees */ X 0x0620, 0x0c30, 0x0c61, 0x1c63, 0x0ce3, 0x07c7, 0x0fe6, 0x07fe, X 0x03f8, 0x03e0, 0x0300, 0x0700, 0x0e00, 0x0f00, 0x0e00, 0x0400 X }, X { /* ori rotated 180.0000 degrees */ X 0x318c, 0x318c, 0x318c, 0x318c, 0x318c, 0x3bdc, 0x1ff8, 0x0ff0, X 0x07e0, 0x03c0, 0x0180, 0x0180, 0x0180, 0x03c0, 0x03c0, 0x0180 X }, X { /* ori rotated 202.5000 degrees */ X 0x0460, 0x0c30, 0x8630, 0xc638, 0xc730, 0xe3e0, 0x67f0, 0x7fe0, X 0x1fc0, 0x07c0, 0x00c0, 0x00e0, 0x0070, 0x00f0, 0x0070, 0x0020 X }, X { /* ori rotated 225.0000 degrees */ X 0x0780, 0x01c0, 0x10e0, 0x3860, 0x1c60, 0x8ee0, 0x87e0, 0xc3e0, X 0xe7c0, 0x7fe0, 0x3ef8, 0x003c, 0x003c, 0x0018, 0x0000, 0x0000 X }, X { /* ori rotated 247.5000 degrees */ X 0x3c00, 0x1f00, 0x0700, 0x0180, 0x4180, 0xfbc0, 0x3fc0, 0x0fc0, X 0x07f4, 0x87fe, 0xff1f, 0x7a0e, 0x1000, 0x0000, 0x0000, 0x0000 X }, X { /* ori rotated 270.0000 degrees */ X 0x0000, 0x0000, 0xfc00, 0xfe00, 0x0700, 0x0380, 0x07c6, 0xffff, X 0xffff, 0x07c6, 0x0380, 0x0700, 0xfe00, 0xfc00, 0x0000, 0x0000 X }, X { /* ori rotated 292.5000 degrees */ X 0x0000, 0x0000, 0x0000, 0x1000, 0x7a0e, 0xff1f, 0x87fe, 0x07f4, X 0x0fc0, 0x3fc0, 0xfbc0, 0x4180, 0x0180, 0x0700, 0x1f00, 0x3c00 X }, X { /* ori rotated 315.0000 degrees */ X 0x0000, 0x0000, 0x0018, 0x003c, 0x003c, 0x3f78, 0x7fe0, 0xf7e0, X 0xc3c0, 0x87e0, 0x8ee0, 0x1c60, 0x38e0, 0x10e0, 0x00c0, 0x0380 X }, X { /* ori rotated 337.5000 degrees */ X 0x0020, 0x0070, 0x00f0, 0x0070, 0x00e0, 0x00c0, 0x07c0, 0x1fc0, X 0x7fe0, 0x67f0, 0xe3e0, 0xc730, 0xc638, 0x8630, 0x0c30, 0x0460 X }, X}; X X/**** These are the explosions ****/ X X#define EX_FRAMES 5 X#define ex_width 64 X#define ex_height 64 X Xstatic short ex_bits[5][256] = { X { X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x0002, 0x0000, X 0x0000, 0x1000, 0x001a, 0x0000, 0x0000, 0x2800, 0x001c, 0x0000, X 0x0000, 0x0000, 0x000b, 0x0000, 0x0000, 0x0a00, 0x0008, 0x0000, X 0x0000, 0xe000, 0x000f, 0x0000, 0x0000, 0x9400, 0x0015, 0x0000, X 0x0000, 0xd500, 0x0075, 0x0000, 0x0000, 0x9500, 0x0022, 0x0000, X 0x0000, 0x6000, 0x001b, 0x0000, 0x0000, 0xf400, 0x001e, 0x0000, X 0x0000, 0x1000, 0x0001, 0x0000, 0x0000, 0xa000, 0x0026, 0x0000, X 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, 0x8000, 0x0006, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 X }, { X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x4000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0000, X 0x0000, 0x0000, 0x0104, 0x0000, 0x0000, 0x0200, 0x0080, 0x0000, X 0x0000, 0x0000, 0x0140, 0x0000, 0x0000, 0x0480, 0x0010, 0x0000, X 0x0000, 0x0000, 0x0082, 0x0000, 0x0000, 0x0000, 0x0044, 0x0000, X 0x0000, 0x0004, 0x0080, 0x0000, 0x0000, 0x0088, 0x0000, 0x0000, X 0x0000, 0xa000, 0x00c0, 0x0000, 0x0000, 0xa800, 0x0025, 0x0000, X 0x0000, 0x0020, 0x0212, 0x0000, 0x0000, 0x8100, 0x0202, 0x0000, X 0x0000, 0x6000, 0x2c12, 0x0000, 0x0000, 0x9222, 0x1200, 0x0000, X 0x0000, 0x4000, 0x0004, 0x0000, 0x0000, 0x4212, 0x0800, 0x0000, X 0x0000, 0x2800, 0x0048, 0x0000, 0x0000, 0x2000, 0x0247, 0x0000, X 0x0000, 0x2820, 0x0048, 0x0000, 0x0000, 0x4200, 0x0118, 0x0000, X 0x0000, 0x0100, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0400, 0x0400, 0x0000, 0x0000, 0xc000, 0x0014, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0040, 0x0000, X 0x0000, 0x0000, 0x0028, 0x0000, 0x0000, 0x4000, 0x0014, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 X }, { X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x2008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0040, 0x0800, 0x0000, 0x0000, 0x0000, 0x0400, 0x0000, X 0x0000, 0x0000, 0x2080, 0x0000, 0x0000, 0x0084, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0800, 0x0000, 0x0000, 0x0000, 0x0004, 0x0000, X 0x0000, 0x0000, 0x0208, 0x0000, 0x0800, 0x0000, 0x0800, 0x0000, X 0x0000, 0x0004, 0x0000, 0x0000, 0x1000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0200, 0x0000, 0x0000, 0x5000, 0x0900, 0x0000, X 0x0000, 0x9100, 0x0009, 0x0000, 0x0000, 0x0001, 0x2004, 0x0000, X 0x0000, 0x4000, 0x4044, 0x0000, 0x0000, 0x8010, 0x0000, 0x0000, X 0x0000, 0x3000, 0x8044, 0x0010, 0x0400, 0x0040, 0x0000, 0x0005, X 0x0000, 0x8801, 0x4000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0000, X 0x0000, 0x4040, 0x0000, 0x0000, 0x4400, 0x2000, 0x0000, 0x0002, X 0x0000, 0x1200, 0x0400, 0x0000, 0x0000, 0x0000, 0x4022, 0x0000, X 0x0000, 0x0800, 0x0412, 0x0000, 0x0000, 0x0101, 0x0200, 0x0000, X 0x0000, 0x1000, 0x2090, 0x0000, 0x0000, 0x2040, 0x0030, 0x0000, X 0x0000, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0080, 0x0000, 0x0000, X 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0xc000, 0x0048, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0000, X 0x0000, 0x0000, 0x0200, 0x0000, 0x0000, 0x0000, 0x0110, 0x0000, X 0x0000, 0x2000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0040, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 X }, { X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x2000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, X 0x0000, 0x0008, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x2000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, X 0x0000, 0x0000, 0x0200, 0x0000, 0x4000, 0x0010, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8008, 0x0000, X 0x0000, 0x0000, 0x1000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0000, X 0x0000, 0x0000, 0x8000, 0x0000, 0x0010, 0x0000, 0x0000, 0x0000, X 0x4000, 0x0000, 0x0000, 0x0000, 0x0040, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x1000, 0x0000, 0x0000, 0x4800, 0x8000, 0x0000, X 0x0000, 0x0040, 0x0800, 0x0000, 0x0000, 0x4400, 0x0011, 0x0000, X 0x0000, 0x0000, 0x0008, 0x0000, 0x0800, 0x0000, 0x0100, 0x0004, X 0x0000, 0x4002, 0x0008, 0x0004, 0x0000, 0x8000, 0x0000, 0x0000, X 0x0000, 0x2000, 0x0208, 0x0810, 0x0000, 0x0800, 0x0000, 0x0040, X 0x0008, 0x0008, 0x0000, 0x0100, 0x0400, 0x8200, 0x0000, 0x0008, X 0x0000, 0x0000, 0x0010, 0x0000, 0x0000, 0x2000, 0x0000, 0x0000, X 0x0000, 0x0008, 0x0000, 0x0040, 0x0208, 0x1000, 0x0000, 0x0000, X 0x0000, 0x0800, 0x2000, 0x0000, 0x0000, 0x0080, 0x0080, 0x0000, X 0x0000, 0x0000, 0x0004, 0x0008, 0x0000, 0x0400, 0x2022, 0x0000, X 0x0000, 0x0040, 0x1000, 0x0000, 0x0400, 0x0800, 0x0040, 0x0000, X 0x0000, 0x0000, 0x0200, 0x0002, 0x0000, 0x1008, 0x00c0, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0004, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, X 0x0000, 0x6000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0110, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x2000, 0x0000, 0x0000, 0x0000, 0x3000, 0x0000, X 0x0000, 0x0000, 0x0440, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x1000, 0x0120, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 X }, { X 0x0000, 0x0000, 0x0040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0040, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0008, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, X 0x0000, 0x0000, 0x0000, 0x0040, 0x0000, 0x0000, 0x0800, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0002, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0008, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x0000, X 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0000, 0x0000, 0x0000, X 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x2400, 0x4000, 0x0008, 0x0000, 0x0010, 0x0000, 0x0000, X 0x0000, 0x4200, 0x0021, 0x0000, 0x0000, 0x0000, 0x0010, 0x0000, X 0x0040, 0x0000, 0x0000, 0x0080, 0x0000, 0x0000, 0x0400, 0x0080, X 0x2000, 0x2000, 0x0010, 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, X 0x0000, 0x1000, 0x0800, 0x0200, 0x0000, 0x0200, 0x0008, 0x1000, X 0x8000, 0x0000, 0x0000, 0x4000, 0x0000, 0x0080, 0x0000, 0x0100, X 0x0020, 0x8000, 0x0000, 0x0080, 0x0000, 0x0000, 0x0020, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1001, 0x0000, 0x0000, X 0x0000, 0x1000, 0x0000, 0x1000, 0x0008, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0400, 0x0000, 0x0003, 0x0000, 0x0020, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0208, 0x0100, 0x0000, 0x0000, 0x0000, 0x0002, X 0x0000, 0x0100, 0x0044, 0x0000, 0x0000, 0x0010, 0x8000, 0x0000, X 0x0020, 0x0000, 0x0100, 0x0000, 0x0000, 0x0400, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0900, 0x0020, 0x0000, 0x0801, 0x0080, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0x0000, 0x0004, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, X 0x0000, 0x5000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 X } X}; X XBitmap expview[EX_FRAMES]; X X/**** These are the misc things ****/ X XBitmap fedview[VIEWS]; XBitmap romview[VIEWS]; XBitmap kliview[VIEWS]; XBitmap oriview[VIEWS]; XBitmap cloud; XBitmap etorp, mtorp; XBitmap bplanet; XBitmap mbplanet; XBitmap shield; X XCursor crosshair; X X#define cloud_width 7 X#define cloud_height 7 Xstatic short cloud_bits[] = { X 0x0014, 0x002a, 0x0055, 0x002a, X 0x0055, 0x002a, 0x0014}; X X#define etorp_width 3 X#define etorp_height 3 Xstatic short etorp_bits[] = { X 0x0005, 0x0002, 0x0005}; X X#define mtorp_width 3 X#define mtorp_height 3 Xstatic short mtorp_bits[] = { X 0x0002, 0x0007, 0x0002}; X X#define crossw 15 X#define crossh 15 Xstatic short crossbits[] = { X 0x0080, 0x0080, 0x0080, 0x0080, X 0x0080, 0x0080, 0x0080, 0x7fff, X 0x0080, 0x0080, 0x0080, 0x0080, X 0x0080, 0x0080, 0x0080}; X X#define crossmask_width 15 X#define crossmask_height 15 Xstatic short crossmask_bits[] = { X 0x01c0, 0x01c0, 0x01c0, 0x01c0, X 0x01c0, 0x01c0, 0x7fff, 0x7fff, X 0x7fff, 0x01c0, 0x01c0, 0x01c0, X 0x01c0, 0x01c0, 0x01c0}; X X#define planet_width 30 X#define planet_height 30 Xstatic short planet_bits[] = { X 0xf800, 0x0003, 0x0700, 0x001c, X 0x00c0, 0x0060, 0x0020, 0x0080, X 0x0010, 0x0100, 0x0008, 0x0200, X 0x0004, 0x0400, 0x0004, 0x0400, X 0x0002, 0x0800, 0x0002, 0x0800, X 0x0002, 0x0800, 0x0001, 0x1000, X 0x0001, 0x1000, 0x0001, 0x1000, X 0x0001, 0x1000, 0x0001, 0x1000, X 0x0001, 0x1000, 0x0001, 0x1000, X 0x0002, 0x0800, 0x0002, 0x0800, X 0x0002, 0x0800, 0x0004, 0x0400, X 0x0004, 0x0400, 0x0008, 0x0200, X 0x0010, 0x0100, 0x0020, 0x0080, X 0x00c0, 0x0060, 0x0700, 0x001c, X 0xf800, 0x0003, 0x0000, 0x0000}; X X#define mplanet_width 16 X#define mplanet_height 16 Xstatic short mplanet_bits[] = { X 0x03e0, 0x0c18, 0x1004, 0x2002, X 0x2002, 0x4001, 0x4001, 0x4001, X 0x4001, 0x4001, 0x2002, 0x2002, X 0x1004, 0x0c18, 0x03e0, 0x0000}; X X#define shield_width 20 X#define shield_height 20 Xstatic short shield_bits[] = { X 0x3fc0, 0x0000, 0xc030, 0x0000, X 0x0008, 0x0001, 0x0004, 0x0002, X 0x0002, 0x0004, 0x0002, 0x0004, X 0x0001, 0x0008, 0x0001, 0x0008, X 0x0001, 0x0008, 0x0001, 0x0008, X 0x0001, 0x0008, 0x0001, 0x0008, X 0x0001, 0x0008, 0x0001, 0x0008, X 0x0002, 0x0004, 0x0002, 0x0004, X 0x0004, 0x0002, 0x0008, 0x0001, X 0xc030, 0x0000, 0x3fc0, 0x0000}; X XPixmap e_bplanetPix, a_bplanetPix; XPixmap e_mbplanetPix, a_mbplanetPix; X X#define icon_width 64 X#define icon_height 64 Xstatic short icon_bits[] = { X 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, X 0x83f8, 0x000f, 0x0000, 0x0000, X 0x01f0, 0x0003, 0x0000, 0x0000, X 0x01e0, 0x0003, 0x0000, 0x0000, X 0x83c0, 0x0001, 0x0000, 0x0000, X 0x83c0, 0x0001, 0x0000, 0x0000, X 0xc780, 0x0000, 0x0000, 0x0000, X 0x6780, 0x0000, 0x0000, 0x0000, X 0x6f00, 0x0000, 0x0000, 0x0000, X 0x3f00, 0x0000, 0x0000, 0x0000, X 0x1e00, 0x0000, 0x0000, 0x0000, X 0x1e00, 0xbff0, 0xe07f, 0x0e1b, X 0x3c00, 0x9ff8, 0xf8ff, 0x0719, X 0x3c00, 0x8180, 0x1ce1, 0x0398, X 0x7e00, 0x8180, 0x0e71, 0x01d8, X 0x7b00, 0x8180, 0x0639, 0x00f8, X 0xf300, 0x8180, 0xfe1d, 0x03f9, X 0xf180, 0x8180, 0xfe7f, 0x07f8, X 0xe0c0, 0x8181, 0x06e1, 0x0e18, X 0xe0c0, 0x8181, 0x0ec1, 0x0c18, X 0xe060, 0x8183, 0x1cc1, 0x0c1a, X 0xc070, 0x8187, 0xf8c1, 0x7c1b, X 0xe0fc, 0xc3df, 0xe0e3, 0x3e3d, X 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, X 0x2000, 0xffe0, 0x300f, 0x0608, X 0xfc00, 0xffe1, 0x3007, 0x067f, X 0xffe0, 0x011f, 0xf800, 0x0fff, X 0xfe00, 0x010f, 0x8000, 0x00ff, X 0x7000, 0x011c, 0x0000, 0x005d, X 0x0000, 0xfff0, 0x0001, 0x003e, X 0x0000, 0xffe0, 0x0000, 0x0036, X 0x0000, 0x3ff0, 0x0000, 0x003e, X 0x0000, 0x1fe0, 0x0000, 0x001c, X 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0x0000, 0x0000, X 0x0000, 0x0000, 0xff00, 0x7fff, X 0x0000, 0x0000, 0x0100, 0x4000, X 0x0000, 0x0000, 0x0100, 0x4000, X 0xf800, 0x0000, 0xa100, 0x4000, X 0xfe00, 0xffe3, 0xa10f, 0x406e, X 0xff00, 0xffe7, 0xa10f, 0x40a2, X 0xff80, 0x010f, 0xa100, 0x4066, X 0x8f80, 0x010f, 0xa100, 0x40a2, X 0x77c0, 0x011f, 0x4100, 0x42ae, X 0xfbc0, 0xfffe, 0x0101, 0x4000, X 0xdbc0, 0xfffe, 0x0101, 0x4000, X 0xfbc0, 0xfffe, 0x0101, 0x4000, X 0x77c0, 0x011f, 0x8100, 0x43c0, X 0x8f80, 0x010f, 0xc100, 0x4320, X 0xff80, 0x010f, 0xa100, 0x42a0, X 0xff00, 0xffe7, 0x910f, 0x42a0, X 0xfe00, 0xffe3, 0xf10f, 0x42a1, X 0xf800, 0x0000, 0x8100, 0x4260, X 0x0000, 0x0000, 0x8100, 0x41ec, X 0x0000, 0x0000, 0x0100, 0x4000, X 0x0000, 0x0000, 0xff00, 0x7fff, X 0x0000, 0x0000, 0x0000, 0x0000}; X X#define stipple_width 16 X#define stipple_height 16 Xstatic short stipple_bits[] = { X 0x0101, 0x0202, 0x0404, 0x0808, X 0x1010, 0x2020, 0x4040, 0x8080, X 0x0101, 0x0202, 0x0404, 0x0808, X 0x1010, 0x2020, 0x4040, 0x8080}; X END_OF_bitmaps.h if test 27583 -ne `wc -c doc <<'END_OF_doc' X.ce 4 XXtrek -- a multiplayer, space shoot 'em up game. Xby Chris Guthrie Xwith assistance of Ed James and playtesting of the XCF XCopyright (c) 1986 Chris Guthrie X X.sh 1 "Introduction" X.pp XWelcome to xtrek. XXtrek is the latest in a line of games based on Empire on the PLATO Xsystem. XMost of the ideas are stolen from the unix game X.i Trek83 Xby David Davis and Chris Guthrie and the VMS game X.i Conquest Xby Jef Poskanzer and Craig Leres. XXtrek is a multi-player, real-time game which uses System V Xshared memory segments. XIt currently runs under Ultrix 2.0, Suns 3's running 3.2, Xand HP 320 systems running HP-UX 5.2. XSince the game uses shared memory for communications, Xthe daemon and Xplayer processes must be run on an an appropriate host. XHowever, the player program, X.i xtrek, Xthrows an X window up on any workstation running X. XPlease send any ideas/comments to chris@ic.berkeley.edu. X X.sh 1 "The Basic Idea" X.pp XWhen you play Xtrek, you enter a galaxy as one of four competing Xraces. XYou have a warship at your command. XThe galaxy contains forty planets which start divided evenly between Xthe four teams. XThe eventual goal of the game is to conquer the other teams' planets Xand protect your own. XUsually this will involve frequently destroying other players' Xships while avoiding their efforts to destroy yours. X X.sh 1 "Starting the Game" X.pp XTo enter the game type X.b "xtrek monitor:0" Xmuch like any X tool. XThe program will use the $DISPLAY variable in your environment if Xit is set. XIf there is room in the game, you will see an entry window which may Xcontain some random status information and a choice of teams. XClick a mouse button in the box of the team you wish to join. XIn terms of ship and planet abilities, all teams are identical. XAssuming everything is working properly (including xhosts) you Xwill be placed in the game. X X.sh 1 "The Display" X.pp XWhen you start the game, you are given five or six windows. XThe big left window is the local view from your ship. XYou will see a number of objects in it. XFirst, your ship will always appear the center of the window. XOther ships will look like yours except that each Xteam has a different ship design. XOn color workstations, each team also has a different color. XThe small hex character to the right of the ship represents Xthe player number. XRound objects with names on them are planets. XThey also are the color of their owning team. XSmall dots on the screen are torpedos. XYou will come to recognize these after they kill you a few Xtimes. XEnemy torpedoes are a small cross while friendly torpedoes are a small dot. XFriendly torpedoes will not explode if they hit you. XSmall circles are exploding torpedoes. XLines between ships are phaser shots which hit. XLines from a ship into space are phaser shots which miss. X X.pp XThe large window on the right is a map of the whole galaxy. XOnly ships and planets appear on it. XShips are just a player number (in hex) and team letter. X X.pp XDirectly below the galaxy window is a small window which Xwill occasionally contain warning messages like "Not enough Xfuel to fire torp." XYou will probably be killed shortly after this particular message. X X.pp XBelow the warning window is a message window. This window Xwill be described later. X X.pp XThe small window on the left side is your status window. It's Xcontents will also be described later. X X.sh 1 "User Interface" X.pp XThe mouse is the most important interface. XWhenever the game needs a direction -- to turn your ship, for instance -- Xit will use the mouse's position relative to your ship, in either large Xwindow. XTorpedos and phasers will be fired toward the mouse's cursor, and Xyour ship will turn in the direction of the cursor when Xappropriate keys are hit. XCommands are issued through the keyboard and mouse Xbuttons. X X.sh 1 "Quick Instructions for Beginning Players" X.pp XSince no normal computer user will want to read the rest Xof this document, the following is a quick explanation of Xcombat. Try it for awhile, then come back and search the Xdocument for more features. X X.sh 2 "Help Window" X.pp XTyping 'h' will pop up a help window below the normal window. XThe help window lists commands you can type. XIt's useful for small problems like forgetting how to put Xyour shields up. XTyping 'h' again will get rid of it. X X.sh 2 "Combat" X.pp XTo survive in combat, keep moving. This is done by typing the Xnumber keys, 0-9. Ships can fly at warp five indefinitely. XEngines will eventually overheat at higher speeds. Turning Xis easier at low speeds. Particularly good is warp three or Xfour. You turn by pointing your mouse in the direction you Xwish to go, and typing the rightmost mouse key. You will Xturn relative to whatever window you happen to have the mouse Xin. When there is an opponent on the screen with you, you Xprobably want to start firing torpedoes at him. Again, point the Xmouse where you want the torpedoes to go and push the leftmost Xmouse button. If you get close enough, you might want to Xtry phasers. Point the mouse directly at your opponent and Xpush the middle button. A line will shoot out and you will Xget a report on your damage, if you hit. XAs a default, you will be hostile towards all other teams. XThis can be changed later. X X.pp XTorpedos that hit each do thirty points of damage to the Xtarget. Damage first comes off of shields, and when those Xreach zero, damage comes directly off the damage stat. When Xyour damage hits 100, your ship explodes and your opponent Xgets credit for killing you. You can repair damage by going Xinto repair mode (type 'R') but it will also leave you a Xsitting duck for other players. When you finish repairing, Xuse 'u' or '+' to put your shields back up. X X.pp XFinally, if you get tired of playing, you can quit by typing X.b Q Xand waiting to self-destruct. XIn the entry window, click the mouse in the 'quit' window to Xexit the game. X X.sh 1 "Status Line" X.pp XNow for some of the more technical details. XThe status line appears below the local window Xand contains the following useful information: X X.sh 2 "Flags -- ship status flags" X.pp XVarious flags tell the player about his ship. X.(l XS -- Shields up X[GYR] -- Alert status XL -- Locked onto a target XR -- In Repair mode XB -- Bombing a planet XO -- Orbiting a planet XC -- Cloaked XW -- Weapons overheated XE -- Engines overheated Xu -- Beaming up armies Xd -- Beaming down armies XP -- Copilot permitted X.)l X X.sh 2 "speed - ship's speed" X.pp XThis is the speed your ship is currently travelling. XShips move between warps 0 and 9. X X.sh 2 "dam - current damage" X.pp XThis is how much damage your ship has taken. XIf it gets over 100, you die. XDamage repairs slowly if shields are down, faster if Xship is in repair mode. X X.sh 2 "shd - current shields" X.pp XShields start out at 100 and take damage when they are up. XWhen they hit 0, damage will come off your damage rating. XThey repair faster than real damage. X X.sh 2 "torps -- number of torpedoes launched" X.pp XEach player is limited to twelve torpedoes flying at any given Xtime. XThis is a count of the torpedoes you currently have in the air. X X.sh 2 "armies -- armies on board" X.pp XThis is a count of the number of armies you have on your ship. XYour ship can carry two times your current number of kills. XThe maximum number of armies it can carry is ten. X X.sh 2 "fuel -- how much fuel you have left" X.pp XWeapons and engines take fuel to run. XThis is a count of the amount of fuel left on the ship. XFuel regenerates slowly in space, but faster when orbiting a fuel planet. X X.sh 2 "wtemp -- weapons temperature" X.pp XUsing weapons drives up this stat. XIf it goes over 100, there is a good chance your weapons will Xfreeze up for a random amount of time. XThe temperature drops over time. X X.sh 2 "etemp -- engine temperature" X.pp XRunning your engines at speeds over five cause engine temperature Xto climb. XRunning at less than five causes them to cool. XOver 100, engines can freeze up for a random amount of time. X X.sh 1 "The Commands" X.pp XThese are the various key and button commands in the game. XThey are not currently remappable other than through the XKeyMap Xfunction. X X.sh 2 "0-9 Ship's speed" X.pp XThe numbers zero through nine set your ship's speed. XIt takes time for your ship to accelerate or decelerate to the desired Xspeed. XDamaged ships can't use higher speeds. XWhen engines freeze, you can't set speed. XSetting speed breaks you out of a planet's orbit. X X.sh 2 "k - set course" X.pp XThe letter X.b k Xor the right mouse button will set your course towards the current Xmouse position. XTurning towards the desired course can take time, depending on Xyour current speed and damage. X X.sh 2 "t - launch torpedo" X.pp XThe letter X.b t Xor the left mouse button will launch a torpedo towards the current Xmouse position if you have enough fuel and less than twelve torpedoes Xcurrently out. XTorpedos travel at warp twelve and do thirty points of Xdamage when they hit someone. XYou cannot be hurt by your own torpedoes. XTorpedos tend to wobble a bit in flight so they won't always Xgo straight in the direction you want them to. XThe effect does create nice clouds of them, though. X X.sh 2 "p - fire phaser" X.pp XThe letter X.b p Xand the middle mouse button will fire your phasers towards the current Xmouse position if you have enough fuel. XYou may only fire phasers once per second. XThey cost a good deal of fuel. XIf they hit someone, they will do 0-100 points of damage depending on the Xrange. X X.sh 2 "d - detonate other torpedoes" X.pp XThis command will detonate other torpedoes near you, doing less Xthan maximum damage to you. X X.sh 2 "D - detonate your own torpedoes" X.pp XThis will turn your own torpedoes off (if you've missed) Xso that you can fire new ones. X X.sh 2 "+ - put shields up" X.pp XThis key will put your shields up. XRaised shields will take damage. X X.sh 2 "-- - put shields down" X.pp XThis key will put your shields down. XAll damage will go directly to your damage stat. X X.sh 2 "u - toggle shields" X.pp XThis key will toggle your shields up and down. X X.sh 2 "R - repair damage" X.pp XYour ship must be going warp zero to repair. Hitting this key will Xstop your ship and start repairing. Your shields are down when you Xare repairing and you cannot fire weapons. In a nutshell, you are Xa sitting duck. Putting your shields up or moving is the best Xway to get out of repair mode. XIf your ship is orbiting a friendly repair planet, damage will repair Xat a faster rate. X X.sh 2 "o - orbit a planet" X.pp XIf you are near a planet and going warp two or less this will Xput in orbit around it. XYou must be in orbit around a planet to bomb it, beam armies up Xor down to it, repair at it, or get fuel from it. XEnemy planets will damage you if you get near them. XSetting a speed will break out of orbit. X X.sh 2 "b - bomb a planet" X.pp XIf an enemy planet has more than four armies, you can bomb Xthem. XWith four or less armies, you must beam down armies Xto defeat them. XYour shields will go down to bomb, and you will Xtake damage from the planet. XYou get kills for the armies destroyed. X X.sh 2 "z - beam up armies" X.pp XIf the planet you are orbiting is owned by your team and Xhas more than four armies, you can beam Xthem to your ship to carry to other planets. XYou must be orbiting to beam up armies. XThe number of armies you can carry is equal to your kills * 2. XYou can never carry more than ten armies. X X.sh 2 "x - beam down armies" X.pp XThis command will beam the armies that are on your ship down to a Xplanet you are orbiting. XIf it is an hostile planet, you will kill his armies. XIf all enemy armies are killed and you land an army, you take the planet Xfor your team. XIf it is a planet you own, you will simply add to the armies Xalready there. XIf it is a friendly planet, owned by other teams, you cannot Xbeam armies down. X X.sh 2 "L - get player list" X.pp XThis gives you a quick list of other players. XTo remove this window, just type 'L' again. X X.sh 2 "P - get planet list" X.pp XThis gives you a list of planets. XYou get information only on planets which your team Xowns or has previously orbited. To remove this window, Xjust type 'P' again. X X.sh 2 "i - info on object" X.pp XThis will pop up a window near the mouse cursor which contains Xinformation about the nearest object (planet or ship). XTo remove this window, just type 'i' again. X X.sh 2 "l - lock onto an object" X.pp XThis will lock your ship onto the object nearest the mouse cursor. XIf you are moving you will turn towards the object your are locked Xonto. XIf it is a planet, you will automatically go into orbit around it. XIf it is another player, your course will constantly be adjusted if Xhe is moving. XTo break the lock, just set course normally. XYou cannot lock onto cloaked ships. X X.sh 2 "C - throw a coup" X.pp XSometimes players will discover that all their planets have been Xtaken, or have been left with no armies. XIn order to allow the team some form of return you can hold a coup Xon your home planet assuming that the following criterion are met: X.(l XYour team must have armies on no planets. XYou must have more than one kill. XThere must be less than five enemy armies (or zero friendly, should Xyou still own it) on your home planet. XYou must be orbiting your home planet. X.)l XAfter the coup, the planet will have four of your armies on it. XAs they come back you can take over more of your occupied worlds. X XWhen your last planet is taken, you will have to wait from thirty Xminutes to an hour before you can have a coup. X X.sh 2 "? - repeat all of the previous messages" X.pp XMessage sending is detailed below. This command allows you to Xreview the current set of them. X X.sh 2 "c - cloak your ship" X.pp XThis nifty command allows you to remain invisible on the local Xwindow of every player. This would be nice except that you cannot Xfire weapons while cloaked, and you use more fuel. XFinally good players can shoot at you on the galaxy map window Xwhere you will appear as X.b "??." XTyping X.b 'c' Xagain will turn cloaking off. X X.sh 2 "@ - allow/disallow copilots" X.pp XThis feature allows more than one player to fly a ship. It will Xbe discussed near the end of this document. X X.sh 2 "S - Toggle visual status window" X.pp XThis will turn a visually oriented status window on and off. X X.sh 2 "w - Set war status" X.pp XThis command will give you a window that you can use to declare Xwar and peace with other teams. It will be fully detailed below. X X.sh 2 "* - Bring in a practice robot" X.pp XIf you are the only ship in the game, this command will send a Xpractice robot into the game. XThe robot will come in on your team, and be hostile towards you. XThese robots are not as deadly as the ones which pop up to defend planets. XHowever, you don't get any credit for killing them -- just practice. X X.sh 1 "Nitty Gritty Details" X.pp XThis section contains the details on certain features. X X.sh 2 "Planets and Armies" X.pp XPlanets are updated every minute. There is a random chance Xthat the number of armies will increase. There is also a random Xchance, that there will be a major die-off of armies. This later Xevent is more likely on planets with many armies. XIf you have less than three armies on the planet, they will not Xgrow as fast. XPlanets with no armies are owned by the independent team and will Xhave no armies on them until someone beams one down. X X.pp XEnemy planets do damage based on the number of armies they have. XThis means planets with no armies do no damage. Those with armies Xwill do (armies / 10) + 2 points of damage twice each second. X X.pp XThe teams' home planets and randomly, others, will provide Xfuel and repair services. Obviously, this makes these planets Xparticularly valuable. These planets are selected up when the galaxy Xis reset. X X.sh 2 "Messages" X.pp XMessages are sent both from the daemon and from other players. XThey appear in the message window at the bottom, right side of the display. XTo send messages, just put the mouse into the message window. XYou must type a character in that represents the recipient of your Xmessage. This can be 'A' for everyone. [FRKO] to send to all members Xof a given team. [0-9abcdef] will send a message to an individual Xplayer. When you've typed this in, it will map to a proper address Xand wait for you to type in some text. When you type in a return, Xyour message is sent. XTyping an escape will abort the message in progress. X X.pp XNow obviously, the next question is, "What if someone starts shooting Xat me while I'm typing in my message? Am I hosed?" XSimply move the mouse out of the window to defend yourself. Messages Xare only dealt with if the mouse is in the window. You can stop Xin the middle of the input. X X.sh 2 "Robots" X.pp XRobots are an attempt to allow/prevent certain things. First, we want Xbeginning players to have some lousy competition so they can get some Xpractice without simply being targets for better players. Secondly, Xwe want to make sure that taking over the galaxy is not a midnight Xwaltz. X X.pp XIn order to invite a robot into the game, players are advised Xto use the '*' command (described above) to bring in a practice Xrobot. XThese robots are relatively easy to kill. XThe second way to get a robot is to go into another team's space Xand bomb one of X.i their Xplanets. XA robot will promptly show up and kill you. XOr at least try to kill you. XThese defender robots are particularly nasty. XGood luck. X X.pp XRobots are very much like other players. The only advantage they Xhave over other players is that they don't use fuel. Otherwise, Xtheir torpedoes do the same damage. They are also somewhat better shots. XTheir torpedoes don't wobble, and they never miss with their phasers. X X.sh 2 "War and Peace" X.pp XYou can declare war and peace with other teams. XThe greatest use of this is that you can use planets belonging Xto teams you are at peace with for fuel and repair. XIt also allows two teams to gang up on another without risking Xkilling each other. X X.pp XThere are three states a player can be in versus any other team: XPeace, Hostile, and War. Being at War is irrevocable. You cannot Xchange to any other state until you reenter the game. You get to Xwar when you are hostile to a team and you either bomb one of their Xplanets, damage one of their players with weapons, or beam armies Xdown to one of their planets. X X.pp XIf you are hostile towards a team, your weapons will hurt all members of Xthat team (whether or not they are at peace with you). As soon as Xyou hurt them, you will be at war. X X.pp XIf you are peaceful towards a team, your weapons will only hurt members Xof that team who are not peaceful towards you. In other words, two Xplayers who are at peace towards each other cannot fight each other. X X.pp XPlayers default to being at peace with their own team and hostile Xtowards all the others. Obviously, they can declare war on their own Xteam. X X.pp XTo change your settings, type 'w' and a war window will pop up. XClick the mouse in the boxes of the teams you want to change. XClick in "re-program" to save the results. Teams will be notified Xof your changes. Finally, there is a ten second delay to declare Xhostility towards another team so don't get too close while you make Xthe changes. X X.pp XThe easiest way to know if someone near you is hostile is to use Xthe alert status described below. Info on a player will tell you Xtheir status towards you. X X.sh 2 "Weapons" X.pp XTorpedos move at warp twelve and have a random life of three to five Xseconds. They tend to wobble a bit, so their accuracy goes down Xat longer ranges. Torpedoes will detonate and do full damage if Xthey get close to a ship. They will do less damage to objects at a Xslightly longer distance. Torpedos will not be detonated by a non-hostile Xplayer, but they will do damage if something causes them to explode. X X.pp XWhen exploding, torpedoes can damage everyone who is near them except Xthe person who launched them. Thus it is possible to kill your own Xteammates and people you are at peace with. X X.pp XPhasers must be within about 10 degrees of their target to hit. XPhasers that hit will maintain a line between the two ships. XOnes that miss will stick out to nowhere and look stupid. XAll phasers cost a good deal of fuel. It takes one second Xto recharge your phasers for another shot. XYour phasers will affect teams you are at war with, or those Xwho are at war with you. X X.pp XShips that explode cause 100 points of damage with about the same Xrange as a torpedo. Don't get too near one. X X.sh 2 "The Galaxy" X.pp XYou will bounce off the edge of the galaxy if you run into it. XTorpedos explode if they hit it. X X.sh 2 "Planet information" X.pp XYou can get information about any planet your team has orbited. XHowever, if the planet is taken by any other team, you will Xlose information about the planet until it is reorbited. X X.sh 2 "Ship's Status" X.pp XYour ship's alert status will tell you how close you are to hostile Xships. Yellow alert represents about two screens distance. Red Xalert means that the enemy is on your local screen (even if cloaked). XBesides the status line, the border of your window tells you what Xyour alert status is. This also works for the border of the icon. XThe border patterns are discussed below. X X.sh 2 "Xdefaults and options" X.pp XYou can put the following options into your .Xdefaults X.(l Xxtrek.boldfont: 6x10b Xxtrek.font: 6x10 Xxtrek.name: DragonSlayer Xxtrek.reverseVideo: off Xxtrek.showShields: on Xxtrek.showStats: on Xxtrek.stats.geometry: +0+655 Xxtrek.GAlertPattern: 0xf Xxtrek.YAlertPattern: 0xa 0x5 Xxtrek.RAlertPattern: 0x0f 0x0f 0x0f 0x0f 0xf0 0xf0 0xf0 0xf0 Xxtrek.ralert: red Xxtrek.yalert: yellow Xxtrek.galert: green Xxtrek.border: blue Xxtrek.background: black Xxtrek.text: white Xxtrek.fed: yellow Xxtrek.rom: red Xxtrek.kli: green Xxtrek.ori: slate blue Xxtrek.warning: red Xxtrek.unknown: light grey Xxtrek.me: white X.)l X X.sh 3 "Fonts" X.pp XThese options allow you to change fonts used in the game. XOur advice: "Don't." X X.sh 3 "name" X.pp XThis is your playername. X X.sh 3 "reversevideo" X.pp XOn black and white monitors this can ease eye-strain. X X.sh 3 "showShields" X.pp XThis causes the shields of you and other players to appear Xas a circle around your ship when they are up. X X.sh 3 "showStats" X.pp XThis option will put up a visual status window above your display. XSome players find this easier to read than numbers. XThe stats.geometry uses standard X syntax for a screen position. X X.sh 3 "Alert Patterns" X.pp XThese patterns are useful for showing your current alert status Xbased on the border pattern. It is used for black and white Xmonitors only. XThe alert colors are used for color monitors. I think changing Xthem would be silly. X X.sh 3 "The remaining color definitions" X.pp XThese options allow you to set colors on various objects Xso you can get much more information from your display. XObviously, these only matter for color monitors. X X.sh 2 "Other programs related to xtrek" X.pp XThere are few other programs that come with xtrek that Xhave some use in the game. They are described below. X X.sh 3 "Copilot" X.pp XThis program, started with the command: X X.ti 1i X.b "xtrek -c pno monitor:0" X Xwill allow you to fly a ship with player number pno Xif he so permits. This command is pretty robust. XTwo players flying a ship can be very deadly. XTypically, one steers and one shoots. X X.sh 3 "scores" X.pp XXtrek does, in fact keep some statistics around in the Xfile .scores. Scores can be used to print this information out. XIt obviously should have been built into xtrek itself. X X.sh 3 "robot" X.pp XThis is the program xtrek uses to send robots into the game. XRobots come with gobs of command line options, but you'll have Xto look at the code to see what they do. X X.sh 3 "watch" X.pp XLike copilot, watch mode can be entered directly from Xxtrek using the command: X X.ti 1i X.b "xtrek -w pno monitor:0" X XThis allows you to watch all the actions taken by the particular Xplayer (without him knowing it). XYou can change the player being viewed by clicking on a new Xplayer. END_OF_doc if test 23890 -ne `wc -c playerlist.c <<'END_OF_playerlist.c' X X/* X X Copyright (c) 1986 Chris Guthrie X XPermission to use, copy, modify, and distribute this Xsoftware and its documentation for any purpose and without Xfee is hereby granted, provided that the above copyright Xnotice appear in all copies and that both that copyright Xnotice and this permission notice appear in supporting Xdocumentation. No representations are made about the Xsuitability of this software for any purpose. It is Xprovided "as is" without express or implied warranty. X X*/ X X#include X#include X#include "defs.h" X#include "struct.h" X#include "data.h" X Xplayerlist() X{ X register int i; X register int k = 0; X char buf[BUFSIZ]; X register struct player *j; X X (void) sprintf(buf, " # Team Name Login Display dir spd kills"); X XText(playerw, 0, dfontinfo->height, buf, X strlen(buf), dfont, textColor, backColor); X k = 2; X for (i = 0, j = &players[i]; i < MAXPLAYER; i++, j++) { X if (j->p_status != PALIVE) X continue; X (void) sprintf(buf, " %1x %1c %-16.16s %-8s %-16.16s %3d %3d %5.2f", X j->p_no, X teamlet[j->p_team], X j->p_name, X j->p_login, X j->p_monitor, X j->p_dir, X j->p_speed, X j->p_kills); X XText(playerw, 0, dfontinfo->height * k++, buf, strlen(buf), X shipFont(j), playerColor(j), backColor); X } X XFlush(); X} END_OF_playerlist.c if test 1343 -ne `wc -c