#define GCC6809 1 // ONLY ON VIDE SYSTEM. Is there a predefined symbol I can test instead?

#ifdef NOTGCC6809
#undef GCC6809 // (sorry, couldn't find an easier way yet.  Makefile fixes the problem...)
#endif

#ifdef VECTREX /* predefined by cmoc - don't define this with GCC for Vectrex */
#undef GCC6809

#include <vectrex/bios.h>

#define debugstr(s) /* ignore */

#define signed16 short
#define unsigned16 unsigned short
#define signed8 char
#define unsigned8 unsigned char
#define const /* const not supported in cmoc - const arrays require a #pragma */
#define inline /* also not supported by cmoc */

#pragma vx_copyright "2017"
#pragma vx_title_pos 0,-80
#pragma vx_title_size -8, 80
#pragma vx_title "CMOC VSN"
#pragma vx_music vx_music_1

/*
F3AD Mov_Draw_VLc_a
F3B1 Mov_Draw_VL_b
F3B5 Mov_Draw_VLcs
F3B7 Mov_Draw_VL_ab
F3B9 Mov_Draw_VL_a
F3BC Mov_Draw_VL
F3BE Mov_Draw_VL_d
F3CE Draw_VLc
F3D2 Draw_VL_b
F3D6 Draw_VLcs
F3D8 Draw_VL_ab
F3DA Draw_VL_a
F3DD Draw_VL
F3DF Draw_Line_d
F404 Draw_VLp_FF
F408 Draw_VLp_7F
F40C Draw_VLp_scale
F40E Draw_VLp_b
F410 Draw_VLp
F434 Draw_Pat_VL_a
F437 Draw_Pat_VL
F439 Draw_Pat_VL_d
F46E Draw_VL_mode

E8E3 init_motion_dots
EA6D draw_dot7F_ptr_in_y

F2BE Dot_ix_b
F2C1 Dot_ix
F2C3 Dot_d
F2C5 Dot_here
F2D5 Dot_List
F2DE Dot_List_Reset

C823 Vec_Misc_Count
C824 Vec_0Ref_Enable
C825 Vec_Loop_Count
C827 Vec_Brightness
C828 Vec_Dot_Dwell
C829 Vec_Pattern
C82A Vec_Text_Height
C82B Vec_Text_Width
C82C Vec_Str_Ptr


            'PACKET' Style Drawing Routines

RUM         Entry  Label Used By
Subroutine  Point  Mine Storm      Function  
 
DASHY3      $F46E  DASHPK          Draw dashed lines from 'PACKET' list
PAC1X       $F408  PACK1X          Draw from 'PACKET' style list
PAC2X       $F404  PACK2X          Draw from 'PACKET' style list
PACB        $F40E  TPACK           Draw from 'PACKET' list
PACKET      $F410  ---             Draw from 'PACKET' list
PACXX       $F40C  LPACK           Draw from 'PACKET' style list
POTATA      $F61F  PROT            'PACKET' style rotate
POTATE      $F622  APROT           'PACKET' style rotate

Bios source code:

PACXX    LDB       0,X+           ;PICK UP TIMER INDEXED            <---- aka Draw_VLp_scale
PACB     STB       T1LOLC         ;ENTRY IF B HAS TIMER VALUE       <---- aka Draw_VLp_b
PACKET   LDD       1,X            ;ENTRY POINT HERE IF T1LOLC VALID <---- aka Draw_VLp
         STA       DAC            ;FORMAT=STATUS,X,Y
         CLR       PORT
         LDA       0,X            ;PICK UP VIDEO ENABLE
         LEAX      3,X
         INC       PORT           ;Y S/H
         STB       DAC            ;SETUP X
         STA       SR             ;VID CONTROL
         CLR       T1HOC          ;START RAMP- FOR CRT PUT THIS BEFORE 'STB SR'
         LDD       #$40
EXIT     BITB      IFR
         BEQ       EXIT
         NOP                      ;MOUSE DELAY
         STA       SR
         LDA       0,X            ;ANOTHER ONE?
         BLE       PACKET
         JMP       ZEGO

...

         DEC       LIST
DIFDOT   BSR       DOTX           ;2 BYTE/ENTRY DOT PACKAGES, USES 'LIST' <----
         LDA       LIST
         BNE       DIFDOT-3
         BRA       ZEROIT
;
;
DOTPAK   LDA       0,X+           ;DRAWS DOTS, USES PACKET FORMAT <----
         BGT       ZEROIT         ;ENDS THERE
DOKPAT   BSR       DOTX
         BRA       DOTPAK         ;FINISHES WHEN CONTROL BYTE=01
;

 */

/* Dot_List: This routine draws a series of dots, using the intensity already set up 
   in $C828. The format for the dot list, which is pointed to by the X register, is:

   ( rel y, rel x), (rel y, rel x), .....

   The number of dots-1 to draw is specified in $C823.*/ 

void safedots(uint8_t nr_dots, int8_t* list) {
  asm {
    PSHS    X,Y,U,D,CC,DP  ; err on the side of safety until I get this working...
    JSR     DP_to_D0
    LDA     nr_dots
    STA     $C823       ; Vec_Misc_Count
    LDX     list
    JSR     $F2D5       ; Dot_List
    PULS    DP,CC,D,U,Y,X
  }
}
#define dots(n,a) safedots((n)-1,a)

void displaylist(int8_t* list) {
  // scale is already set up.
  asm {
    PSHS    X,Y,U,D,CC,DP  ; err on the side of safety until I get this working...
    JSR     DP_to_D0
    LDX     list
    JSR     Draw_VLp
    PULS    DP,CC,D,U,Y,X
  }
}

#else /* not cmoc */

#ifdef GCC6809

#include <vectrex.h>

#define debugstr(s) /* ignore */

#define signed16 long
#define unsigned16 unsigned long
#define signed8 signed char
#define unsigned8 unsigned char

static inline void intensity(unsigned8 brightness) {Intensity_a(brightness);}
static inline void dot(signed8 y, signed8 x) {Dot_d((int)y, (int)x);}
static inline void move(signed8 y, signed8 x) {Moveto_d((int)y, (int)x);}
static inline void reset_beam(void) {Reset0Ref();}
static inline void set_scale(unsigned8 scale) {/*VIA_t1_cnt_lo*/ *(volatile unsigned char *)0xD004 = scale;}
static inline void line(signed8 y, signed8 x) {*(volatile unsigned char *)0xC823 = 0; Draw_Line_d((int)y, (int)x);}
static inline void lines(unsigned8 size, const signed8 *array) { (void)size; (void)array; }
static inline void dots(unsigned8 size, const signed8 *array) { (void)size; (void)array; }
static inline void displaylist(const signed8 *list) {
  // some assembly required
#define jsrx(v, func)       asm("ldx %0\n\t" \
                                "jsr " #func "\n\t" : : "g" (v) : "d", "x")
#define Draw_VLp(ra) jsrx(ra, 0xF410)   // (pattern y x)* 0x01 
  Draw_VLp(list);
}
static inline void wait_retrace(void) {Wait_Recal();}

#define signed16 long
#define unsigned16 unsigned long
#define signed8 signed char
#define unsigned8 unsigned char

#else /* anything except gcc for the 6809 */

#include <stdio.h>

#ifndef __GNUC__
#define inline /* GCC extension not available elsewhere - https://gcc.gnu.org/onlinedocs/gcc/Inline.html#Inline */
#endif

// Portable version - generate a debug trace only!

#define debugstr(s) printf("// %s\n", s)

inline void wait_retrace(void) {fflush(stdout); printf("  wait_retrace();\n");}
inline void move(char y, char x) {printf("  move(%d, %d);\n", (int)y, (int)x);}
inline void line(char y, char x) {printf("  line(%d, %d);\n", (int)y, (int)x);}
#define lines(size, array) printf("  lines(%d, %s);\n", (int)((unsigned char)(size)), #array)
#define dots(size, array) printf("  dots(%d, %s);\n", (int)((unsigned char)(size)), #array)
#define displaylist(array) printf("  displaylist(%s);\n", #array)
inline void dot(char y, char x) {printf("  dot(%d, %d);\n", (int)y, (int)x);}
inline void reset_beam(void) {printf("  reset_beam();\n");}
inline void set_scale(unsigned char scale) {printf("  set_scale(%d);\n", (int)((unsigned char)scale));}
inline void intensity(char brightness) {printf("  intensity(%d);\n", (int)brightness);}

#define signed16 short
#define unsigned16 unsigned short
#define signed8 char
#define unsigned8 unsigned char

#endif /* not GCC6809 */

#endif /* not cmoc */

#define line_rel_XY(x,y) line(y,x)
#define move_rel_XY(x,y) move(y,x)

#define MAX_BRIGHTNESS (0x7f)
#define fp2_14 /* SIGNED */ signed16 /* we use a restricted range (2.14) fixed point for trig support */
#define ONE_POINT_ZERO ((fp2_14)(1<<14))

static signed16 Debug;
static signed16 vectors_dumped;

// All const arrays in cmoc must come in this section.
// Also, static scalars cannot be explicitly initialised
//  - do so with assignments at program start instead.
// (Need to check if they're all set to 0 on startup)

#ifdef VECTREX
#pragma const_data start
#endif

#ifdef GCC6809
#define IN_ROM __attribute__ ((section(".text")))
#else
#define IN_ROM
#endif

/* Shields get a special proc because they're one continuous line */
static const signed8 shieldvec[] IN_ROM = {
  24,24,  96,-96, 24,24, -72,72, -72,-72, 24,-24, 96,96, 24,-24, -72,-72, -72,72
};

static const signed8 crosshair_points[41] IN_ROM = { 
 0x03, 0x20, 0x3e, 0x20,
 0x34, 0x16, 0x34, 0x2a,
 0x16, 0x34, 0x2a, 0x34,
 0x20, 0x02, 0x20, 0x3e,
 0x16, 0x0c, 0x2a, 0x0c,
 0x0c, 0x16, 0x0c, 0x2a,
 0x1b, 0x2a, 0x25, 0x2a,
 0x2a, 0x1b, 0x2a, 0x25,
 0x1b, 0x16, 0x25, 0x16,
 0x16, 0x1b, 0x16, 0x25,
 0
};

static const signed8 tg_intro_placard[] IN_ROM = {
   163/2 - 64,64/2 - 64,    93/2 - 64,64/2 - 64,    93/2 - 64,64/2 - 64,   93/2 - 64,192/2 - 64,
   93/2 - 64,192/2 - 64,  163/2 - 64,192/2 - 64,  163/2 - 64,192/2 - 64,   163/2 - 64,64/2 - 64,
   155/2 - 64,71/2 - 64,   101/2 - 64,71/2 - 64,   101/2 - 64,71/2 - 64,  101/2 - 64,185/2 - 64,
  101/2 - 64,185/2 - 64,  155/2 - 64,185/2 - 64,  155/2 - 64,185/2 - 64,   155/2 - 64,71/2 - 64,
  149/2 - 64,109/2 - 64,   149/2 - 64,93/2 - 64,  131/2 - 64,101/2 - 64,  149/2 - 64,101/2 - 64,
  149/2 - 64,119/2 - 64,  131/2 - 64,113/2 - 64,  131/2 - 64,125/2 - 64,  149/2 - 64,119/2 - 64,
  140/2 - 64,122/2 - 64,  140/2 - 64,116/2 - 64,  149/2 - 64,137/2 - 64,  131/2 - 64,137/2 - 64,
  131/2 - 64,149/2 - 64,  149/2 - 64,149/2 - 64,  131/2 - 64,161/2 - 64,  131/2 - 64,149/2 - 64,
  107/2 - 64,167/2 - 64,  125/2 - 64,167/2 - 64,  125/2 - 64,179/2 - 64,  125/2 - 64,167/2 - 64,
  116/2 - 64,179/2 - 64,  125/2 - 64,179/2 - 64,  107/2 - 64,179/2 - 64,  116/2 - 64,176/2 - 64,
  116/2 - 64,167/2 - 64,  116/2 - 64,179/2 - 64,  107/2 - 64,149/2 - 64,  107/2 - 64,161/2 - 64,
  125/2 - 64,149/2 - 64,  107/2 - 64,149/2 - 64,  125/2 - 64,161/2 - 64,  125/2 - 64,149/2 - 64,
  116/2 - 64,149/2 - 64,  116/2 - 64,155/2 - 64,  107/2 - 64,143/2 - 64,  125/2 - 64,143/2 - 64,
  125/2 - 64,131/2 - 64,  107/2 - 64,143/2 - 64,  107/2 - 64,131/2 - 64,  125/2 - 64,131/2 - 64,
  107/2 - 64,125/2 - 64,  125/2 - 64,125/2 - 64,  125/2 - 64,113/2 - 64,  107/2 - 64,125/2 - 64,
  107/2 - 64,113/2 - 64,  125/2 - 64,113/2 - 64,  107/2 - 64,107/2 - 64,  125/2 - 64,107/2 - 64,
   107/2 - 64,95/2 - 64,  107/2 - 64,107/2 - 64,   125/2 - 64,95/2 - 64,   107/2 - 64,95/2 - 64,
   114/2 - 64,86/2 - 64,   114/2 - 64,92/2 - 64,   107/2 - 64,89/2 - 64,   114/2 - 64,89/2 - 64,
   107/2 - 64,77/2 - 64,   107/2 - 64,89/2 - 64,   125/2 - 64,77/2 - 64,   107/2 - 64,77/2 - 64,
   125/2 - 64,89/2 - 64,   125/2 - 64,77/2 - 64,
};

static const fp2_14 sine[65] IN_ROM =  {
    0,        402,    803,   1205,   1605,   2005,   2404,   2801,    3196,    3589,   3980,   4369,   4756,   5139,   5519,   5896,
    6269,    6639,   7005,   7366,   7723,   8075,   8423,   8765,    9102,    9434,   9759,  10079,  10393,  10701,  11002,  11297,
    11585,  11866,  12139,  12406,  12665,  12916,  13159,  13395,    13622,  13842,  14053,  14255,  14449,  14634,  14810,  14978,
    15136,  15286,  15426,  15557,  15678,  15790,  15892,  15985,    16069,  16142,  16206,  16260,  16305,  16339,  16364,  16379,
    16384 // => 1.0
};


// remove asintab until it is needed?  See how small the code can go...

// I've checked the results (see asin_test.c) and they're close enough for game work...
// Can halve the size of this table easily by using rotational symmetry around 0.
// (same as first part of sin table optimisation)

static const fp2_14 asintab[129] IN_ROM = { // multiply by 360 for degrees, by 256 for angles
                               // (float)asintab[x]*(360.0) / (1<<14) would be directly equivalent to scratch's asin
                               // but we want asintab[x]>>6 for 256 angles
  -4096,  -3770,  -3634,  -3530,  -3442,  -3365,  -3294,  -3230,  -3169,  -3112,  -3058,  -3007,  -2958,  -2911,  -2865,  -2821,
  -2778,  -2737,  -2696,  -2657,  -2619,  -2581,  -2544,  -2508,  -2473,  -2438,  -2404,  -2371,  -2338,  -2306,  -2274,  -2242,
  -2211,  -2181,  -2151,  -2121,  -2091,  -2062,  -2033,  -2005,  -1977,  -1949,  -1921,  -1894,  -1867,  -1840,  -1813,  -1787,
  -1760,  -1734,  -1709,  -1683,  -1658,  -1632,  -1607,  -1583,  -1558,  -1533,  -1509,  -1485,  -1460,  -1436,  -1413,  -1389,
  -1365,  -1342,  -1319,  -1295,  -1272,  -1249,  -1226,  -1203,  -1181,  -1158,  -1136,  -1113,  -1091,  -1069,  -1046,  -1024,
  -1002,   -980,   -959,   -937,   -915,   -893,   -872,   -850,  -829,   -807,   -786,   -765,   -743,   -722,   -701,   -680,
  -659,   -638,   -617,   -596,   -575,   -554,   -533,   -513,  -492,   -471,   -450,   -430,   -409,   -389,   -368,   -347,
  -327,   -306,   -286,   -265,   -245,   -224,   -204,   -183,  -163,   -143,   -122,   -102,    -82,    -61,    -41,    -20,
  0,                                                             // X=-X: antisymmetric
};


// I think the first byte of three is really a pattern byte,
// so 0 looks like a move and 255 looks like a solid line,
// but it could equally be 0F for a dashed line etc...

#define DEFINE(name) static const signed8 name[] IN_ROM = {
#define move_rel_xy(x,y) 0 /*MOVE*/, (y), (x)
#define line_rel_xy(x,y) (signed8)-1 /*LINE*/, (y), (x)
#define ENDDEF(name) 1 /*STOP*/ }; static void SHOW_##name(void) { displaylist(name); }



// faster drawing routines
DEFINE(SCORE)
  line_rel_xy(16,0), // to 16,0
  line_rel_xy(0,12), // to 16,12
  line_rel_xy(-16,0), // to 0,12
  line_rel_xy(0,12), // to 0,24
  line_rel_xy(16,0), // to 16,24
  move_rel_xy(8,0), // to 24,24
  line_rel_xy(16,0), // to 40,24
  move_rel_xy(0,-24), // to 40,0
  line_rel_xy(-16,0), // to 24,0
  line_rel_xy(0,24), // to 24,24
  move_rel_xy(24,0), // to 48,24
  line_rel_xy(16,0), // to 64,24
  line_rel_xy(0,-24), // to 64,0
  line_rel_xy(-16,0), // to 48,0
  line_rel_xy(0,24), // to 48,24
  move_rel_xy(40,-24), // to 88,0
  line_rel_xy(-4,12), // to 84,12
  move_rel_xy(-12,0), // to 72,12
  line_rel_xy(16,0), // to 88,12
  line_rel_xy(0,12), // to 88,24
  line_rel_xy(-16,0), // to 72,24
  line_rel_xy(0,-24), // to 72,0
  move_rel_xy(40,0), // to 112,0
  line_rel_xy(-16,0), // to 96,0
  line_rel_xy(0,24), // to 96,24
  move_rel_xy(0,-12), // to 96,12
  line_rel_xy(8,0), // to 104,12
  move_rel_xy(-8,12), // to 96,24
  line_rel_xy(16,0), // to 112,24
ENDDEF(SCORE)

DEFINE(HIGH_SCORE)
  line_rel_xy(0,24), // to 0,24
  move_rel_xy(0,-12), // to 0,12
  line_rel_xy(16,0), // to 16,12
  move_rel_xy(0,-12), // to 16,0
  line_rel_xy(0,24), // to 16,24
  move_rel_xy(16,-24), // to 32,0
  line_rel_xy(0,24), // to 32,24
  move_rel_xy(24,-12), // to 56,12
  line_rel_xy(8,0), // to 64,12
  line_rel_xy(0,-12), // to 64,0
  line_rel_xy(-16,0), // to 48,0
  line_rel_xy(0,24), // to 48,24
  line_rel_xy(16,0), // to 64,24
  move_rel_xy(8,-24), // to 72,0
  line_rel_xy(0,24), // to 72,24
  move_rel_xy(0,-12), // to 72,12
  line_rel_xy(16,0), // to 88,12
  move_rel_xy(0,-12), // to 88,0
  line_rel_xy(0,24), // to 88,24
  move_rel_xy(32,-24), // to 120,0
  line_rel_xy(16,0), // to 136,0
  line_rel_xy(0,12), // to 136,12
  line_rel_xy(-16,0), // to 120,12
  line_rel_xy(0,12), // to 120,24
  line_rel_xy(16,0), // to 136,24
  move_rel_xy(8,0), // to 144,24
  line_rel_xy(16,0), // to 160,24
  move_rel_xy(0,-24), // to 160,0
  line_rel_xy(-16,0), // to 144,0
  line_rel_xy(0,24), // to 144,24
  move_rel_xy(24,0), // to 168,24
  line_rel_xy(16,0), // to 184,24
  line_rel_xy(0,-24), // to 184,0
  line_rel_xy(-16,0), // to 168,0
  line_rel_xy(0,24), // to 168,24
  move_rel_xy(40,-24), // to 208,0
  line_rel_xy(-4,12), // to 204,12
  move_rel_xy(-12,0), // to 192,12
  line_rel_xy(16,0), // to 208,12
  line_rel_xy(0,12), // to 208,24
  line_rel_xy(-16,0), // to 192,24
  line_rel_xy(0,-24), // to 192,0
  move_rel_xy(40,0), // to 232,0
  line_rel_xy(-16,0), // to 216,0
  line_rel_xy(0,24), // to 216,24
  move_rel_xy(0,-12), // to 216,12
  line_rel_xy(8,0), // to 224,12
  move_rel_xy(-8,12), // to 216,24
  line_rel_xy(16,0), // to 232,24
ENDDEF(HIGH_SCORE)

DEFINE(CREDITS)
  move_rel_xy(0,24), // to 0,24
  line_rel_xy(16,0), // to 16,24
  move_rel_xy(0,-24), // to 16,0
  line_rel_xy(-16,0), // to 0,0
  line_rel_xy(0,24), // to 0,24
  move_rel_xy(40,-24), // to 40,0
  line_rel_xy(-4,12), // to 36,12
  move_rel_xy(-12,0), // to 24,12
  line_rel_xy(16,0), // to 40,12
  line_rel_xy(0,12), // to 40,24
  line_rel_xy(-16,0), // to 24,24
  line_rel_xy(0,-24), // to 24,0
  move_rel_xy(40,0), // to 64,0
  line_rel_xy(-16,0), // to 48,0
  line_rel_xy(0,24), // to 48,24
  move_rel_xy(0,-12), // to 48,12
  line_rel_xy(8,0), // to 56,12
  move_rel_xy(-8,12), // to 48,24
  line_rel_xy(16,0), // to 64,24
  move_rel_xy(8,0), // to 72,24
  line_rel_xy(12,0), // to 84,24
  line_rel_xy(4,-12), // to 88,12
  line_rel_xy(-4,-12), // to 84,0
  line_rel_xy(-12,0), // to 72,0
  line_rel_xy(0,24), // to 72,24
  move_rel_xy(32,-24), // to 104,0
  line_rel_xy(0,24), // to 104,24
  move_rel_xy(16,0), // to 120,24
  line_rel_xy(16,0), // to 136,24
  move_rel_xy(-8,0), // to 128,24
  line_rel_xy(0,-24), // to 128,0
  move_rel_xy(16,0), // to 144,0
  line_rel_xy(16,0), // to 160,0
  line_rel_xy(0,12), // to 160,12
  line_rel_xy(-16,0), // to 144,12
  line_rel_xy(0,12), // to 144,24
  line_rel_xy(16,0), // to 160,24
  move_rel_xy(30,-24), // to 190,0
ENDDEF(CREDITS)

DEFINE(INSERT_COIN)
  move_rel_xy(8,0), // to 8,0
  line_rel_xy(0,24), // to 8,24
  move_rel_xy(16,-24), // to 24,0
  line_rel_xy(0,24), // to 24,24
  line_rel_xy(16,-24), // to 40,0
  line_rel_xy(0,24), // to 40,24
  move_rel_xy(8,-24), // to 48,0
  line_rel_xy(16,0), // to 64,0
  line_rel_xy(0,12), // to 64,12
  line_rel_xy(-16,0), // to 48,12
  line_rel_xy(0,12), // to 48,24
  line_rel_xy(16,0), // to 64,24
  move_rel_xy(24,-24), // to 88,0
  line_rel_xy(-16,0), // to 72,0
  line_rel_xy(0,24), // to 72,24
  move_rel_xy(0,-12), // to 72,12
  line_rel_xy(8,0), // to 80,12
  move_rel_xy(-8,12), // to 72,24
  line_rel_xy(16,0), // to 88,24
  move_rel_xy(24,-24), // to 112,0
  line_rel_xy(-4,12), // to 108,12
  move_rel_xy(-12,0), // to 96,12
  line_rel_xy(16,0), // to 112,12
  line_rel_xy(0,12), // to 112,24
  line_rel_xy(-16,0), // to 96,24
  line_rel_xy(0,-24), // to 96,0
  move_rel_xy(24,24), // to 120,24
  line_rel_xy(16,0), // to 136,24
  move_rel_xy(-8,0), // to 128,24
  line_rel_xy(0,-24), // to 128,0
  move_rel_xy(40,24), // to 168,24
  line_rel_xy(16,0), // to 184,24
  move_rel_xy(0,-24), // to 184,0
  line_rel_xy(-16,0), // to 168,0
  line_rel_xy(0,24), // to 168,24
  move_rel_xy(24,0), // to 192,24
  line_rel_xy(16,0), // to 208,24
  line_rel_xy(0,-24), // to 208,0
  line_rel_xy(-16,0), // to 192,0
  line_rel_xy(0,24), // to 192,24
  move_rel_xy(32,-24), // to 224,0
  line_rel_xy(0,24), // to 224,24
  move_rel_xy(16,-24), // to 240,0
  line_rel_xy(0,24), // to 240,24
  line_rel_xy(16,-24), // to 256,0
  line_rel_xy(0,24), // to 256,24
ENDDEF(INSERT_COIN)

DEFINE(PRESS_START)
  line_rel_xy(0,24), // to 0,24
  line_rel_xy(16,0), // to 16,24
  line_rel_xy(0,-12), // to 16,12
  line_rel_xy(-16,0), // to 0,12
  move_rel_xy(40,-12), // to 40,0
  line_rel_xy(-4,12), // to 36,12
  move_rel_xy(-12,0), // to 24,12
  line_rel_xy(16,0), // to 40,12
  line_rel_xy(0,12), // to 40,24
  line_rel_xy(-16,0), // to 24,24
  line_rel_xy(0,-24), // to 24,0
  move_rel_xy(40,0), // to 64,0
  line_rel_xy(-16,0), // to 48,0
  line_rel_xy(0,24), // to 48,24
  move_rel_xy(0,-12), // to 48,12
  line_rel_xy(8,0), // to 56,12
  move_rel_xy(-8,12), // to 48,24
  line_rel_xy(16,0), // to 64,24
  move_rel_xy(8,-24), // to 72,0
  line_rel_xy(16,0), // to 88,0
  line_rel_xy(0,12), // to 88,12
  line_rel_xy(-16,0), // to 72,12
  line_rel_xy(0,12), // to 72,24
  line_rel_xy(16,0), // to 88,24
  move_rel_xy(8,-24), // to 96,0
  line_rel_xy(16,0), // to 112,0
  line_rel_xy(0,12), // to 112,12
  line_rel_xy(-16,0), // to 96,12
  line_rel_xy(0,12), // to 96,24
  line_rel_xy(16,0), // to 112,24
  move_rel_xy(32,-24), // to 144,0
  line_rel_xy(16,0), // to 160,0
  line_rel_xy(0,12), // to 160,12
  line_rel_xy(-16,0), // to 144,12
  line_rel_xy(0,12), // to 144,24
  line_rel_xy(16,0), // to 160,24
  move_rel_xy(8,0), // to 168,24
  line_rel_xy(16,0), // to 184,24
  move_rel_xy(-8,0), // to 176,24
  line_rel_xy(0,-24), // to 176,0
  move_rel_xy(32,0), // to 208,0
  line_rel_xy(0,24), // to 208,24
  move_rel_xy(-16,0), // to 192,24
  line_rel_xy(16,0), // to 208,24
  move_rel_xy(-16,-12), // to 192,12
  line_rel_xy(16,0), // to 208,12
  move_rel_xy(-16,12), // to 192,24
  line_rel_xy(0,-24), // to 192,0
  move_rel_xy(40,0), // to 232,0
  line_rel_xy(-4,12), // to 228,12
  move_rel_xy(-12,0), // to 216,12
  line_rel_xy(16,0), // to 232,12
  line_rel_xy(0,12), // to 232,24
  line_rel_xy(-16,0), // to 216,24
  line_rel_xy(0,-24), // to 216,0
  move_rel_xy(24,24), // to 240,24
  line_rel_xy(16,0), // to 256,24
  move_rel_xy(-8,0), // to 248,24
  line_rel_xy(0,-24), // to 248,0
ENDDEF(PRESS_START)

DEFINE(N0)
  move_rel_xy(0,24), // to 0,24
  line_rel_xy(16,0), // to 16,24
  line_rel_xy(0,-24), // to 16,0
  line_rel_xy(-16,0), // to 0,0
  line_rel_xy(0,24), // to 0,24
  move_rel_xy(24,-24), // to 24,0
ENDDEF(N0)

DEFINE(N1)
  move_rel_xy(8,0), // to 8,0
  line_rel_xy(0,24), // to 8,24
  move_rel_xy(16,-24), // to 24,0
ENDDEF(N1)

DEFINE(N2)
  move_rel_xy(0,24), // to 0,24
  line_rel_xy(16,0), // to 16,24
  line_rel_xy(0,-12), // to 16,12
  line_rel_xy(-16,0), // to 0,12
  line_rel_xy(0,-12), // to 0,0
  line_rel_xy(16,0), // to 16,0
  move_rel_xy(8,0), // to 24,0
ENDDEF(N2)

DEFINE(N3)
  line_rel_xy(16,0), // to 16,0
  move_rel_xy(-8,12), // to 8,12
  line_rel_xy(8,0), // to 16,12
  move_rel_xy(0,-12), // to 16,0
  line_rel_xy(0,24), // to 16,24
  line_rel_xy(-16,0), // to 0,24
  move_rel_xy(24,-24), // to 24,0
ENDDEF(N3)

DEFINE(N4)
  move_rel_xy(0,24), // to 0,24
  line_rel_xy(0,-12), // to 0,12
  line_rel_xy(16,0), // to 16,12
  move_rel_xy(-8,0), // to 8,12
  line_rel_xy(0,-12), // to 8,0
  move_rel_xy(16,0), // to 24,0
ENDDEF(N4)

DEFINE(N5)
  line_rel_xy(16,0), // to 16,0
  line_rel_xy(0,12), // to 16,12
  line_rel_xy(-16,0), // to 0,12
  line_rel_xy(0,12), // to 0,24
  line_rel_xy(16,0), // to 16,24
  move_rel_xy(8,-24), // to 24,0
ENDDEF(N5)

DEFINE(N6)
  move_rel_xy(0,12), // to 0,12
  line_rel_xy(16,0), // to 16,12
  line_rel_xy(0,-12), // to 16,0
  line_rel_xy(-16,0), // to 0,0
  line_rel_xy(0,24), // to 0,24
  move_rel_xy(24,-24), // to 24,0
ENDDEF(N6)

DEFINE(N7)
  move_rel_xy(8,0), // to 8,0
  line_rel_xy(8,24), // to 16,24
  line_rel_xy(-16,0), // to 0,24
  move_rel_xy(24,-24), // to 24,0
ENDDEF(N7)

DEFINE(N8)
  line_rel_xy(16,0), // to 16,0
  move_rel_xy(-16,24), // to 0,24
  line_rel_xy(16,0), // to 16,24
  move_rel_xy(-16,-12), // to 0,12
  line_rel_xy(16,0), // to 16,12
  move_rel_xy(0,12), // to 16,24
  line_rel_xy(0,-24), // to 16,0
  move_rel_xy(-16,24), // to 0,24
  line_rel_xy(0,-24), // to 0,0
  move_rel_xy(24,0), // to 24,0
ENDDEF(N8)

DEFINE(N9)
  move_rel_xy(16,24), // to 16,24
  line_rel_xy(-16,0), // to 0,24
  line_rel_xy(0,-12), // to 0,12
  line_rel_xy(16,0), // to 16,12
  move_rel_xy(0,12), // to 16,24
  line_rel_xy(0,-24), // to 16,0
  move_rel_xy(4,0), // to 24,0
ENDDEF(N9)

static const char shipframe0[] IN_ROM = {
  /* from */ (char)0,(char)0,(char)76, /* 76,0 */
  /*  to  */ (char)-1,(char)18,(char)-4, /* 72,18 */
  /* from */ (char)-1,(char)-67,(char)5, /* 77,-49 */
  /*  to  */ (char)-1,(char)24,(char)4, /* 81,-25 */
  /* from */ (char)-1,(char)-49,(char)-1, /* 80,-74 */
  /*  to  */ (char)-1,(char)26,(char)6, /* 86,-48 */
  /* from */ (char)-1,(char)-19,(char)-42, /* 44,-67 */
  /*  to  */ (char)-1,(char)19,(char)9, /* 53,-48 */
  /* from */ (char)-1,(char)33,(char)-97, /* -44,-15 */
  /*  to  */ (char)-1,(char)-6,(char)11, /* -33,-21 */
  /* from */ (char)-1,(char)36,(char)-11, /* -44,15 */
  /*  to  */ (char)-1,(char)-12,(char)4, /* -40,3 */
  /* from */ (char)-1,(char)64,(char)84, /* 44,67 */
  /*  to  */ (char)-1,(char)0,(char)-19, /* 25,67 */
  /* from */ (char)-1,(char)7,(char)55, /* 80,74 */
  /*  to  */ (char)-1,(char)7,(char)-22, /* 58,81 */
  /* from */ (char)-1,(char)-32,(char)20, /* 78,49 */
  /*  to  */ (char)-1,(char)14,(char)-16, /* 62,63 */
  /* from */ (char)-1,(char)-63,(char)14, /* 76,0 */
  /*  to  */ (char)-1,(char)18,(char)-4, /* 72,18 */
  /* from */ (char)-1,(char)-22,(char)6, /* 78,-4 */
  /*  to  */ (char)0,(char)17,(char)-5, /* 73,13 */
  /* from */ (char)-1,(char)-38,(char)5, /* 78,-25 */
  /*  to  */ (char)-1,(char)15,(char)0, /* 78,-10 */
  /* from */ (char)-1,(char)-16,(char)3, /* 81,-26 */
  /*  to  */ (char)-1,(char)16,(char)-3, /* 78,-10 */
  /* from */ (char)-1,(char)6,(char)4, /* 82,-4 */
  /*  to  */ (char)-1,(char)17,(char)-9, /* 73,13 */
  /* from */ (char)-1,(char)-17,(char)5, /* 78,-4 */
  /*  to  */ (char)-1,(char)17,(char)-5, /* 73,13 */
  /* from */ (char)-1,(char)-10,(char)5, /* 78,3 */
  /*  to  */ (char)0,(char)19,(char)-7, /* 71,22 */
  /* from */ (char)-1,(char)3,(char)7, /* 78,25 */
  /*  to  */ (char)-1,(char)17,(char)-11, /* 67,42 */
  /* from */ (char)-1,(char)-16,(char)14, /* 81,26 */
  /*  to  */ (char)-1,(char)16,(char)-14, /* 67,42 */
  /* from */ (char)-1,(char)-39,(char)15, /* 82,3 */
  /*  to  */ (char)-1,(char)19,(char)-11, /* 71,22 */
  /* from */ (char)-1,(char)-19,(char)7, /* 78,3 */
  /*  to  */ (char)-1,(char)19,(char)-7, /* 71,22 */
  /* from */ (char)-1,(char)-22,(char)5, /* 76,0 */
  /*  to  */ (char)0,(char)18,(char)-4, /* 72,18 */
  /* from */ (char)-1,(char)-18,(char)-30, /* 42,0 */
  /*  to  */ (char)-1,(char)12,(char)-1, /* 41,12 */
  /* from */ (char)-1,(char)3,(char)-85, /* -44,15 */
  /*  to  */ (char)-1,(char)-12,(char)4, /* -40,3 */
  /* from */ (char)-1,(char)-3,(char)-26, /* -66,0 */
  /*  to  */ (char)0,(char)-12,(char)13, /* -53,-12 */
  /* from */ (char)-1,(char)12,(char)9, /* -44,0 */
  /*  to  */ (char)-1,(char)-9,(char)8, /* -36,-9 */
  /* from */ (char)-1,(char)-6,(char)-8, /* -44,-15 */
  /*  to  */ (char)0,(char)-6,(char)11, /* -33,-21 */
  /* from */ (char)-1,(char)21,(char)75, /* 42,0 */
  /*  to  */ (char)-1,(char)12,(char)-1, /* 41,12 */
  /* from */ (char)-1,(char)-61,(char)36, /* 77,-49 */
  /*  to  */ (char)-1,(char)24,(char)4, /* 81,-25 */
  /* from */ (char)-1,(char)10,(char)-125, /* -44,-15 */
  /*  to  */ (char)-1,(char)-6,(char)11, /* -33,-21 */
  /* from */ (char)-1,(char)6,(char)116, /* 83,-15 */
  /*  to  */ (char)-1,(char)11,(char)-6, /* 77,-4 */
  /* from */ (char)-1,(char)19,(char)6, /* 83,15 */
  /*  to  */ (char)-1,(char)9,(char)-12, /* 71,24 */
  /* from */ (char)-1,(char)-9,(char)-115, /* -44,15 */
  /*  to  */ (char)-1,(char)-12,(char)4, /* -40,3 */
  /* from */ (char)-1,(char)46,(char)118, /* 78,49 */
  /*  to  */ (char)-1,(char)14,(char)-16, /* 62,63 */
  /* from */ (char)-1,(char)-63,(char)-20, /* 42,0 */
  /*  to  */ (char)-1,(char)12,(char)-1, /* 41,12 */
  /* from */ (char)-1,(char)-27,(char)42, /* 83,-15 */
  /*  to  */ (char)0,(char)11,(char)-6, /* 77,-4 */
  /* from */ (char)-1,(char)-70,(char)3, /* 80,-74 */
  /*  to  */ (char)-1,(char)26,(char)6, /* 86,-48 */
  /* from */ (char)-1,(char)-19,(char)-42, /* 44,-67 */
  /*  to  */ (char)0,(char)19,(char)9, /* 53,-48 */
  /* from */ (char)-1,(char)-1,(char)24, /* 77,-49 */
  /*  to  */ (char)-1,(char)24,(char)4, /* 81,-25 */
  /* from */ (char)-1,(char)-32,(char)-2, /* 79,-57 */
  /*  to  */ (char)0,(char)27,(char)3, /* 82,-30 */
  /* from */ (char)-1,(char)-28,(char)-2, /* 80,-58 */
  /*  to  */ (char)-1,(char)28,(char)2, /* 82,-30 */
  /* from */ (char)-1,(char)-39,(char)-2, /* 80,-69 */
  /*  to  */ (char)-1,(char)25,(char)5, /* 85,-44 */
  /* from */ (char)-1,(char)-13,(char)-6, /* 79,-57 */
  /*  to  */ (char)-1,(char)27,(char)3, /* 82,-30 */
  /* from */ (char)-1,(char)45,(char)1, /* 83,15 */
  /*  to  */ (char)0,(char)9,(char)-12, /* 71,24 */
  /* from */ (char)-1,(char)50,(char)9, /* 80,74 */
  /*  to  */ (char)-1,(char)7,(char)-22, /* 58,81 */
  /* from */ (char)-1,(char)-14,(char)-14, /* 44,67 */
  /*  to  */ (char)0,(char)0,(char)-19, /* 25,67 */
  /* from */ (char)-1,(char)-18,(char)53, /* 78,49 */
  /*  to  */ (char)-1,(char)14,(char)-16, /* 62,63 */
  /* from */ (char)-1,(char)-6,(char)17, /* 79,57 */
  /*  to  */ (char)0,(char)11,(char)-18, /* 61,68 */
  /* from */ (char)-1,(char)1,(char)19, /* 80,69 */
  /*  to  */ (char)-1,(char)9,(char)-21, /* 59,78 */
  /* from */ (char)-1,(char)-20,(char)22, /* 81,58 */
  /*  to  */ (char)-1,(char)10,(char)-20, /* 61,68 */
  /* from */ (char)-1,(char)-11,(char)18, /* 79,57 */
  /*  to  */ (char)-1,(char)11,(char)-18, /* 61,68 */
  1
};

static const char shipframe1[] IN_ROM = {
  /* from */ (char)0,(char)18,(char)72, /* 72,18 */
  /*  to  */ (char)-1,(char)15,(char)-3, /* 69,33 */
  /* from */ (char)-1,(char)-58,(char)12, /* 81,-25 */
  /*  to  */ (char)-1,(char)18,(char)8, /* 89,-7 */
  /* from */ (char)-1,(char)-41,(char)-3, /* 86,-48 */
  /*  to  */ (char)-1,(char)19,(char)10, /* 96,-29 */
  /* from */ (char)-1,(char)-19,(char)-43, /* 53,-48 */
  /*  to  */ (char)-1,(char)14,(char)12, /* 65,-34 */
  /* from */ (char)-1,(char)13,(char)-98, /* -33,-21 */
  /*  to  */ (char)-1,(char)-1,(char)10, /* -23,-22 */
  /* from */ (char)-1,(char)25,(char)-17, /* -40,3 */
  /*  to  */ (char)-1,(char)-7,(char)3, /* -37,-4 */
  /* from */ (char)-1,(char)71,(char)62, /* 25,67 */
  /*  to  */ (char)-1,(char)-5,(char)-22, /* 3,62 */
  /* from */ (char)-1,(char)19,(char)55, /* 58,81 */
  /*  to  */ (char)-1,(char)2,(char)-26, /* 32,83 */
  /* from */ (char)-1,(char)-20,(char)30, /* 62,63 */
  /*  to  */ (char)-1,(char)8,(char)-17, /* 45,71 */
  /* from */ (char)-1,(char)-53,(char)27, /* 72,18 */
  /*  to  */ (char)-1,(char)15,(char)-3, /* 69,33 */
  /* from */ (char)-1,(char)-20,(char)4, /* 73,13 */
  /*  to  */ (char)0,(char)13,(char)-3, /* 70,26 */
  /* from */ (char)-1,(char)-36,(char)8, /* 78,-10 */
  /*  to  */ (char)-1,(char)19,(char)1, /* 79,9 */
  /* from */ (char)-1,(char)-19,(char)-1, /* 78,-10 */
  /*  to  */ (char)-1,(char)10,(char)0, /* 78,0 */
  /* from */ (char)-1,(char)13,(char)-5, /* 73,13 */
  /*  to  */ (char)-1,(char)1,(char)-5, /* 68,14 */
  /* from */ (char)-1,(char)-1,(char)5, /* 73,13 */
  /*  to  */ (char)-1,(char)13,(char)-3, /* 70,26 */
  /* from */ (char)-1,(char)-4,(char)1, /* 71,22 */
  /*  to  */ (char)0,(char)10,(char)-4, /* 67,32 */
  /* from */ (char)-1,(char)10,(char)0, /* 67,42 */
  /*  to  */ (char)-1,(char)5,(char)-10, /* 57,47 */
  /* from */ (char)-1,(char)-5,(char)10, /* 67,42 */
  /*  to  */ (char)-1,(char)-3,(char)-12, /* 55,39 */
  /* from */ (char)-1,(char)-17,(char)16, /* 71,22 */
  /*  to  */ (char)-1,(char)-2,(char)-6, /* 65,20 */
  /* from */ (char)-1,(char)2,(char)6, /* 71,22 */
  /*  to  */ (char)-1,(char)10,(char)-4, /* 67,32 */
  /* from */ (char)-1,(char)-14,(char)5, /* 72,18 */
  /*  to  */ (char)0,(char)15,(char)-3, /* 69,33 */
  /* from */ (char)-1,(char)-21,(char)-28, /* 41,12 */
  /*  to  */ (char)-1,(char)10,(char)-1, /* 40,22 */
  /* from */ (char)-1,(char)-19,(char)-80, /* -40,3 */
  /*  to  */ (char)-1,(char)-7,(char)3, /* -37,-4 */
  /* from */ (char)-1,(char)-8,(char)-16, /* -53,-12 */
  /*  to  */ (char)0,(char)-6,(char)10, /* -43,-18 */
  /* from */ (char)-1,(char)9,(char)7, /* -36,-9 */
  /*  to  */ (char)-1,(char)-4,(char)7, /* -29,-13 */
  /* from */ (char)-1,(char)-8,(char)-4, /* -33,-21 */
  /*  to  */ (char)0,(char)-1,(char)10, /* -23,-22 */
  /* from */ (char)-1,(char)34,(char)64, /* 41,12 */
  /*  to  */ (char)-1,(char)10,(char)-1, /* 40,22 */
  /* from */ (char)-1,(char)-47,(char)41, /* 81,-25 */
  /*  to  */ (char)-1,(char)18,(char)8, /* 89,-7 */
  /* from */ (char)-1,(char)-14,(char)-122, /* -33,-21 */
  /*  to  */ (char)-1,(char)-1,(char)10, /* -23,-22 */
  /* from */ (char)-1,(char)18,(char)100, /* 77,-4 */
  /*  to  */ (char)-1,(char)6,(char)-4, /* 73,2 */
  /* from */ (char)-1,(char)22,(char)-2, /* 71,24 */
  /*  to  */ (char)-1,(char)1,(char)-12, /* 59,25 */
  /* from */ (char)-1,(char)-22,(char)-99, /* -40,3 */
  /*  to  */ (char)-1,(char)-7,(char)3, /* -37,-4 */
  /* from */ (char)-1,(char)67,(char)99, /* 62,63 */
  /*  to  */ (char)-1,(char)8,(char)-17, /* 45,71 */
  /* from */ (char)-1,(char)-59,(char)-4, /* 41,12 */
  /*  to  */ (char)-1,(char)10,(char)-1, /* 40,22 */
  /* from */ (char)-1,(char)-26,(char)37, /* 77,-4 */
  /*  to  */ (char)0,(char)6,(char)-4, /* 73,2 */
  /* from */ (char)-1,(char)-50,(char)13, /* 86,-48 */
  /*  to  */ (char)-1,(char)19,(char)10, /* 96,-29 */
  /* from */ (char)-1,(char)-19,(char)-43, /* 53,-48 */
  /*  to  */ (char)0,(char)14,(char)12, /* 65,-34 */
  /* from */ (char)-1,(char)9,(char)16, /* 81,-25 */
  /*  to  */ (char)-1,(char)18,(char)8, /* 89,-7 */
  /* from */ (char)-1,(char)-23,(char)-7, /* 82,-30 */
  /*  to  */ (char)0,(char)10,(char)9, /* 91,-20 */
  /* from */ (char)-1,(char)-10,(char)-9, /* 82,-30 */
  /*  to  */ (char)-1,(char)15,(char)8, /* 90,-15 */
  /* from */ (char)-1,(char)-29,(char)-5, /* 85,-44 */
  /*  to  */ (char)-1,(char)19,(char)9, /* 94,-25 */
  /* from */ (char)-1,(char)-5,(char)-12, /* 82,-30 */
  /*  to  */ (char)-1,(char)10,(char)9, /* 91,-20 */
  /* from */ (char)-1,(char)44,(char)-20, /* 71,24 */
  /*  to  */ (char)0,(char)1,(char)-12, /* 59,25 */
  /* from */ (char)-1,(char)56,(char)-1, /* 58,81 */
  /*  to  */ (char)-1,(char)2,(char)-26, /* 32,83 */
  /* from */ (char)-1,(char)-16,(char)-7, /* 25,67 */
  /*  to  */ (char)0,(char)-5,(char)-22, /* 3,62 */
  /* from */ (char)-1,(char)1,(char)59, /* 62,63 */
  /*  to  */ (char)-1,(char)8,(char)-17, /* 45,71 */
  /* from */ (char)-1,(char)-3,(char)16, /* 61,68 */
  /*  to  */ (char)0,(char)2,(char)-21, /* 40,70 */
  /* from */ (char)-1,(char)8,(char)19, /* 59,78 */
  /*  to  */ (char)-1,(char)-1,(char)-23, /* 36,77 */
  /* from */ (char)-1,(char)-9,(char)25, /* 61,68 */
  /*  to  */ (char)-1,(char)5,(char)-19, /* 42,73 */
  /* from */ (char)-1,(char)-5,(char)19, /* 61,68 */
  /*  to  */ (char)-1,(char)2,(char)-21, /* 40,70 */
  1
};

static const char shipframe2[] IN_ROM = {
  /* from */ (char)0,(char)33,(char)69, /* 69,33 */
  /*  to  */ (char)-1,(char)7,(char)-10, /* 59,40 */
  /* from */ (char)-1,(char)-47,(char)30, /* 89,-7 */
  /*  to  */ (char)-1,(char)16,(char)2, /* 91,9 */
  /* from */ (char)-1,(char)-38,(char)5, /* 96,-29 */
  /*  to  */ (char)-1,(char)17,(char)7, /* 103,-12 */
  /* from */ (char)-1,(char)-22,(char)-38, /* 65,-34 */
  /*  to  */ (char)-1,(char)16,(char)7, /* 72,-18 */
  /* from */ (char)-1,(char)-4,(char)-95, /* -23,-22 */
  /*  to  */ (char)-1,(char)3,(char)12, /* -11,-19 */
  /* from */ (char)-1,(char)15,(char)-26, /* -37,-4 */
  /*  to  */ (char)-1,(char)-4,(char)6, /* -31,-8 */
  /* from */ (char)-1,(char)70,(char)34, /* 3,62 */
  /*  to  */ (char)-1,(char)-19,(char)-23, /* -20,43 */
  /* from */ (char)-1,(char)40,(char)52, /* 32,83 */
  /*  to  */ (char)-1,(char)-19,(char)-33, /* -1,64 */
  /* from */ (char)-1,(char)7,(char)46, /* 45,71 */
  /*  to  */ (char)-1,(char)-8,(char)-25, /* 20,63 */
  /* from */ (char)-1,(char)-30,(char)49, /* 69,33 */
  /*  to  */ (char)-1,(char)7,(char)-10, /* 59,40 */
  /* from */ (char)-1,(char)-14,(char)11, /* 70,26 */
  /*  to  */ (char)0,(char)6,(char)-10, /* 60,32 */
  /* from */ (char)-1,(char)-23,(char)19, /* 79,9 */
  /*  to  */ (char)-1,(char)10,(char)-5, /* 74,19 */
  /* from */ (char)-1,(char)-19,(char)4, /* 78,0 */
  /*  to  */ (char)-1,(char)5,(char)-4, /* 74,5 */
  /* from */ (char)-1,(char)9,(char)-6, /* 68,14 */
  /*  to  */ (char)-1,(char)-1,(char)-10, /* 58,13 */
  /* from */ (char)-1,(char)13,(char)12, /* 70,26 */
  /*  to  */ (char)-1,(char)6,(char)-10, /* 60,32 */
  /* from */ (char)-1,(char)0,(char)7, /* 67,32 */
  /*  to  */ (char)0,(char)4,(char)-12, /* 55,36 */
  /* from */ (char)-1,(char)11,(char)2, /* 57,47 */
  /*  to  */ (char)-1,(char)-2,(char)-18, /* 39,45 */
  /* from */ (char)-1,(char)-6,(char)16, /* 55,39 */
  /*  to  */ (char)-1,(char)-7,(char)-18, /* 37,32 */
  /* from */ (char)-1,(char)-12,(char)28, /* 65,20 */
  /*  to  */ (char)-1,(char)-3,(char)-12, /* 53,17 */
  /* from */ (char)-1,(char)15,(char)14, /* 67,32 */
  /*  to  */ (char)-1,(char)4,(char)-12, /* 55,36 */
  /* from */ (char)-1,(char)-3,(char)14, /* 69,33 */
  /*  to  */ (char)0,(char)7,(char)-10, /* 59,40 */
  /* from */ (char)-1,(char)-18,(char)-19, /* 40,22 */
  /*  to  */ (char)-1,(char)5,(char)-7, /* 33,27 */
  /* from */ (char)-1,(char)-31,(char)-70, /* -37,-4 */
  /*  to  */ (char)-1,(char)-4,(char)6, /* -31,-8 */
  /* from */ (char)-1,(char)-10,(char)-12, /* -43,-18 */
  /*  to  */ (char)0,(char)-1,(char)13, /* -30,-19 */
  /* from */ (char)-1,(char)6,(char)1, /* -29,-13 */
  /*  to  */ (char)-1,(char)0,(char)9, /* -20,-13 */
  /* from */ (char)-1,(char)-9,(char)-3, /* -23,-22 */
  /*  to  */ (char)0,(char)3,(char)12, /* -11,-19 */
  /* from */ (char)-1,(char)41,(char)51, /* 40,22 */
  /*  to  */ (char)-1,(char)5,(char)-7, /* 33,27 */
  /* from */ (char)-1,(char)-34,(char)56, /* 89,-7 */
  /*  to  */ (char)-1,(char)16,(char)2, /* 91,9 */
  /* from */ (char)-1,(char)-31,(char)-114, /* -23,-22 */
  /*  to  */ (char)-1,(char)3,(char)12, /* -11,-19 */
  /* from */ (char)-1,(char)21,(char)84, /* 73,2 */
  /*  to  */ (char)-1,(char)0,(char)-8, /* 65,2 */
  /* from */ (char)-1,(char)23,(char)-6, /* 59,25 */
  /*  to  */ (char)-1,(char)-8,(char)-15, /* 44,17 */
  /* from */ (char)-1,(char)-21,(char)-81, /* -37,-4 */
  /*  to  */ (char)-1,(char)-4,(char)6, /* -31,-8 */
  /* from */ (char)-1,(char)79,(char)76, /* 45,71 */
  /*  to  */ (char)-1,(char)-8,(char)-25, /* 20,63 */
  /* from */ (char)-1,(char)-41,(char)20, /* 40,22 */
  /*  to  */ (char)-1,(char)5,(char)-7, /* 33,27 */
  /* from */ (char)-1,(char)-25,(char)40, /* 73,2 */
  /*  to  */ (char)0,(char)0,(char)-8, /* 65,2 */
  /* from */ (char)-1,(char)-31,(char)31, /* 96,-29 */
  /*  to  */ (char)-1,(char)17,(char)7, /* 103,-12 */
  /* from */ (char)-1,(char)-22,(char)-38, /* 65,-34 */
  /*  to  */ (char)0,(char)16,(char)7, /* 72,-18 */
  /* from */ (char)-1,(char)11,(char)17, /* 89,-7 */
  /*  to  */ (char)-1,(char)16,(char)2, /* 91,9 */
  /* from */ (char)-1,(char)-29,(char)0, /* 91,-20 */
  /*  to  */ (char)0,(char)13,(char)3, /* 94,-7 */
  /* from */ (char)-1,(char)-8,(char)-4, /* 90,-15 */
  /*  to  */ (char)-1,(char)15,(char)5, /* 95,0 */
  /* from */ (char)-1,(char)-25,(char)-1, /* 94,-25 */
  /*  to  */ (char)-1,(char)16,(char)5, /* 99,-9 */
  /* from */ (char)-1,(char)-11,(char)-8, /* 91,-20 */
  /*  to  */ (char)-1,(char)13,(char)3, /* 94,-7 */
  /* from */ (char)-1,(char)32,(char)-35, /* 59,25 */
  /*  to  */ (char)0,(char)-8,(char)-15, /* 44,17 */
  /* from */ (char)-1,(char)66,(char)-12, /* 32,83 */
  /*  to  */ (char)-1,(char)-19,(char)-33, /* -1,64 */
  /* from */ (char)-1,(char)-2,(char)4, /* 3,62 */
  /*  to  */ (char)0,(char)-19,(char)-23, /* -20,43 */
  /* from */ (char)-1,(char)28,(char)65, /* 45,71 */
  /*  to  */ (char)-1,(char)-8,(char)-25, /* 20,63 */
  /* from */ (char)-1,(char)7,(char)20, /* 40,70 */
  /*  to  */ (char)0,(char)-16,(char)-29, /* 11,54 */
  /* from */ (char)-1,(char)23,(char)25, /* 36,77 */
  /*  to  */ (char)-1,(char)-17,(char)-31, /* 5,60 */
  /* from */ (char)-1,(char)13,(char)37, /* 42,73 */
  /*  to  */ (char)-1,(char)-12,(char)-29, /* 13,61 */
  /* from */ (char)-1,(char)9,(char)27, /* 40,70 */
  /*  to  */ (char)-1,(char)-16,(char)-29, /* 11,54 */
  1
};

static const char shipframe3[] IN_ROM = {
  /* from */ (char)0,(char)40,(char)59, /* 59,40 */
  /*  to  */ (char)-1,(char)-4,(char)-18, /* 41,36 */
  /* from */ (char)-1,(char)-27,(char)50, /* 91,9 */
  /*  to  */ (char)-1,(char)10,(char)-4, /* 87,19 */
  /* from */ (char)-1,(char)-31,(char)16, /* 103,-12 */
  /*  to  */ (char)-1,(char)14,(char)0, /* 103,2 */
  /* from */ (char)-1,(char)-20,(char)-31, /* 72,-18 */
  /*  to  */ (char)-1,(char)14,(char)5, /* 77,-4 */
  /* from */ (char)-1,(char)-15,(char)-88, /* -11,-19 */
  /*  to  */ (char)-1,(char)7,(char)10, /* -1,-12 */
  /* from */ (char)-1,(char)4,(char)-30, /* -31,-8 */
  /*  to  */ (char)-1,(char)-1,(char)9, /* -22,-9 */
  /* from */ (char)-1,(char)52,(char)2, /* -20,43 */
  /*  to  */ (char)-1,(char)-28,(char)-20, /* -40,15 */
  /* from */ (char)-1,(char)49,(char)39, /* -1,64 */
  /*  to  */ (char)-1,(char)-37,(char)-33, /* -34,27 */
  /* from */ (char)-1,(char)36,(char)54, /* 20,63 */
  /*  to  */ (char)-1,(char)-24,(char)-29, /* -9,39 */
  /* from */ (char)-1,(char)1,(char)68, /* 59,40 */
  /*  to  */ (char)-1,(char)-4,(char)-17, /* 42,36 */
  /* from */ (char)-1,(char)-4,(char)18, /* 60,32 */
  /*  to  */ (char)0,(char)-4,(char)-14, /* 46,28 */
  /* from */ (char)-1,(char)-9,(char)28, /* 74,19 */
  /*  to  */ (char)-1,(char)3,(char)-9, /* 65,22 */
  /* from */ (char)-1,(char)-17,(char)9, /* 74,5 */
  /*  to  */ (char)-1,(char)0,(char)-9, /* 65,5 */
  /* from */ (char)-1,(char)8,(char)-7, /* 58,13 */
  /*  to  */ (char)-1,(char)-9,(char)-13, /* 45,4 */
  /* from */ (char)-1,(char)28,(char)15, /* 60,32 */
  /*  to  */ (char)-1,(char)-4,(char)-14, /* 46,28 */
  /* from */ (char)-1,(char)8,(char)9, /* 55,36 */
  /*  to  */ (char)0,(char)-6,(char)-17, /* 38,30 */
  /* from */ (char)-1,(char)15,(char)1, /* 39,45 */
  /*  to  */ (char)-1,(char)-15,(char)-22, /* 17,30 */
  /* from */ (char)-1,(char)2,(char)20, /* 37,32 */
  /*  to  */ (char)-1,(char)-19,(char)-21, /* 16,13 */
  /* from */ (char)-1,(char)4,(char)37, /* 53,17 */
  /*  to  */ (char)-1,(char)-11,(char)-15, /* 38,6 */
  /* from */ (char)-1,(char)30,(char)17, /* 55,36 */
  /*  to  */ (char)-1,(char)-6,(char)-17, /* 38,30 */
  /* from */ (char)-1,(char)10,(char)21, /* 59,40 */
  /*  to  */ (char)0,(char)-4,(char)-18, /* 41,36 */
  /* from */ (char)-1,(char)-9,(char)-8, /* 33,27 */
  /*  to  */ (char)-1,(char)-1,(char)-10, /* 23,26 */
  /* from */ (char)-1,(char)-34,(char)-54, /* -31,-8 */
  /*  to  */ (char)-1,(char)-1,(char)9, /* -22,-9 */
  /* from */ (char)-1,(char)-10,(char)-8, /* -30,-19 */
  /*  to  */ (char)0,(char)6,(char)13, /* -17,-13 */
  /* from */ (char)-1,(char)0,(char)-3, /* -20,-13 */
  /*  to  */ (char)-1,(char)3,(char)9, /* -11,-10 */
  /* from */ (char)-1,(char)-9,(char)0, /* -11,-19 */
  /*  to  */ (char)0,(char)7,(char)10, /* -1,-12 */
  /* from */ (char)-1,(char)39,(char)34, /* 33,27 */
  /*  to  */ (char)-1,(char)-1,(char)-10, /* 23,26 */
  /* from */ (char)-1,(char)-17,(char)68, /* 91,9 */
  /*  to  */ (char)-1,(char)10,(char)-4, /* 87,19 */
  /* from */ (char)-1,(char)-38,(char)-98, /* -11,-19 */
  /*  to  */ (char)-1,(char)7,(char)10, /* -1,-12 */
  /* from */ (char)-1,(char)14,(char)66, /* 65,2 */
  /*  to  */ (char)-1,(char)-7,(char)-10, /* 55,-5 */
  /* from */ (char)-1,(char)22,(char)-11, /* 44,17 */
  /*  to  */ (char)-1,(char)-17,(char)-18, /* 26,0 */
  /* from */ (char)-1,(char)-8,(char)-57, /* -31,-8 */
  /*  to  */ (char)-1,(char)-1,(char)9, /* -22,-9 */
  /* from */ (char)-1,(char)72,(char)42, /* 20,63 */
  /*  to  */ (char)-1,(char)-24,(char)-29, /* -9,39 */
  /* from */ (char)-1,(char)-12,(char)42, /* 33,27 */
  /*  to  */ (char)-1,(char)-1,(char)-10, /* 23,26 */
  /* from */ (char)-1,(char)-24,(char)42, /* 65,2 */
  /*  to  */ (char)0,(char)-7,(char)-10, /* 55,-5 */
  /* from */ (char)-1,(char)-7,(char)48, /* 103,-12 */
  /*  to  */ (char)-1,(char)14,(char)0, /* 103,2 */
  /* from */ (char)-1,(char)-20,(char)-31, /* 72,-18 */
  /*  to  */ (char)0,(char)14,(char)5, /* 77,-4 */
  /* from */ (char)-1,(char)13,(char)14, /* 91,9 */
  /*  to  */ (char)-1,(char)10,(char)-4, /* 87,19 */
  /* from */ (char)-1,(char)-26,(char)7, /* 94,-7 */
  /*  to  */ (char)0,(char)10,(char)-2, /* 92,3 */
  /* from */ (char)-1,(char)-3,(char)3, /* 95,0 */
  /*  to  */ (char)-1,(char)11,(char)-3, /* 92,11 */
  /* from */ (char)-1,(char)-20,(char)7, /* 99,-9 */
  /*  to  */ (char)-1,(char)13,(char)0, /* 99,4 */
  /* from */ (char)-1,(char)-11,(char)-5, /* 94,-7 */
  /*  to  */ (char)-1,(char)10,(char)-2, /* 92,3 */
  /* from */ (char)-1,(char)14,(char)-48, /* 44,17 */
  /*  to  */ (char)0,(char)-17,(char)-18, /* 26,0 */
  /* from */ (char)-1,(char)64,(char)-27, /* -1,64 */
  /*  to  */ (char)-1,(char)-37,(char)-33, /* -34,27 */
  /* from */ (char)-1,(char)16,(char)14, /* -20,43 */
  /*  to  */ (char)0,(char)-28,(char)-20, /* -40,15 */
  /* from */ (char)-1,(char)48,(char)60, /* 20,63 */
  /*  to  */ (char)-1,(char)-24,(char)-29, /* -9,39 */
  /* from */ (char)-1,(char)15,(char)20, /* 11,54 */
  /*  to  */ (char)0,(char)-31,(char)-28, /* -17,23 */
  /* from */ (char)-1,(char)37,(char)22, /* 5,60 */
  /*  to  */ (char)-1,(char)-34,(char)-31, /* -26,26 */
  /* from */ (char)-1,(char)35,(char)39, /* 13,61 */
  /*  to  */ (char)-1,(char)-29,(char)-29, /* -16,32 */
  /* from */ (char)-1,(char)22,(char)27, /* 11,54 */
  /*  to  */ (char)-1,(char)-31,(char)-28, /* -17,23 */
  1
};

static const char shipframe4[] IN_ROM = {
  /* from */ (char)0,(char)36,(char)41, /* 41,36 */
  /*  to  */ (char)-1,(char)-15,(char)-20, /* 21,21 */
  /* from */ (char)-1,(char)-2,(char)66, /* 87,19 */
  /*  to  */ (char)-1,(char)3,(char)-12, /* 75,22 */
  /* from */ (char)-1,(char)-20,(char)28, /* 103,2 */
  /*  to  */ (char)-1,(char)8,(char)-4, /* 99,10 */
  /* from */ (char)-1,(char)-14,(char)-22, /* 77,-4 */
  /*  to  */ (char)-1,(char)12,(char)-2, /* 75,8 */
  /* from */ (char)-1,(char)-20,(char)-76, /* -1,-12 */
  /*  to  */ (char)-1,(char)11,(char)10, /* 9,-1 */
  /* from */ (char)-1,(char)-8,(char)-31, /* -22,-9 */
  /*  to  */ (char)-1,(char)4,(char)8, /* -14,-5 */
  /* from */ (char)-1,(char)20,(char)-26, /* -40,15 */
  /*  to  */ (char)-1,(char)-30,(char)-9, /* -49,-15 */
  /* from */ (char)-1,(char)42,(char)15, /* -34,27 */
  /*  to  */ (char)-1,(char)-45,(char)-21, /* -55,-18 */
  /* from */ (char)-1,(char)57,(char)46, /* -9,39 */
  /*  to  */ (char)-1,(char)-36,(char)-24, /* -33,3 */
  /* from */ (char)-1,(char)33,(char)75, /* 42,36 */
  /*  to  */ (char)-1,(char)-15,(char)-20, /* 22,21 */
  /* from */ (char)-1,(char)7,(char)24, /* 46,28 */
  /*  to  */ (char)0,(char)-15,(char)-19, /* 27,13 */
  /* from */ (char)-1,(char)9,(char)38, /* 65,22 */
  /*  to  */ (char)-1,(char)-8,(char)-15, /* 50,14 */
  /* from */ (char)-1,(char)-9,(char)15, /* 65,5 */
  /*  to  */ (char)-1,(char)-8,(char)-11, /* 54,-3 */
  /* from */ (char)-1,(char)7,(char)-9, /* 45,4 */
  /*  to  */ (char)-1,(char)-15,(char)-14, /* 31,-11 */
  /* from */ (char)-1,(char)39,(char)15, /* 46,28 */
  /*  to  */ (char)-1,(char)-15,(char)-19, /* 27,13 */
  /* from */ (char)-1,(char)17,(char)11, /* 38,30 */
  /*  to  */ (char)0,(char)-18,(char)-18, /* 20,12 */
  /* from */ (char)-1,(char)18,(char)-3, /* 17,30 */
  /*  to  */ (char)-1,(char)-25,(char)-21, /* -4,5 */
  /* from */ (char)-1,(char)8,(char)20, /* 16,13 */
  /*  to  */ (char)-1,(char)-26,(char)-17, /* -1,-13 */
  /* from */ (char)-1,(char)19,(char)39, /* 38,6 */
  /*  to  */ (char)-1,(char)-19,(char)-14, /* 24,-13 */
  /* from */ (char)-1,(char)43,(char)14, /* 38,30 */
  /*  to  */ (char)-1,(char)-18,(char)-18, /* 20,12 */
  /* from */ (char)-1,(char)24,(char)21, /* 41,36 */
  /*  to  */ (char)0,(char)-15,(char)-20, /* 21,21 */
  /* from */ (char)-1,(char)5,(char)2, /* 23,26 */
  /*  to  */ (char)-1,(char)-8,(char)-12, /* 11,18 */
  /* from */ (char)-1,(char)-27,(char)-33, /* -22,-9 */
  /*  to  */ (char)-1,(char)4,(char)8, /* -14,-5 */
  /* from */ (char)-1,(char)-8,(char)-3, /* -17,-13 */
  /*  to  */ (char)0,(char)11,(char)17, /* 0,-2 */
  /* from */ (char)-1,(char)-8,(char)-11, /* -11,-10 */
  /*  to  */ (char)-1,(char)8,(char)11, /* 0,-2 */
  /* from */ (char)-1,(char)-10,(char)-1, /* -1,-12 */
  /*  to  */ (char)0,(char)11,(char)10, /* 9,-1 */
  /* from */ (char)-1,(char)27,(char)14, /* 23,26 */
  /*  to  */ (char)-1,(char)-8,(char)-12, /* 11,18 */
  /* from */ (char)-1,(char)1,(char)76, /* 87,19 */
  /*  to  */ (char)-1,(char)3,(char)-12, /* 75,22 */
  /* from */ (char)-1,(char)-34,(char)-76, /* -1,-12 */
  /*  to  */ (char)-1,(char)11,(char)10, /* 9,-1 */
  /* from */ (char)-1,(char)-4,(char)46, /* 55,-5 */
  /*  to  */ (char)-1,(char)-11,(char)-11, /* 44,-16 */
  /* from */ (char)-1,(char)16,(char)-18, /* 26,0 */
  /*  to  */ (char)-1,(char)-22,(char)-13, /* 13,-22 */
  /* from */ (char)-1,(char)13,(char)-35, /* -22,-9 */
  /*  to  */ (char)-1,(char)4,(char)8, /* -14,-5 */
  /* from */ (char)-1,(char)44,(char)5, /* -9,39 */
  /*  to  */ (char)-1,(char)-36,(char)-24, /* -33,3 */
  /* from */ (char)-1,(char)23,(char)56, /* 23,26 */
  /*  to  */ (char)-1,(char)-8,(char)-12, /* 11,18 */
  /* from */ (char)-1,(char)-23,(char)44, /* 55,-5 */
  /*  to  */ (char)0,(char)-11,(char)-11, /* 44,-16 */
  /* from */ (char)-1,(char)18,(char)59, /* 103,2 */
  /*  to  */ (char)-1,(char)8,(char)-4, /* 99,10 */
  /* from */ (char)-1,(char)-14,(char)-22, /* 77,-4 */
  /*  to  */ (char)0,(char)12,(char)-2, /* 75,8 */
  /* from */ (char)-1,(char)11,(char)12, /* 87,19 */
  /*  to  */ (char)-1,(char)3,(char)-12, /* 75,22 */
  /* from */ (char)-1,(char)-19,(char)17, /* 92,3 */
  /*  to  */ (char)0,(char)3,(char)-7, /* 85,6 */
  /* from */ (char)-1,(char)5,(char)7, /* 92,11 */
  /*  to  */ (char)-1,(char)4,(char)-8, /* 84,15 */
  /* from */ (char)-1,(char)-11,(char)15, /* 99,4 */
  /*  to  */ (char)-1,(char)6,(char)-7, /* 92,10 */
  /* from */ (char)-1,(char)-7,(char)0, /* 92,3 */
  /*  to  */ (char)-1,(char)3,(char)-7, /* 85,6 */
  /* from */ (char)-1,(char)-6,(char)-59, /* 26,0 */
  /*  to  */ (char)0,(char)-22,(char)-13, /* 13,-22 */
  /* from */ (char)-1,(char)49,(char)-47, /* -34,27 */
  /*  to  */ (char)-1,(char)-45,(char)-21, /* -55,-18 */
  /* from */ (char)-1,(char)33,(char)15, /* -40,15 */
  /*  to  */ (char)0,(char)-30,(char)-9, /* -49,-15 */
  /* from */ (char)-1,(char)54,(char)40, /* -9,39 */
  /*  to  */ (char)-1,(char)-36,(char)-24, /* -33,3 */
  /* from */ (char)-1,(char)20,(char)16, /* -17,23 */
  /*  to  */ (char)0,(char)-40,(char)-21, /* -38,-17 */
  /* from */ (char)-1,(char)43,(char)12, /* -26,26 */
  /*  to  */ (char)-1,(char)-43,(char)-21, /* -47,-17 */
  /* from */ (char)-1,(char)49,(char)31, /* -16,32 */
  /*  to  */ (char)-1,(char)-39,(char)-24, /* -40,-7 */
  /* from */ (char)-1,(char)30,(char)23, /* -17,23 */
  /*  to  */ (char)-1,(char)-40,(char)-21, /* -38,-17 */
  1
};

static const char shipframe5[] IN_ROM = {
  /* from */ (char)0,(char)21,(char)21, /* 21,21 */
  /*  to  */ (char)-1,(char)-24,(char)-18, /* 3,-3 */
  /* from */ (char)-1,(char)25,(char)72, /* 75,22 */
  /*  to  */ (char)-1,(char)-7,(char)-14, /* 61,15 */
  /* from */ (char)-1,(char)-5,(char)38, /* 99,10 */
  /*  to  */ (char)-1,(char)-1,(char)-12, /* 87,9 */
  /* from */ (char)-1,(char)-1,(char)-12, /* 75,8 */
  /*  to  */ (char)-1,(char)7,(char)-3, /* 72,15 */
  /* from */ (char)-1,(char)-16,(char)-63, /* 9,-1 */
  /*  to  */ (char)-1,(char)12,(char)6, /* 15,11 */
  /* from */ (char)-1,(char)-16,(char)-29, /* -14,-5 */
  /*  to  */ (char)-1,(char)6,(char)8, /* -6,1 */
  /* from */ (char)-1,(char)-16,(char)-43, /* -49,-15 */
  /*  to  */ (char)-1,(char)-19,(char)3, /* -46,-34 */
  /* from */ (char)-1,(char)16,(char)-9, /* -55,-18 */
  /*  to  */ (char)-1,(char)-40,(char)-5, /* -60,-58 */
  /* from */ (char)-1,(char)61,(char)27, /* -33,3 */
  /*  to  */ (char)-1,(char)-37,(char)-12, /* -45,-34 */
  /* from */ (char)-1,(char)55,(char)67, /* 22,21 */
  /*  to  */ (char)-1,(char)-24,(char)-19, /* 3,-3 */
  /* from */ (char)-1,(char)16,(char)24, /* 27,13 */
  /*  to  */ (char)0,(char)-21,(char)-17, /* 10,-8 */
  /* from */ (char)-1,(char)22,(char)40, /* 50,14 */
  /*  to  */ (char)-1,(char)-15,(char)-16, /* 34,-1 */
  /* from */ (char)-1,(char)-2,(char)20, /* 54,-3 */
  /*  to  */ (char)-1,(char)-14,(char)-13, /* 41,-17 */
  /* from */ (char)-1,(char)6,(char)-10, /* 31,-11 */
  /*  to  */ (char)-1,(char)-19,(char)-11, /* 20,-30 */
  /* from */ (char)-1,(char)43,(char)7, /* 27,13 */
  /*  to  */ (char)-1,(char)-21,(char)-17, /* 10,-8 */
  /* from */ (char)-1,(char)20,(char)10, /* 20,12 */
  /*  to  */ (char)0,(char)-24,(char)-18, /* 2,-12 */
  /* from */ (char)-1,(char)17,(char)-6, /* -4,5 */
  /*  to  */ (char)-1,(char)-30,(char)-15, /* -19,-25 */
  /* from */ (char)-1,(char)12,(char)18, /* -1,-13 */
  /*  to  */ (char)-1,(char)-28,(char)-10, /* -11,-41 */
  /* from */ (char)-1,(char)28,(char)35, /* 24,-13 */
  /*  to  */ (char)-1,(char)-21,(char)-11, /* 13,-34 */
  /* from */ (char)-1,(char)46,(char)7, /* 20,12 */
  /*  to  */ (char)-1,(char)-24,(char)-18, /* 2,-12 */
  /* from */ (char)-1,(char)33,(char)19, /* 21,21 */
  /*  to  */ (char)0,(char)-24,(char)-18, /* 3,-3 */
  /* from */ (char)-1,(char)21,(char)8, /* 11,18 */
  /*  to  */ (char)-1,(char)-14,(char)-10, /* 1,4 */
  /* from */ (char)-1,(char)-9,(char)-15, /* -14,-5 */
  /*  to  */ (char)-1,(char)6,(char)8, /* -6,1 */
  /* from */ (char)-1,(char)-3,(char)6, /* 0,-2 */
  /*  to  */ (char)0,(char)12,(char)3, /* 3,10 */
  /* from */ (char)-1,(char)-12,(char)-3, /* 0,-2 */
  /*  to  */ (char)-1,(char)9,(char)4, /* 4,7 */
  /* from */ (char)-1,(char)-8,(char)5, /* 9,-1 */
  /*  to  */ (char)0,(char)12,(char)6, /* 15,11 */
  /* from */ (char)-1,(char)7,(char)-4, /* 11,18 */
  /*  to  */ (char)-1,(char)-14,(char)-10, /* 1,4 */
  /* from */ (char)-1,(char)18,(char)74, /* 75,22 */
  /*  to  */ (char)-1,(char)-7,(char)-14, /* 61,15 */
  /* from */ (char)-1,(char)-16,(char)-52, /* 9,-1 */
  /*  to  */ (char)-1,(char)12,(char)6, /* 15,11 */
  /* from */ (char)-1,(char)-27,(char)29, /* 44,-16 */
  /*  to  */ (char)-1,(char)-15,(char)-10, /* 34,-31 */
  /* from */ (char)-1,(char)9,(char)-21, /* 13,-22 */
  /*  to  */ (char)-1,(char)-23,(char)-8, /* 5,-45 */
  /* from */ (char)-1,(char)40,(char)-19, /* -14,-5 */
  /*  to  */ (char)-1,(char)6,(char)8, /* -6,1 */
  /* from */ (char)-1,(char)2,(char)-27, /* -33,3 */
  /*  to  */ (char)-1,(char)-37,(char)-12, /* -45,-34 */
  /* from */ (char)-1,(char)52,(char)56, /* 11,18 */
  /*  to  */ (char)-1,(char)-14,(char)-10, /* 1,4 */
  /* from */ (char)-1,(char)-20,(char)43, /* 44,-16 */
  /*  to  */ (char)0,(char)-15,(char)-10, /* 34,-31 */
  /* from */ (char)-1,(char)41,(char)65, /* 99,10 */
  /*  to  */ (char)-1,(char)-1,(char)-12, /* 87,9 */
  /* from */ (char)-1,(char)-1,(char)-12, /* 75,8 */
  /*  to  */ (char)0,(char)7,(char)-3, /* 72,15 */
  /* from */ (char)-1,(char)7,(char)3, /* 75,22 */
  /*  to  */ (char)-1,(char)-7,(char)-14, /* 61,15 */
  /* from */ (char)-1,(char)-9,(char)24, /* 85,6 */
  /*  to  */ (char)0,(char)-5,(char)-12, /* 73,1 */
  /* from */ (char)-1,(char)14,(char)11, /* 84,15 */
  /*  to  */ (char)-1,(char)-5,(char)-14, /* 70,10 */
  /* from */ (char)-1,(char)0,(char)22, /* 92,10 */
  /*  to  */ (char)-1,(char)-3,(char)-12, /* 80,7 */
  /* from */ (char)-1,(char)-1,(char)5, /* 85,6 */
  /*  to  */ (char)-1,(char)-5,(char)-12, /* 73,1 */
  /* from */ (char)-1,(char)-23,(char)-60, /* 13,-22 */
  /*  to  */ (char)0,(char)-23,(char)-8, /* 5,-45 */
  /* from */ (char)-1,(char)27,(char)-60, /* -55,-18 */
  /*  to  */ (char)-1,(char)-40,(char)-5, /* -60,-58 */
  /* from */ (char)-1,(char)43,(char)11, /* -49,-15 */
  /*  to  */ (char)0,(char)-19,(char)3, /* -46,-34 */
  /* from */ (char)-1,(char)37,(char)13, /* -33,3 */
  /*  to  */ (char)-1,(char)-37,(char)-12, /* -45,-34 */
  /* from */ (char)-1,(char)17,(char)7, /* -38,-17 */
  /*  to  */ (char)0,(char)-35,(char)-7, /* -45,-52 */
  /* from */ (char)-1,(char)35,(char)-2, /* -47,-17 */
  /*  to  */ (char)-1,(char)-37,(char)-6, /* -53,-54 */
  /* from */ (char)-1,(char)47,(char)13, /* -40,-7 */
  /*  to  */ (char)-1,(char)-38,(char)-9, /* -49,-45 */
  /* from */ (char)-1,(char)28,(char)11, /* -38,-17 */
  /*  to  */ (char)-1,(char)-35,(char)-7, /* -45,-52 */
  1
};

static const char shipframe6[] IN_ROM = {
  /* from */ (char)0,(char)-3,(char)3, /* 3,-3 */
  /*  to  */ (char)-1,(char)-39,(char)-15, /* -12,-42 */
  /* from */ (char)-1,(char)57,(char)73, /* 61,15 */
  /*  to  */ (char)-1,(char)-31,(char)-30, /* 31,-16 */
  /* from */ (char)-1,(char)25,(char)56, /* 87,9 */
  /*  to  */ (char)-1,(char)-19,(char)-25, /* 62,-10 */
  /* from */ (char)-1,(char)25,(char)10, /* 72,15 */
  /*  to  */ (char)-1,(char)-4,(char)-20, /* 52,11 */
  /* from */ (char)-1,(char)0,(char)-37, /* 15,11 */
  /*  to  */ (char)-1,(char)18,(char)1, /* 16,29 */
  /* from */ (char)-1,(char)-28,(char)-22, /* -6,1 */
  /*  to  */ (char)-1,(char)13,(char)6, /* 0,14 */
  /* from */ (char)-1,(char)-48,(char)-46, /* -46,-34 */
  /*  to  */ (char)-1,(char)-39,(char)7, /* -39,-73 */
  /* from */ (char)-1,(char)15,(char)-21, /* -60,-58 */
  /*  to  */ (char)-1,(char)-31,(char)21, /* -39,-89 */
  /* from */ (char)-1,(char)55,(char)-6, /* -45,-34 */
  /*  to  */ (char)-1,(char)-39,(char)6, /* -39,-73 */
  /* from */ (char)-1,(char)70,(char)42, /* 3,-3 */
  /*  to  */ (char)-1,(char)-40,(char)-16, /* -13,-43 */
  /* from */ (char)-1,(char)35,(char)23, /* 10,-8 */
  /*  to  */ (char)0,(char)-37,(char)-15, /* -5,-45 */
  /* from */ (char)-1,(char)44,(char)39, /* 34,-1 */
  /*  to  */ (char)-1,(char)-33,(char)-20, /* 14,-34 */
  /* from */ (char)-1,(char)17,(char)27, /* 41,-17 */
  /*  to  */ (char)-1,(char)-25,(char)-14, /* 27,-42 */
  /* from */ (char)-1,(char)12,(char)-7, /* 20,-30 */
  /*  to  */ (char)-1,(char)-26,(char)-6, /* 14,-56 */
  /* from */ (char)-1,(char)48,(char)-4, /* 10,-8 */
  /*  to  */ (char)-1,(char)-37,(char)-15, /* -5,-45 */
  /* from */ (char)-1,(char)33,(char)7, /* 2,-12 */
  /*  to  */ (char)0,(char)-37,(char)-11, /* -9,-49 */
  /* from */ (char)-1,(char)24,(char)-10, /* -19,-25 */
  /*  to  */ (char)-1,(char)-37,(char)-3, /* -22,-62 */
  /* from */ (char)-1,(char)21,(char)11, /* -11,-41 */
  /*  to  */ (char)-1,(char)-29,(char)3, /* -8,-70 */
  /* from */ (char)-1,(char)36,(char)21, /* 13,-34 */
  /*  to  */ (char)-1,(char)-26,(char)-4, /* 9,-60 */
  /* from */ (char)-1,(char)48,(char)-7, /* 2,-12 */
  /*  to  */ (char)-1,(char)-37,(char)-11, /* -9,-49 */
  /* from */ (char)-1,(char)46,(char)12, /* 3,-3 */
  /*  to  */ (char)0,(char)-39,(char)-15, /* -12,-42 */
  /* from */ (char)-1,(char)46,(char)13, /* 1,4 */
  /*  to  */ (char)-1,(char)-21,(char)-12, /* -11,-17 */
  /* from */ (char)-1,(char)18,(char)5, /* -6,1 */
  /*  to  */ (char)-1,(char)13,(char)6, /* 0,14 */
  /* from */ (char)-1,(char)-4,(char)3, /* 3,10 */
  /*  to  */ (char)0,(char)21,(char)5, /* 8,31 */
  /* from */ (char)-1,(char)-24,(char)-4, /* 4,7 */
  /*  to  */ (char)-1,(char)15,(char)4, /* 8,22 */
  /* from */ (char)-1,(char)-11,(char)7, /* 15,11 */
  /*  to  */ (char)0,(char)18,(char)1, /* 16,29 */
  /* from */ (char)-1,(char)-25,(char)-15, /* 1,4 */
  /*  to  */ (char)-1,(char)-21,(char)-12, /* -11,-17 */
  /* from */ (char)-1,(char)32,(char)72, /* 61,15 */
  /*  to  */ (char)-1,(char)-31,(char)-30, /* 31,-16 */
  /* from */ (char)-1,(char)27,(char)-16, /* 15,11 */
  /*  to  */ (char)-1,(char)18,(char)1, /* 16,29 */
  /* from */ (char)-1,(char)-60,(char)18, /* 34,-31 */
  /*  to  */ (char)-1,(char)-22,(char)-7, /* 27,-53 */
  /* from */ (char)-1,(char)8,(char)-22, /* 5,-45 */
  /*  to  */ (char)-1,(char)-24,(char)1, /* 6,-69 */
  /* from */ (char)-1,(char)70,(char)-12, /* -6,1 */
  /*  to  */ (char)-1,(char)13,(char)6, /* 0,14 */
  /* from */ (char)-1,(char)-48,(char)-45, /* -45,-34 */
  /*  to  */ (char)-1,(char)-39,(char)6, /* -39,-73 */
  /* from */ (char)-1,(char)77,(char)40, /* 1,4 */
  /*  to  */ (char)-1,(char)-21,(char)-12, /* -11,-17 */
  /* from */ (char)-1,(char)-14,(char)45, /* 34,-31 */
  /*  to  */ (char)0,(char)-22,(char)-7, /* 27,-53 */
  /* from */ (char)-1,(char)62,(char)60, /* 87,9 */
  /*  to  */ (char)-1,(char)-19,(char)-25, /* 62,-10 */
  /* from */ (char)-1,(char)25,(char)10, /* 72,15 */
  /*  to  */ (char)0,(char)-4,(char)-20, /* 52,11 */
  /* from */ (char)-1,(char)4,(char)9, /* 61,15 */
  /*  to  */ (char)-1,(char)-31,(char)-30, /* 31,-16 */
  /* from */ (char)-1,(char)17,(char)42, /* 73,1 */
  /*  to  */ (char)0,(char)-22,(char)-23, /* 50,-21 */
  /* from */ (char)-1,(char)31,(char)20, /* 70,10 */
  /*  to  */ (char)-1,(char)-25,(char)-27, /* 43,-15 */
  /* from */ (char)-1,(char)22,(char)37, /* 80,7 */
  /*  to  */ (char)-1,(char)-21,(char)-25, /* 55,-14 */
  /* from */ (char)-1,(char)15,(char)18, /* 73,1 */
  /*  to  */ (char)-1,(char)-22,(char)-23, /* 50,-21 */
  /* from */ (char)-1,(char)-24,(char)-45, /* 5,-45 */
  /*  to  */ (char)0,(char)-24,(char)1, /* 6,-69 */
  /* from */ (char)-1,(char)11,(char)-66, /* -60,-58 */
  /*  to  */ (char)-1,(char)-31,(char)21, /* -39,-89 */
  /* from */ (char)-1,(char)55,(char)-7, /* -46,-34 */
  /*  to  */ (char)0,(char)-39,(char)7, /* -39,-73 */
  /* from */ (char)-1,(char)39,(char)-6, /* -45,-34 */
  /*  to  */ (char)-1,(char)-39,(char)6, /* -39,-73 */
  /* from */ (char)-1,(char)21,(char)-6, /* -45,-52 */
  /*  to  */ (char)0,(char)-32,(char)14, /* -31,-84 */
  /* from */ (char)-1,(char)30,(char)-22, /* -53,-54 */
  /*  to  */ (char)-1,(char)-32,(char)17, /* -36,-86 */
  /* from */ (char)-1,(char)41,(char)-13, /* -49,-45 */
  /*  to  */ (char)-1,(char)-35,(char)12, /* -37,-80 */
  /* from */ (char)-1,(char)28,(char)-8, /* -45,-52 */
  /*  to  */ (char)-1,(char)-32,(char)14, /* -31,-84 */
  1
};

static const char shipframe7[] IN_ROM = {
  /* from */ (char)0,(char)-42,(char)-12, /* -12,-42 */
  /*  to  */ (char)-1,(char)-21,(char)0, /* -12,-63 */
  /* from */ (char)-1,(char)47,(char)43, /* 31,-16 */
  /*  to  */ (char)-1,(char)-26,(char)-14, /* 17,-42 */
  /* from */ (char)-1,(char)32,(char)45, /* 62,-10 */
  /*  to  */ (char)-1,(char)-25,(char)-18, /* 44,-35 */
  /* from */ (char)-1,(char)46,(char)8, /* 52,11 */
  /*  to  */ (char)-1,(char)-13,(char)-15, /* 37,-2 */
  /* from */ (char)-1,(char)31,(char)-21, /* 16,29 */
  /*  to  */ (char)-1,(char)8,(char)-5, /* 11,37 */
  /* from */ (char)-1,(char)-23,(char)-11, /* 0,14 */
  /*  to  */ (char)-1,(char)8,(char)2, /* 2,22 */
  /* from */ (char)-1,(char)-95,(char)-41, /* -39,-73 */
  /*  to  */ (char)-1,(char)12,(char)24, /* -15,-61 */
  /* from */ (char)-1,(char)-28,(char)-24, /* -39,-89 */
  /*  to  */ (char)-1,(char)-2,(char)22, /* -17,-91 */
  /* from */ (char)-1,(char)18,(char)-22, /* -39,-73 */
  /*  to  */ (char)-1,(char)-10,(char)16, /* -23,-83 */
  /* from */ (char)-1,(char)40,(char)10, /* -13,-43 */
  /*  to  */ (char)-1,(char)-20,(char)1, /* -12,-63 */
  /* from */ (char)-1,(char)18,(char)7, /* -5,-45 */
  /*  to  */ (char)0,(char)-20,(char)1, /* -4,-65 */
  /* from */ (char)-1,(char)31,(char)18, /* 14,-34 */
  /*  to  */ (char)-1,(char)-21,(char)-6, /* 8,-55 */
  /* from */ (char)-1,(char)13,(char)19, /* 27,-42 */
  /*  to  */ (char)-1,(char)-16,(char)-3, /* 24,-58 */
  /* from */ (char)-1,(char)2,(char)-10, /* 14,-56 */
  /*  to  */ (char)-1,(char)-12,(char)3, /* 17,-68 */
  /* from */ (char)-1,(char)22,(char)-22, /* -5,-46 */
  /*  to  */ (char)-1,(char)-19,(char)1, /* -4,-65 */
  /* from */ (char)-1,(char)16,(char)-5, /* -9,-49 */
  /*  to  */ (char)0,(char)-18,(char)2, /* -7,-67 */
  /* from */ (char)-1,(char)5,(char)-15, /* -22,-62 */
  /*  to  */ (char)-1,(char)-14,(char)10, /* -12,-76 */
  /* from */ (char)-1,(char)6,(char)4, /* -8,-70 */
  /*  to  */ (char)-1,(char)-7,(char)10, /* 2,-77 */
  /* from */ (char)-1,(char)17,(char)7, /* 9,-60 */
  /*  to  */ (char)-1,(char)-10,(char)5, /* 14,-70 */
  /* from */ (char)-1,(char)21,(char)-23, /* -9,-49 */
  /*  to  */ (char)-1,(char)-18,(char)2, /* -7,-67 */
  /* from */ (char)-1,(char)25,(char)-5, /* -12,-42 */
  /*  to  */ (char)0,(char)-21,(char)0, /* -12,-63 */
  /* from */ (char)-1,(char)46,(char)1, /* -11,-17 */
  /*  to  */ (char)-1,(char)-16,(char)-1, /* -12,-33 */
  /* from */ (char)-1,(char)47,(char)12, /* 0,14 */
  /*  to  */ (char)-1,(char)8,(char)2, /* 2,22 */
  /* from */ (char)-1,(char)9,(char)6, /* 8,31 */
  /*  to  */ (char)0,(char)12,(char)-3, /* 5,43 */
  /* from */ (char)-1,(char)-21,(char)3, /* 8,22 */
  /*  to  */ (char)-1,(char)8,(char)-2, /* 6,30 */
  /* from */ (char)-1,(char)-1,(char)10, /* 16,29 */
  /*  to  */ (char)0,(char)8,(char)-5, /* 11,37 */
  /* from */ (char)-1,(char)-54,(char)-22, /* -11,-17 */
  /*  to  */ (char)-1,(char)-16,(char)-1, /* -12,-33 */
  /* from */ (char)-1,(char)17,(char)43, /* 31,-16 */
  /*  to  */ (char)-1,(char)-26,(char)-14, /* 17,-42 */
  /* from */ (char)-1,(char)71,(char)-1, /* 16,29 */
  /*  to  */ (char)-1,(char)8,(char)-5, /* 11,37 */
  /* from */ (char)-1,(char)-90,(char)16, /* 27,-53 */
  /*  to  */ (char)-1,(char)-11,(char)1, /* 28,-64 */
  /* from */ (char)-1,(char)-5,(char)-22, /* 6,-69 */
  /*  to  */ (char)-1,(char)-6,(char)10, /* 16,-75 */
  /* from */ (char)-1,(char)89,(char)-16, /* 0,14 */
  /*  to  */ (char)-1,(char)8,(char)2, /* 2,22 */
  /* from */ (char)-1,(char)-95,(char)-41, /* -39,-73 */
  /*  to  */ (char)-1,(char)-10,(char)16, /* -23,-83 */
  /* from */ (char)-1,(char)66,(char)12, /* -11,-17 */
  /*  to  */ (char)-1,(char)-16,(char)-1, /* -12,-33 */
  /* from */ (char)-1,(char)-20,(char)39, /* 27,-53 */
  /*  to  */ (char)0,(char)-11,(char)1, /* 28,-64 */
  /* from */ (char)-1,(char)54,(char)34, /* 62,-10 */
  /*  to  */ (char)-1,(char)-25,(char)-18, /* 44,-35 */
  /* from */ (char)-1,(char)46,(char)8, /* 52,11 */
  /*  to  */ (char)0,(char)-13,(char)-15, /* 37,-2 */
  /* from */ (char)-1,(char)-14,(char)-6, /* 31,-16 */
  /*  to  */ (char)-1,(char)-26,(char)-14, /* 17,-42 */
  /* from */ (char)-1,(char)21,(char)33, /* 50,-21 */
  /*  to  */ (char)0,(char)-21,(char)-13, /* 37,-42 */
  /* from */ (char)-1,(char)27,(char)6, /* 43,-15 */
  /*  to  */ (char)-1,(char)-26,(char)-14, /* 29,-41 */
  /* from */ (char)-1,(char)27,(char)26, /* 55,-14 */
  /*  to  */ (char)-1,(char)-24,(char)-16, /* 39,-38 */
  /* from */ (char)-1,(char)17,(char)11, /* 50,-21 */
  /*  to  */ (char)-1,(char)-21,(char)-13, /* 37,-42 */
  /* from */ (char)-1,(char)-27,(char)-31, /* 6,-69 */
  /*  to  */ (char)0,(char)-6,(char)10, /* 16,-75 */
  /* from */ (char)-1,(char)-14,(char)-55, /* -39,-89 */
  /*  to  */ (char)-1,(char)-2,(char)22, /* -17,-91 */
  /* from */ (char)-1,(char)18,(char)-22, /* -39,-73 */
  /*  to  */ (char)0,(char)12,(char)24, /* -15,-61 */
  /* from */ (char)-1,(char)-12,(char)-24, /* -39,-73 */
  /*  to  */ (char)-1,(char)-10,(char)16, /* -23,-83 */
  /* from */ (char)-1,(char)-1,(char)-8, /* -31,-84 */
  /*  to  */ (char)0,(char)-3,(char)19, /* -12,-87 */
  /* from */ (char)-1,(char)1,(char)-24, /* -36,-86 */
  /*  to  */ (char)-1,(char)-3,(char)21, /* -15,-89 */
  /* from */ (char)-1,(char)9,(char)-22, /* -37,-80 */
  /*  to  */ (char)-1,(char)-6,(char)18, /* -19,-86 */
  /* from */ (char)-1,(char)2,(char)-12, /* -31,-84 */
  /*  to  */ (char)-1,(char)-3,(char)19, /* -12,-87 */
  1
};

static const char shipframe8[] IN_ROM = {
  /* from */ (char)0,(char)-63,(char)-12, /* -12,-63 */
  /*  to  */ (char)-1,(char)-12,(char)8, /* -4,-75 */
  /* from */ (char)-1,(char)33,(char)21, /* 17,-42 */
  /*  to  */ (char)-1,(char)-25,(char)-7, /* 10,-67 */
  /* from */ (char)-1,(char)32,(char)34, /* 44,-35 */
  /*  to  */ (char)-1,(char)-26,(char)-13, /* 31,-61 */
  /* from */ (char)-1,(char)59,(char)6, /* 37,-2 */
  /*  to  */ (char)-1,(char)-21,(char)-14, /* 23,-23 */
  /* from */ (char)-1,(char)60,(char)-12, /* 11,37 */
  /*  to  */ (char)-1,(char)4,(char)-8, /* 3,41 */
  /* from */ (char)-1,(char)-19,(char)-1, /* 2,22 */
  /*  to  */ (char)-1,(char)7,(char)-3, /* -1,29 */
  /* from */ (char)-1,(char)-90,(char)-14, /* -15,-61 */
  /*  to  */ (char)-1,(char)8,(char)19, /* 4,-53 */
  /* from */ (char)-1,(char)-38,(char)-21, /* -17,-91 */
  /*  to  */ (char)-1,(char)9,(char)24, /* 7,-82 */
  /* from */ (char)-1,(char)-1,(char)-30, /* -23,-83 */
  /*  to  */ (char)-1,(char)3,(char)20, /* -3,-80 */
  /* from */ (char)-1,(char)17,(char)-9, /* -12,-63 */
  /*  to  */ (char)-1,(char)-12,(char)9, /* -3,-75 */
  /* from */ (char)-1,(char)10,(char)-1, /* -4,-65 */
  /*  to  */ (char)0,(char)-9,(char)7, /* 3,-74 */
  /* from */ (char)-1,(char)19,(char)5, /* 8,-55 */
  /*  to  */ (char)-1,(char)-16,(char)1, /* 9,-71 */
  /* from */ (char)-1,(char)13,(char)15, /* 24,-58 */
  /*  to  */ (char)-1,(char)-11,(char)2, /* 26,-69 */
  /* from */ (char)-1,(char)1,(char)-9, /* 17,-68 */
  /*  to  */ (char)-1,(char)-4,(char)8, /* 25,-72 */
  /* from */ (char)-1,(char)7,(char)-29, /* -4,-65 */
  /*  to  */ (char)-1,(char)-9,(char)7, /* 3,-74 */
  /* from */ (char)-1,(char)7,(char)-10, /* -7,-67 */
  /*  to  */ (char)0,(char)-9,(char)10, /* 3,-76 */
  /* from */ (char)-1,(char)0,(char)-15, /* -12,-76 */
  /*  to  */ (char)-1,(char)-1,(char)15, /* 3,-77 */
  /* from */ (char)-1,(char)0,(char)-1, /* 2,-77 */
  /*  to  */ (char)-1,(char)1,(char)14, /* 16,-76 */
  /* from */ (char)-1,(char)6,(char)-2, /* 14,-70 */
  /*  to  */ (char)-1,(char)-4,(char)7, /* 21,-74 */
  /* from */ (char)-1,(char)7,(char)-28, /* -7,-67 */
  /*  to  */ (char)-1,(char)-9,(char)10, /* 3,-76 */
  /* from */ (char)-1,(char)13,(char)-15, /* -12,-63 */
  /*  to  */ (char)0,(char)-12,(char)8, /* -4,-75 */
  /* from */ (char)-1,(char)42,(char)-8, /* -12,-33 */
  /*  to  */ (char)-1,(char)-8,(char)3, /* -9,-41 */
  /* from */ (char)-1,(char)63,(char)11, /* 2,22 */
  /*  to  */ (char)-1,(char)7,(char)-3, /* -1,29 */
  /* from */ (char)-1,(char)14,(char)6, /* 5,43 */
  /*  to  */ (char)0,(char)7,(char)-7, /* -2,50 */
  /* from */ (char)-1,(char)-20,(char)8, /* 6,30 */
  /*  to  */ (char)-1,(char)4,(char)-5, /* 1,34 */
  /* from */ (char)-1,(char)3,(char)10, /* 11,37 */
  /*  to  */ (char)0,(char)4,(char)-8, /* 3,41 */
  /* from */ (char)-1,(char)-74,(char)-15, /* -12,-33 */
  /*  to  */ (char)-1,(char)-8,(char)3, /* -9,-41 */
  /* from */ (char)-1,(char)-1,(char)26, /* 17,-42 */
  /*  to  */ (char)-1,(char)-25,(char)-7, /* 10,-67 */
  /* from */ (char)-1,(char)104,(char)1, /* 11,37 */
  /*  to  */ (char)-1,(char)4,(char)-8, /* 3,41 */
  /* from */ (char)-1,(char)-105,(char)25, /* 28,-64 */
  /*  to  */ (char)-1,(char)-5,(char)5, /* 33,-69 */
  /* from */ (char)-1,(char)-6,(char)-17, /* 16,-75 */
  /*  to  */ (char)-1,(char)2,(char)12, /* 28,-73 */
  /* from */ (char)-1,(char)95,(char)-26, /* 2,22 */
  /*  to  */ (char)-1,(char)7,(char)-3, /* -1,29 */
  /* from */ (char)-1,(char)-112,(char)-22, /* -23,-83 */
  /*  to  */ (char)-1,(char)3,(char)20, /* -3,-80 */
  /* from */ (char)-1,(char)47,(char)-9, /* -12,-33 */
  /*  to  */ (char)-1,(char)-8,(char)3, /* -9,-41 */
  /* from */ (char)-1,(char)-23,(char)37, /* 28,-64 */
  /*  to  */ (char)0,(char)-5,(char)5, /* 33,-69 */
  /* from */ (char)-1,(char)34,(char)11, /* 44,-35 */
  /*  to  */ (char)-1,(char)-26,(char)-13, /* 31,-61 */
  /* from */ (char)-1,(char)59,(char)6, /* 37,-2 */
  /*  to  */ (char)0,(char)-21,(char)-14, /* 23,-23 */
  /* from */ (char)-1,(char)-19,(char)-6, /* 17,-42 */
  /*  to  */ (char)-1,(char)-25,(char)-7, /* 10,-67 */
  /* from */ (char)-1,(char)25,(char)27, /* 37,-42 */
  /*  to  */ (char)0,(char)-22,(char)-7, /* 30,-64 */
  /* from */ (char)-1,(char)23,(char)-1, /* 29,-41 */
  /*  to  */ (char)-1,(char)-23,(char)-5, /* 24,-64 */
  /* from */ (char)-1,(char)26,(char)15, /* 39,-38 */
  /*  to  */ (char)-1,(char)-24,(char)-10, /* 29,-62 */
  /* from */ (char)-1,(char)20,(char)8, /* 37,-42 */
  /*  to  */ (char)-1,(char)-22,(char)-7, /* 30,-64 */
  /* from */ (char)-1,(char)-11,(char)-14, /* 16,-75 */
  /*  to  */ (char)0,(char)2,(char)12, /* 28,-73 */
  /* from */ (char)-1,(char)-18,(char)-45, /* -17,-91 */
  /*  to  */ (char)-1,(char)9,(char)24, /* 7,-82 */
  /* from */ (char)-1,(char)21,(char)-22, /* -15,-61 */
  /*  to  */ (char)0,(char)8,(char)19, /* 4,-53 */
  /* from */ (char)-1,(char)-30,(char)-27, /* -23,-83 */
  /*  to  */ (char)-1,(char)3,(char)20, /* -3,-80 */
  /* from */ (char)-1,(char)-7,(char)-9, /* -12,-87 */
  /*  to  */ (char)0,(char)7,(char)20, /* 8,-80 */
  /* from */ (char)-1,(char)-9,(char)-23, /* -15,-89 */
  /*  to  */ (char)-1,(char)8,(char)22, /* 7,-81 */
  /* from */ (char)-1,(char)-5,(char)-26, /* -19,-86 */
  /*  to  */ (char)-1,(char)6,(char)19, /* 0,-80 */
  /* from */ (char)-1,(char)-7,(char)-12, /* -12,-87 */
  /*  to  */ (char)-1,(char)7,(char)20, /* 8,-80 */
  1
};

static const char shipframe9[] IN_ROM = {
  /* from */ (char)0,(char)-75,(char)-4, /* -4,-75 */
  /*  to  */ (char)-1,(char)-1,(char)14, /* 10,-76 */
  /* from */ (char)-1,(char)9,(char)0, /* 10,-67 */
  /*  to  */ (char)-1,(char)-2,(char)8, /* 18,-69 */
  /* from */ (char)-1,(char)8,(char)13, /* 31,-61 */
  /*  to  */ (char)-1,(char)-2,(char)-1, /* 30,-63 */
  /* from */ (char)-1,(char)40,(char)-7, /* 23,-23 */
  /*  to  */ (char)-1,(char)-15,(char)-2, /* 21,-38 */
  /* from */ (char)-1,(char)79,(char)-18, /* 3,41 */
  /*  to  */ (char)-1,(char)-3,(char)-11, /* -8,38 */
  /* from */ (char)-1,(char)-9,(char)7, /* -1,29 */
  /*  to  */ (char)-1,(char)1,(char)-6, /* -7,30 */
  /* from */ (char)-1,(char)-83,(char)11, /* 4,-53 */
  /*  to  */ (char)-1,(char)9,(char)9, /* 13,-44 */
  /* from */ (char)-1,(char)-38,(char)-6, /* 7,-82 */
  /*  to  */ (char)-1,(char)-1,(char)19, /* 26,-83 */
  /* from */ (char)-1,(char)3,(char)-29, /* -3,-80 */
  /*  to  */ (char)-1,(char)-4,(char)15, /* 12,-84 */
  /* from */ (char)-1,(char)9,(char)-15, /* -3,-75 */
  /*  to  */ (char)-1,(char)-1,(char)13, /* 10,-76 */
  /* from */ (char)-1,(char)2,(char)-7, /* 3,-74 */
  /*  to  */ (char)0,(char)-1,(char)12, /* 15,-75 */
  /* from */ (char)-1,(char)4,(char)-6, /* 9,-71 */
  /*  to  */ (char)-1,(char)0,(char)12, /* 21,-71 */
  /* from */ (char)-1,(char)2,(char)5, /* 26,-69 */
  /*  to  */ (char)-1,(char)2,(char)6, /* 32,-67 */
  /* from */ (char)-1,(char)-5,(char)-7, /* 25,-72 */
  /*  to  */ (char)-1,(char)4,(char)10, /* 35,-68 */
  /* from */ (char)-1,(char)-6,(char)-32, /* 3,-74 */
  /*  to  */ (char)-1,(char)-1,(char)12, /* 15,-75 */
  /* from */ (char)-1,(char)-1,(char)-12, /* 3,-76 */
  /*  to  */ (char)0,(char)1,(char)13, /* 16,-75 */
  /* from */ (char)-1,(char)-2,(char)-13, /* 3,-77 */
  /*  to  */ (char)-1,(char)-2,(char)14, /* 17,-79 */
  /* from */ (char)-1,(char)3,(char)-1, /* 16,-76 */
  /*  to  */ (char)-1,(char)3,(char)16, /* 32,-73 */
  /* from */ (char)-1,(char)-1,(char)-11, /* 21,-74 */
  /*  to  */ (char)-1,(char)5,(char)14, /* 35,-69 */
  /* from */ (char)-1,(char)-7,(char)-32, /* 3,-76 */
  /*  to  */ (char)-1,(char)1,(char)13, /* 16,-75 */
  /* from */ (char)-1,(char)0,(char)-20, /* -4,-75 */
  /*  to  */ (char)0,(char)-1,(char)14, /* 10,-76 */
  /* from */ (char)-1,(char)35,(char)-19, /* -9,-41 */
  /*  to  */ (char)-1,(char)-5,(char)8, /* -1,-46 */
  /* from */ (char)-1,(char)75,(char)0, /* -1,29 */
  /*  to  */ (char)-1,(char)1,(char)-6, /* -7,30 */
  /* from */ (char)-1,(char)20,(char)5, /* -2,50 */
  /*  to  */ (char)0,(char)-3,(char)-9, /* -11,47 */
  /* from */ (char)-1,(char)-13,(char)12, /* 1,34 */
  /*  to  */ (char)-1,(char)2,(char)-9, /* -8,36 */
  /* from */ (char)-1,(char)5,(char)11, /* 3,41 */
  /*  to  */ (char)0,(char)-3,(char)-11, /* -8,38 */
  /* from */ (char)-1,(char)-79,(char)-1, /* -9,-41 */
  /*  to  */ (char)-1,(char)-5,(char)8, /* -1,-46 */
  /* from */ (char)-1,(char)-21,(char)11, /* 10,-67 */
  /*  to  */ (char)-1,(char)-2,(char)8, /* 18,-69 */
  /* from */ (char)-1,(char)110,(char)-15, /* 3,41 */
  /*  to  */ (char)-1,(char)-3,(char)-11, /* -8,38 */
  /* from */ (char)-1,(char)-107,(char)41, /* 33,-69 */
  /*  to  */ (char)-1,(char)4,(char)8, /* 41,-65 */
  /* from */ (char)-1,(char)-8,(char)-13, /* 28,-73 */
  /*  to  */ (char)-1,(char)4,(char)13, /* 41,-69 */
  /* from */ (char)-1,(char)98,(char)-42, /* -1,29 */
  /*  to  */ (char)-1,(char)1,(char)-6, /* -7,30 */
  /* from */ (char)-1,(char)-110,(char)4, /* -3,-80 */
  /*  to  */ (char)-1,(char)-4,(char)15, /* 12,-84 */
  /* from */ (char)-1,(char)43,(char)-21, /* -9,-41 */
  /*  to  */ (char)-1,(char)-5,(char)8, /* -1,-46 */
  /* from */ (char)-1,(char)-23,(char)34, /* 33,-69 */
  /*  to  */ (char)0,(char)4,(char)8, /* 41,-65 */
  /* from */ (char)-1,(char)4,(char)-10, /* 31,-61 */
  /*  to  */ (char)-1,(char)-2,(char)-1, /* 30,-63 */
  /* from */ (char)-1,(char)40,(char)-7, /* 23,-23 */
  /*  to  */ (char)0,(char)-15,(char)-2, /* 21,-38 */
  /* from */ (char)-1,(char)-29,(char)-11, /* 10,-67 */
  /*  to  */ (char)-1,(char)-2,(char)8, /* 18,-69 */
  /* from */ (char)-1,(char)5,(char)12, /* 30,-64 */
  /*  to  */ (char)0,(char)0,(char)1, /* 31,-64 */
  /* from */ (char)-1,(char)0,(char)-7, /* 24,-64 */
  /*  to  */ (char)-1,(char)-1,(char)2, /* 26,-65 */
  /* from */ (char)-1,(char)3,(char)3, /* 29,-62 */
  /*  to  */ (char)-1,(char)-1,(char)1, /* 30,-63 */
  /* from */ (char)-1,(char)-1,(char)0, /* 30,-64 */
  /*  to  */ (char)-1,(char)0,(char)1, /* 31,-64 */
  /* from */ (char)-1,(char)-9,(char)-3, /* 28,-73 */
  /*  to  */ (char)0,(char)4,(char)13, /* 41,-69 */
  /* from */ (char)-1,(char)-13,(char)-34, /* 7,-82 */
  /*  to  */ (char)-1,(char)-1,(char)19, /* 26,-83 */
  /* from */ (char)-1,(char)30,(char)-22, /* 4,-53 */
  /*  to  */ (char)0,(char)9,(char)9, /* 13,-44 */
  /* from */ (char)-1,(char)-36,(char)-16, /* -3,-80 */
  /*  to  */ (char)-1,(char)-4,(char)15, /* 12,-84 */
  /* from */ (char)-1,(char)4,(char)-4, /* 8,-80 */
  /*  to  */ (char)0,(char)1,(char)20, /* 28,-79 */
  /* from */ (char)-1,(char)-2,(char)-21, /* 7,-81 */
  /*  to  */ (char)-1,(char)-1,(char)19, /* 26,-82 */
  /* from */ (char)-1,(char)2,(char)-26, /* 0,-80 */
  /*  to  */ (char)-1,(char)-3,(char)19, /* 19,-83 */
  /* from */ (char)-1,(char)3,(char)-11, /* 8,-80 */
  /*  to  */ (char)-1,(char)1,(char)20, /* 28,-79 */
  1
};

static const char shipframe10[] IN_ROM = {
  /* from */ (char)0,(char)-76,(char)10, /* 10,-76 */
  /*  to  */ (char)-1,(char)5,(char)14, /* 24,-71 */
  /* from */ (char)-1,(char)2,(char)-6, /* 18,-69 */
  /*  to  */ (char)-1,(char)20,(char)19, /* 37,-49 */
  /* from */ (char)-1,(char)-14,(char)-7, /* 30,-63 */
  /*  to  */ (char)-1,(char)23,(char)20, /* 50,-40 */
  /* from */ (char)-1,(char)2,(char)-29, /* 21,-38 */
  /*  to  */ (char)-1,(char)19,(char)14, /* 35,-19 */
  /* from */ (char)-1,(char)57,(char)-43, /* -8,38 */
  /*  to  */ (char)-1,(char)-6,(char)-6, /* -14,32 */
  /* from */ (char)-1,(char)-2,(char)7, /* -7,30 */
  /*  to  */ (char)-1,(char)-11,(char)-10, /* -17,19 */
  /* from */ (char)-1,(char)-63,(char)30, /* 13,-44 */
  /*  to  */ (char)-1,(char)-20,(char)-2, /* 11,-64 */
  /* from */ (char)-1,(char)-19,(char)15, /* 26,-83 */
  /*  to  */ (char)-1,(char)-14,(char)3, /* 29,-97 */
  /* from */ (char)-1,(char)13,(char)-17, /* 12,-84 */
  /*  to  */ (char)-1,(char)-8,(char)8, /* 20,-92 */
  /* from */ (char)-1,(char)16,(char)-10, /* 10,-76 */
  /*  to  */ (char)-1,(char)5,(char)15, /* 25,-71 */
  /* from */ (char)-1,(char)-4,(char)-10, /* 15,-75 */
  /*  to  */ (char)0,(char)8,(char)16, /* 31,-67 */
  /* from */ (char)-1,(char)-4,(char)-10, /* 21,-71 */
  /*  to  */ (char)-1,(char)14,(char)16, /* 37,-57 */
  /* from */ (char)-1,(char)-10,(char)-5, /* 32,-67 */
  /*  to  */ (char)-1,(char)15,(char)16, /* 48,-52 */
  /* from */ (char)-1,(char)-16,(char)-13, /* 35,-68 */
  /*  to  */ (char)-1,(char)9,(char)13, /* 48,-59 */
  /* from */ (char)-1,(char)-16,(char)-33, /* 15,-75 */
  /*  to  */ (char)-1,(char)8,(char)16, /* 31,-67 */
  /* from */ (char)-1,(char)-8,(char)-15, /* 16,-75 */
  /*  to  */ (char)0,(char)5,(char)14, /* 30,-70 */
  /* from */ (char)-1,(char)-9,(char)-13, /* 17,-79 */
  /*  to  */ (char)-1,(char)1,(char)11, /* 28,-78 */
  /* from */ (char)-1,(char)5,(char)4, /* 32,-73 */
  /*  to  */ (char)-1,(char)0,(char)8, /* 40,-73 */
  /* from */ (char)-1,(char)4,(char)-5, /* 35,-69 */
  /*  to  */ (char)-1,(char)7,(char)12, /* 47,-62 */
  /* from */ (char)-1,(char)-13,(char)-31, /* 16,-75 */
  /*  to  */ (char)-1,(char)5,(char)14, /* 30,-70 */
  /* from */ (char)-1,(char)-6,(char)-20, /* 10,-76 */
  /*  to  */ (char)0,(char)5,(char)14, /* 24,-71 */
  /* from */ (char)-1,(char)25,(char)-25, /* -1,-46 */
  /*  to  */ (char)-1,(char)1,(char)10, /* 9,-45 */
  /* from */ (char)-1,(char)75,(char)-16, /* -7,30 */
  /*  to  */ (char)-1,(char)-11,(char)-10, /* -17,19 */
  /* from */ (char)-1,(char)28,(char)6, /* -11,47 */
  /*  to  */ (char)0,(char)-12,(char)-11, /* -22,35 */
  /* from */ (char)-1,(char)1,(char)14, /* -8,36 */
  /*  to  */ (char)-1,(char)-11,(char)-7, /* -15,25 */
  /* from */ (char)-1,(char)13,(char)7, /* -8,38 */
  /*  to  */ (char)0,(char)-6,(char)-6, /* -14,32 */
  /* from */ (char)-1,(char)-78,(char)13, /* -1,-46 */
  /*  to  */ (char)-1,(char)1,(char)10, /* 9,-45 */
  /* from */ (char)-1,(char)-24,(char)9, /* 18,-69 */
  /*  to  */ (char)-1,(char)20,(char)19, /* 37,-49 */
  /* from */ (char)-1,(char)87,(char)-45, /* -8,38 */
  /*  to  */ (char)-1,(char)-6,(char)-6, /* -14,32 */
  /* from */ (char)-1,(char)-97,(char)55, /* 41,-65 */
  /*  to  */ (char)-1,(char)13,(char)13, /* 54,-52 */
  /* from */ (char)-1,(char)-17,(char)-13, /* 41,-69 */
  /*  to  */ (char)-1,(char)6,(char)10, /* 51,-63 */
  /* from */ (char)-1,(char)93,(char)-58, /* -7,30 */
  /*  to  */ (char)-1,(char)-11,(char)-10, /* -17,19 */
  /* from */ (char)-1,(char)-103,(char)29, /* 12,-84 */
  /*  to  */ (char)-1,(char)-8,(char)8, /* 20,-92 */
  /* from */ (char)-1,(char)46,(char)-21, /* -1,-46 */
  /*  to  */ (char)-1,(char)1,(char)10, /* 9,-45 */
  /* from */ (char)-1,(char)-20,(char)32, /* 41,-65 */
  /*  to  */ (char)0,(char)13,(char)13, /* 54,-52 */
  /* from */ (char)-1,(char)-11,(char)-24, /* 30,-63 */
  /*  to  */ (char)-1,(char)23,(char)20, /* 50,-40 */
  /* from */ (char)-1,(char)2,(char)-29, /* 21,-38 */
  /*  to  */ (char)0,(char)19,(char)14, /* 35,-19 */
  /* from */ (char)-1,(char)-50,(char)-17, /* 18,-69 */
  /*  to  */ (char)-1,(char)20,(char)19, /* 37,-49 */
  /* from */ (char)-1,(char)-15,(char)-6, /* 31,-64 */
  /*  to  */ (char)0,(char)20,(char)19, /* 50,-44 */
  /* from */ (char)-1,(char)-21,(char)-24, /* 26,-65 */
  /*  to  */ (char)-1,(char)20,(char)19, /* 45,-45 */
  /* from */ (char)-1,(char)-18,(char)-15, /* 30,-63 */
  /*  to  */ (char)-1,(char)21,(char)19, /* 49,-42 */
  /* from */ (char)-1,(char)-22,(char)-18, /* 31,-64 */
  /*  to  */ (char)-1,(char)20,(char)19, /* 50,-44 */
  /* from */ (char)-1,(char)-25,(char)-9, /* 41,-69 */
  /*  to  */ (char)0,(char)6,(char)10, /* 51,-63 */
  /* from */ (char)-1,(char)-20,(char)-25, /* 26,-83 */
  /*  to  */ (char)-1,(char)-14,(char)3, /* 29,-97 */
  /* from */ (char)-1,(char)53,(char)-16, /* 13,-44 */
  /*  to  */ (char)0,(char)-20,(char)-2, /* 11,-64 */
  /* from */ (char)-1,(char)-20,(char)1, /* 12,-84 */
  /*  to  */ (char)-1,(char)-8,(char)8, /* 20,-92 */
  /* from */ (char)-1,(char)13,(char)8, /* 28,-79 */
  /*  to  */ (char)0,(char)-10,(char)4, /* 32,-89 */
  /* from */ (char)-1,(char)7,(char)-6, /* 26,-82 */
  /*  to  */ (char)-1,(char)-11,(char)4, /* 30,-93 */
  /* from */ (char)-1,(char)10,(char)-11, /* 19,-83 */
  /*  to  */ (char)-1,(char)-8,(char)6, /* 25,-91 */
  /* from */ (char)-1,(char)12,(char)3, /* 28,-79 */
  /*  to  */ (char)-1,(char)-10,(char)4, /* 32,-89 */
  1
};

static const char shipframe11[] IN_ROM = {
  /* from */ (char)0,(char)-71,(char)24, /* 24,-71 */
  /*  to  */ (char)-1,(char)13,(char)17, /* 41,-58 */
  /* from */ (char)-1,(char)9,(char)-4, /* 37,-49 */
  /*  to  */ (char)-1,(char)20,(char)17, /* 54,-29 */
  /* from */ (char)-1,(char)-11,(char)-4, /* 50,-40 */
  /*  to  */ (char)-1,(char)27,(char)15, /* 65,-13 */
  /* from */ (char)-1,(char)-6,(char)-30, /* 35,-19 */
  /*  to  */ (char)-1,(char)21,(char)10, /* 45,2 */
  /* from */ (char)-1,(char)30,(char)-59, /* -14,32 */
  /*  to  */ (char)-1,(char)-4,(char)-9, /* -23,28 */
  /* from */ (char)-1,(char)-9,(char)6, /* -17,19 */
  /*  to  */ (char)-1,(char)-7,(char)-12, /* -29,12 */
  /* from */ (char)-1,(char)-76,(char)40, /* 11,-64 */
  /*  to  */ (char)-1,(char)-10,(char)2, /* 13,-74 */
  /* from */ (char)-1,(char)-23,(char)16, /* 29,-97 */
  /*  to  */ (char)-1,(char)-4,(char)9, /* 38,-101 */
  /* from */ (char)-1,(char)9,(char)-18, /* 20,-92 */
  /*  to  */ (char)-1,(char)3,(char)14, /* 34,-89 */
  /* from */ (char)-1,(char)18,(char)-9, /* 25,-71 */
  /*  to  */ (char)-1,(char)13,(char)16, /* 41,-58 */
  /* from */ (char)-1,(char)-9,(char)-10, /* 31,-67 */
  /*  to  */ (char)0,(char)14,(char)15, /* 46,-53 */
  /* from */ (char)-1,(char)-4,(char)-9, /* 37,-57 */
  /*  to  */ (char)-1,(char)16,(char)14, /* 51,-41 */
  /* from */ (char)-1,(char)-11,(char)-3, /* 48,-52 */
  /*  to  */ (char)-1,(char)17,(char)13, /* 61,-35 */
  /* from */ (char)-1,(char)-24,(char)-13, /* 48,-59 */
  /*  to  */ (char)-1,(char)13,(char)11, /* 59,-46 */
  /* from */ (char)-1,(char)-21,(char)-28, /* 31,-67 */
  /*  to  */ (char)-1,(char)14,(char)15, /* 46,-53 */
  /* from */ (char)-1,(char)-17,(char)-16, /* 30,-70 */
  /*  to  */ (char)0,(char)12,(char)14, /* 44,-58 */
  /* from */ (char)-1,(char)-20,(char)-16, /* 28,-78 */
  /*  to  */ (char)-1,(char)7,(char)14, /* 42,-71 */
  /* from */ (char)-1,(char)-2,(char)-2, /* 40,-73 */
  /*  to  */ (char)-1,(char)8,(char)12, /* 52,-65 */
  /* from */ (char)-1,(char)3,(char)-5, /* 47,-62 */
  /*  to  */ (char)-1,(char)12,(char)11, /* 58,-50 */
  /* from */ (char)-1,(char)-20,(char)-28, /* 30,-70 */
  /*  to  */ (char)-1,(char)12,(char)14, /* 44,-58 */
  /* from */ (char)-1,(char)-13,(char)-20, /* 24,-71 */
  /*  to  */ (char)0,(char)13,(char)17, /* 41,-58 */
  /* from */ (char)-1,(char)13,(char)-32, /* 9,-45 */
  /*  to  */ (char)-1,(char)5,(char)9, /* 18,-40 */
  /* from */ (char)-1,(char)59,(char)-35, /* -17,19 */
  /*  to  */ (char)-1,(char)-7,(char)-12, /* -29,12 */
  /* from */ (char)-1,(char)23,(char)7, /* -22,35 */
  /*  to  */ (char)0,(char)-9,(char)-15, /* -37,26 */
  /* from */ (char)-1,(char)-1,(char)22, /* -15,25 */
  /*  to  */ (char)-1,(char)-6,(char)-11, /* -26,19 */
  /* from */ (char)-1,(char)13,(char)12, /* -14,32 */
  /*  to  */ (char)0,(char)-4,(char)-9, /* -23,28 */
  /* from */ (char)-1,(char)-73,(char)32, /* 9,-45 */
  /*  to  */ (char)-1,(char)5,(char)9, /* 18,-40 */
  /* from */ (char)-1,(char)-9,(char)19, /* 37,-49 */
  /*  to  */ (char)-1,(char)20,(char)17, /* 54,-29 */
  /* from */ (char)-1,(char)61,(char)-68, /* -14,32 */
  /*  to  */ (char)-1,(char)-4,(char)-9, /* -23,28 */
  /* from */ (char)-1,(char)-80,(char)77, /* 54,-52 */
  /*  to  */ (char)-1,(char)15,(char)11, /* 65,-37 */
  /* from */ (char)-1,(char)-26,(char)-14, /* 51,-63 */
  /*  to  */ (char)-1,(char)8,(char)9, /* 60,-55 */
  /* from */ (char)-1,(char)74,(char)-77, /* -17,19 */
  /*  to  */ (char)-1,(char)-7,(char)-12, /* -29,12 */
  /* from */ (char)-1,(char)-104,(char)49, /* 20,-92 */
  /*  to  */ (char)-1,(char)3,(char)14, /* 34,-89 */
  /* from */ (char)-1,(char)44,(char)-25, /* 9,-45 */
  /*  to  */ (char)-1,(char)5,(char)9, /* 18,-40 */
  /* from */ (char)-1,(char)-12,(char)36, /* 54,-52 */
  /*  to  */ (char)0,(char)15,(char)11, /* 65,-37 */
  /* from */ (char)-1,(char)-3,(char)-15, /* 50,-40 */
  /*  to  */ (char)-1,(char)27,(char)15, /* 65,-13 */
  /* from */ (char)-1,(char)-6,(char)-30, /* 35,-19 */
  /*  to  */ (char)0,(char)21,(char)10, /* 45,2 */
  /* from */ (char)-1,(char)-51,(char)-8, /* 37,-49 */
  /*  to  */ (char)-1,(char)20,(char)17, /* 54,-29 */
  /* from */ (char)-1,(char)-15,(char)-4, /* 50,-44 */
  /*  to  */ (char)0,(char)24,(char)14, /* 64,-20 */
  /* from */ (char)-1,(char)-25,(char)-19, /* 45,-45 */
  /*  to  */ (char)-1,(char)23,(char)15, /* 60,-22 */
  /* from */ (char)-1,(char)-20,(char)-11, /* 49,-42 */
  /*  to  */ (char)-1,(char)26,(char)15, /* 64,-16 */
  /* from */ (char)-1,(char)-28,(char)-14, /* 50,-44 */
  /*  to  */ (char)-1,(char)24,(char)14, /* 64,-20 */
  /* from */ (char)-1,(char)-44,(char)-13, /* 51,-64 */
  /*  to  */ (char)0,(char)9,(char)9, /* 60,-55 */
  /* from */ (char)-1,(char)-42,(char)-31, /* 29,-97 */
  /*  to  */ (char)-1,(char)-4,(char)9, /* 38,-101 */
  /* from */ (char)-1,(char)37,(char)-27, /* 11,-64 */
  /*  to  */ (char)0,(char)-10,(char)2, /* 13,-74 */
  /* from */ (char)-1,(char)-18,(char)7, /* 20,-92 */
  /*  to  */ (char)-1,(char)3,(char)14, /* 34,-89 */
  /* from */ (char)-1,(char)0,(char)-2, /* 32,-89 */
  /*  to  */ (char)0,(char)-1,(char)10, /* 42,-90 */
  /* from */ (char)-1,(char)-3,(char)-12, /* 30,-93 */
  /*  to  */ (char)-1,(char)-3,(char)9, /* 39,-96 */
  /* from */ (char)-1,(char)5,(char)-14, /* 25,-91 */
  /*  to  */ (char)-1,(char)-1,(char)11, /* 36,-92 */
  /* from */ (char)-1,(char)3,(char)-4, /* 32,-89 */
  /*  to  */ (char)-1,(char)-1,(char)10, /* 42,-90 */
  1
};

static const char shipframe12[] IN_ROM = {
  /* from */ (char)0,(char)-58,(char)41, /* 41,-58 */
  /*  to  */ (char)-1,(char)16,(char)13, /* 54,-42 */
  /* from */ (char)-1,(char)13,(char)0, /* 54,-29 */
  /*  to  */ (char)-1,(char)26,(char)12, /* 66,-3 */
  /* from */ (char)-1,(char)-10,(char)-1, /* 65,-13 */
  /*  to  */ (char)-1,(char)28,(char)9, /* 74,15 */
  /* from */ (char)-1,(char)-13,(char)-29, /* 45,2 */
  /*  to  */ (char)-1,(char)20,(char)3, /* 48,22 */
  /* from */ (char)-1,(char)6,(char)-71, /* -23,28 */
  /*  to  */ (char)-1,(char)-10,(char)-9, /* -32,18 */
  /* from */ (char)-1,(char)-6,(char)3, /* -29,12 */
  /*  to  */ (char)-1,(char)-17,(char)-9, /* -38,-5 */
  /* from */ (char)-1,(char)-69,(char)51, /* 13,-74 */
  /*  to  */ (char)-1,(char)-6,(char)9, /* 22,-80 */
  /* from */ (char)-1,(char)-21,(char)16, /* 38,-101 */
  /*  to  */ (char)-1,(char)4,(char)13, /* 51,-97 */
  /* from */ (char)-1,(char)8,(char)-17, /* 34,-89 */
  /*  to  */ (char)-1,(char)9,(char)15, /* 49,-80 */
  /* from */ (char)-1,(char)22,(char)-8, /* 41,-58 */
  /*  to  */ (char)-1,(char)16,(char)13, /* 54,-42 */
  /* from */ (char)-1,(char)-11,(char)-8, /* 46,-53 */
  /*  to  */ (char)0,(char)16,(char)12, /* 58,-37 */
  /* from */ (char)-1,(char)-4,(char)-7, /* 51,-41 */
  /*  to  */ (char)-1,(char)21,(char)12, /* 63,-20 */
  /* from */ (char)-1,(char)-15,(char)-2, /* 61,-35 */
  /*  to  */ (char)-1,(char)19,(char)9, /* 70,-16 */
  /* from */ (char)-1,(char)-30,(char)-11, /* 59,-46 */
  /*  to  */ (char)-1,(char)15,(char)9, /* 68,-31 */
  /* from */ (char)-1,(char)-22,(char)-22, /* 46,-53 */
  /*  to  */ (char)-1,(char)16,(char)12, /* 58,-37 */
  /* from */ (char)-1,(char)-21,(char)-14, /* 44,-58 */
  /*  to  */ (char)0,(char)15,(char)13, /* 57,-43 */
  /* from */ (char)-1,(char)-28,(char)-15, /* 42,-71 */
  /*  to  */ (char)-1,(char)12,(char)13, /* 55,-59 */
  /* from */ (char)-1,(char)-6,(char)-3, /* 52,-65 */
  /*  to  */ (char)-1,(char)10,(char)10, /* 62,-55 */
  /* from */ (char)-1,(char)5,(char)-4, /* 58,-50 */
  /*  to  */ (char)-1,(char)13,(char)9, /* 67,-37 */
  /* from */ (char)-1,(char)-21,(char)-23, /* 44,-58 */
  /*  to  */ (char)-1,(char)15,(char)13, /* 57,-43 */
  /* from */ (char)-1,(char)-15,(char)-16, /* 41,-58 */
  /*  to  */ (char)0,(char)16,(char)13, /* 54,-42 */
  /* from */ (char)-1,(char)2,(char)-36, /* 18,-40 */
  /*  to  */ (char)-1,(char)10,(char)9, /* 27,-30 */
  /* from */ (char)-1,(char)42,(char)-56, /* -29,12 */
  /*  to  */ (char)-1,(char)-17,(char)-9, /* -38,-5 */
  /* from */ (char)-1,(char)31,(char)1, /* -37,26 */
  /*  to  */ (char)0,(char)-15,(char)-14, /* -51,11 */
  /* from */ (char)-1,(char)8,(char)25, /* -26,19 */
  /*  to  */ (char)-1,(char)-13,(char)-9, /* -35,6 */
  /* from */ (char)-1,(char)22,(char)12, /* -23,28 */
  /*  to  */ (char)0,(char)-10,(char)-9, /* -32,18 */
  /* from */ (char)-1,(char)-58,(char)50, /* 18,-40 */
  /*  to  */ (char)-1,(char)10,(char)9, /* 27,-30 */
  /* from */ (char)-1,(char)1,(char)27, /* 54,-29 */
  /*  to  */ (char)-1,(char)26,(char)12, /* 66,-3 */
  /* from */ (char)-1,(char)31,(char)-89, /* -23,28 */
  /*  to  */ (char)-1,(char)-10,(char)-9, /* -32,18 */
  /* from */ (char)-1,(char)-55,(char)97, /* 65,-37 */
  /*  to  */ (char)-1,(char)16,(char)8, /* 73,-21 */
  /* from */ (char)-1,(char)-34,(char)-13, /* 60,-55 */
  /*  to  */ (char)-1,(char)11,(char)8, /* 68,-44 */
  /* from */ (char)-1,(char)56,(char)-97, /* -29,12 */
  /*  to  */ (char)-1,(char)-17,(char)-9, /* -38,-5 */
  /* from */ (char)-1,(char)-84,(char)72, /* 34,-89 */
  /*  to  */ (char)-1,(char)9,(char)15, /* 49,-80 */
  /* from */ (char)-1,(char)40,(char)-31, /* 18,-40 */
  /*  to  */ (char)-1,(char)10,(char)9, /* 27,-30 */
  /* from */ (char)-1,(char)-7,(char)38, /* 65,-37 */
  /*  to  */ (char)0,(char)16,(char)8, /* 73,-21 */
  /* from */ (char)-1,(char)8,(char)-8, /* 65,-13 */
  /*  to  */ (char)-1,(char)28,(char)9, /* 74,15 */
  /* from */ (char)-1,(char)-13,(char)-29, /* 45,2 */
  /*  to  */ (char)0,(char)20,(char)3, /* 48,22 */
  /* from */ (char)-1,(char)-51,(char)6, /* 54,-29 */
  /*  to  */ (char)-1,(char)26,(char)12, /* 66,-3 */
  /* from */ (char)-1,(char)-17,(char)-2, /* 64,-20 */
  /*  to  */ (char)0,(char)25,(char)9, /* 73,5 */
  /* from */ (char)-1,(char)-27,(char)-13, /* 60,-22 */
  /*  to  */ (char)-1,(char)24,(char)9, /* 69,2 */
  /* from */ (char)-1,(char)-18,(char)-5, /* 64,-16 */
  /*  to  */ (char)-1,(char)26,(char)9, /* 73,10 */
  /* from */ (char)-1,(char)-30,(char)-9, /* 64,-20 */
  /*  to  */ (char)-1,(char)25,(char)9, /* 73,5 */
  /* from */ (char)-1,(char)-60,(char)-13, /* 60,-55 */
  /*  to  */ (char)0,(char)11,(char)8, /* 68,-44 */
  /* from */ (char)-1,(char)-57,(char)-30, /* 38,-101 */
  /*  to  */ (char)-1,(char)4,(char)13, /* 51,-97 */
  /* from */ (char)-1,(char)23,(char)-38, /* 13,-74 */
  /*  to  */ (char)0,(char)-6,(char)9, /* 22,-80 */
  /* from */ (char)-1,(char)-9,(char)12, /* 34,-89 */
  /*  to  */ (char)-1,(char)9,(char)15, /* 49,-80 */
  /* from */ (char)-1,(char)-10,(char)-7, /* 42,-90 */
  /*  to  */ (char)0,(char)6,(char)12, /* 54,-84 */
  /* from */ (char)-1,(char)-12,(char)-15, /* 39,-96 */
  /*  to  */ (char)-1,(char)6,(char)13, /* 52,-90 */
  /* from */ (char)-1,(char)-2,(char)-16, /* 36,-92 */
  /*  to  */ (char)-1,(char)8,(char)14, /* 50,-84 */
  /* from */ (char)-1,(char)-6,(char)-8, /* 42,-90 */
  /*  to  */ (char)-1,(char)6,(char)12, /* 54,-84 */
  1
};

static const char shipframe13[] IN_ROM = {
  /* from */ (char)0,(char)-42,(char)54, /* 54,-42 */
  /*  to  */ (char)-1,(char)22,(char)11, /* 65,-20 */
  /* from */ (char)-1,(char)17,(char)1, /* 66,-3 */
  /*  to  */ (char)-1,(char)26,(char)5, /* 71,23 */
  /* from */ (char)-1,(char)-8,(char)3, /* 74,15 */
  /*  to  */ (char)-1,(char)29,(char)2, /* 76,44 */
  /* from */ (char)-1,(char)-22,(char)-28, /* 48,22 */
  /*  to  */ (char)-1,(char)21,(char)-3, /* 45,43 */
  /* from */ (char)-1,(char)-25,(char)-77, /* -32,18 */
  /*  to  */ (char)-1,(char)-8,(char)-6, /* -38,10 */
  /* from */ (char)-1,(char)-15,(char)0, /* -38,-5 */
  /*  to  */ (char)-1,(char)-10,(char)-4, /* -42,-15 */
  /* from */ (char)-1,(char)-65,(char)64, /* 22,-80 */
  /*  to  */ (char)-1,(char)7,(char)10, /* 32,-73 */
  /* from */ (char)-1,(char)-24,(char)19, /* 51,-97 */
  /*  to  */ (char)-1,(char)13,(char)14, /* 65,-84 */
  /* from */ (char)-1,(char)4,(char)-16, /* 49,-80 */
  /*  to  */ (char)-1,(char)16,(char)14, /* 63,-64 */
  /* from */ (char)-1,(char)22,(char)-9, /* 54,-42 */
  /*  to  */ (char)-1,(char)22,(char)11, /* 65,-20 */
  /* from */ (char)-1,(char)-17,(char)-7, /* 58,-37 */
  /*  to  */ (char)0,(char)21,(char)9, /* 67,-16 */
  /* from */ (char)-1,(char)-4,(char)-4, /* 63,-20 */
  /*  to  */ (char)-1,(char)23,(char)7, /* 70,3 */
  /* from */ (char)-1,(char)-19,(char)0, /* 70,-16 */
  /*  to  */ (char)-1,(char)20,(char)4, /* 74,4 */
  /* from */ (char)-1,(char)-35,(char)-6, /* 68,-31 */
  /*  to  */ (char)-1,(char)18,(char)6, /* 74,-13 */
  /* from */ (char)-1,(char)-24,(char)-16, /* 58,-37 */
  /*  to  */ (char)-1,(char)21,(char)9, /* 67,-16 */
  /* from */ (char)-1,(char)-27,(char)-10, /* 57,-43 */
  /*  to  */ (char)0,(char)21,(char)10, /* 67,-22 */
  /* from */ (char)-1,(char)-37,(char)-12, /* 55,-59 */
  /*  to  */ (char)-1,(char)18,(char)11, /* 66,-41 */
  /* from */ (char)-1,(char)-14,(char)-4, /* 62,-55 */
  /*  to  */ (char)-1,(char)15,(char)8, /* 70,-40 */
  /* from */ (char)-1,(char)3,(char)-3, /* 67,-37 */
  /*  to  */ (char)-1,(char)17,(char)6, /* 73,-20 */
  /* from */ (char)-1,(char)-23,(char)-16, /* 57,-43 */
  /*  to  */ (char)-1,(char)21,(char)10, /* 67,-22 */
  /* from */ (char)-1,(char)-20,(char)-13, /* 54,-42 */
  /*  to  */ (char)0,(char)22,(char)11, /* 65,-20 */
  /* from */ (char)-1,(char)-10,(char)-38, /* 27,-30 */
  /*  to  */ (char)-1,(char)14,(char)8, /* 35,-16 */
  /* from */ (char)-1,(char)11,(char)-73, /* -38,-5 */
  /*  to  */ (char)-1,(char)-10,(char)-4, /* -42,-15 */
  /* from */ (char)-1,(char)26,(char)-9, /* -51,11 */
  /*  to  */ (char)0,(char)-11,(char)-8, /* -59,0 */
  /* from */ (char)-1,(char)6,(char)24, /* -35,6 */
  /*  to  */ (char)-1,(char)-9,(char)-5, /* -40,-3 */
  /* from */ (char)-1,(char)21,(char)8, /* -32,18 */
  /*  to  */ (char)0,(char)-8,(char)-6, /* -38,10 */
  /* from */ (char)-1,(char)-40,(char)65, /* 27,-30 */
  /*  to  */ (char)-1,(char)14,(char)8, /* 35,-16 */
  /* from */ (char)-1,(char)13,(char)31, /* 66,-3 */
  /*  to  */ (char)-1,(char)26,(char)5, /* 71,23 */
  /* from */ (char)-1,(char)-5,(char)-103, /* -32,18 */
  /*  to  */ (char)-1,(char)-8,(char)-6, /* -38,10 */
  /* from */ (char)-1,(char)-31,(char)111, /* 73,-21 */
  /*  to  */ (char)-1,(char)18,(char)3, /* 76,-3 */
  /* from */ (char)-1,(char)-41,(char)-8, /* 68,-44 */
  /*  to  */ (char)-1,(char)15,(char)6, /* 74,-29 */
  /* from */ (char)-1,(char)24,(char)-112, /* -38,-5 */
  /*  to  */ (char)-1,(char)-10,(char)-4, /* -42,-15 */
  /* from */ (char)-1,(char)-65,(char)91, /* 49,-80 */
  /*  to  */ (char)-1,(char)16,(char)14, /* 63,-64 */
  /* from */ (char)-1,(char)34,(char)-36, /* 27,-30 */
  /*  to  */ (char)-1,(char)14,(char)8, /* 35,-16 */
  /* from */ (char)-1,(char)-5,(char)38, /* 73,-21 */
  /*  to  */ (char)0,(char)18,(char)3, /* 76,-3 */
  /* from */ (char)-1,(char)18,(char)-2, /* 74,15 */
  /*  to  */ (char)-1,(char)29,(char)2, /* 76,44 */
  /* from */ (char)-1,(char)-22,(char)-28, /* 48,22 */
  /*  to  */ (char)0,(char)21,(char)-3, /* 45,43 */
  /* from */ (char)-1,(char)-46,(char)21, /* 66,-3 */
  /*  to  */ (char)-1,(char)26,(char)5, /* 71,23 */
  /* from */ (char)-1,(char)-18,(char)2, /* 73,5 */
  /*  to  */ (char)0,(char)27,(char)3, /* 76,32 */
  /* from */ (char)-1,(char)-30,(char)-7, /* 69,2 */
  /*  to  */ (char)-1,(char)28,(char)5, /* 74,30 */
  /* from */ (char)-1,(char)-20,(char)-1, /* 73,10 */
  /*  to  */ (char)-1,(char)27,(char)2, /* 75,37 */
  /* from */ (char)-1,(char)-32,(char)-2, /* 73,5 */
  /*  to  */ (char)-1,(char)27,(char)3, /* 76,32 */
  /* from */ (char)-1,(char)-76,(char)-8, /* 68,-44 */
  /*  to  */ (char)0,(char)15,(char)6, /* 74,-29 */
  /* from */ (char)-1,(char)-68,(char)-23, /* 51,-97 */
  /*  to  */ (char)-1,(char)13,(char)14, /* 65,-84 */
  /* from */ (char)-1,(char)4,(char)-43, /* 22,-80 */
  /*  to  */ (char)0,(char)7,(char)10, /* 32,-73 */
  /* from */ (char)-1,(char)-7,(char)17, /* 49,-80 */
  /*  to  */ (char)-1,(char)16,(char)14, /* 63,-64 */
  /* from */ (char)-1,(char)-20,(char)-9, /* 54,-84 */
  /*  to  */ (char)0,(char)14,(char)13, /* 67,-70 */
  /* from */ (char)-1,(char)-20,(char)-15, /* 52,-90 */
  /*  to  */ (char)-1,(char)13,(char)13, /* 65,-77 */
  /* from */ (char)-1,(char)-7,(char)-15, /* 50,-84 */
  /*  to  */ (char)-1,(char)15,(char)14, /* 64,-69 */
  /* from */ (char)-1,(char)-15,(char)-10, /* 54,-84 */
  /*  to  */ (char)-1,(char)14,(char)13, /* 67,-70 */
  1
};

static const char shipframe14[] IN_ROM = {
  /* from */ (char)0,(char)-20,(char)65, /* 65,-20 */
  /*  to  */ (char)-1,(char)20,(char)11, /* 76,0 */
  /* from */ (char)-1,(char)23,(char)-5, /* 71,23 */
  /*  to  */ (char)-1,(char)27,(char)6, /* 77,50 */
  /* from */ (char)-1,(char)-6,(char)-1, /* 76,44 */
  /*  to  */ (char)-1,(char)29,(char)5, /* 81,73 */
  /* from */ (char)-1,(char)-30,(char)-36, /* 45,43 */
  /*  to  */ (char)-1,(char)23,(char)-1, /* 44,66 */
  /* from */ (char)-1,(char)-56,(char)-82, /* -38,10 */
  /*  to  */ (char)-1,(char)5,(char)-6, /* -44,15 */
  /* from */ (char)-1,(char)-30,(char)2, /* -42,-15 */
  /*  to  */ (char)-1,(char)0,(char)-2, /* -44,-15 */
  /* from */ (char)-1,(char)-58,(char)76, /* 32,-73 */
  /*  to  */ (char)-1,(char)6,(char)12, /* 44,-67 */
  /* from */ (char)-1,(char)-17,(char)21, /* 65,-84 */
  /*  to  */ (char)-1,(char)11,(char)15, /* 80,-73 */
  /* from */ (char)-1,(char)9,(char)-17, /* 63,-64 */
  /*  to  */ (char)-1,(char)14,(char)14, /* 77,-50 */
  /* from */ (char)-1,(char)30,(char)-12, /* 65,-20 */
  /*  to  */ (char)-1,(char)20,(char)11, /* 76,0 */
  /* from */ (char)-1,(char)-16,(char)-9, /* 67,-16 */
  /*  to  */ (char)0,(char)19,(char)11, /* 78,3 */
  /* from */ (char)-1,(char)0,(char)-8, /* 70,3 */
  /*  to  */ (char)-1,(char)22,(char)8, /* 78,25 */
  /* from */ (char)-1,(char)-21,(char)-4, /* 74,4 */
  /*  to  */ (char)-1,(char)22,(char)7, /* 81,26 */
  /* from */ (char)-1,(char)-39,(char)-7, /* 74,-13 */
  /*  to  */ (char)-1,(char)16,(char)8, /* 82,3 */
  /* from */ (char)-1,(char)-19,(char)-15, /* 67,-16 */
  /*  to  */ (char)-1,(char)19,(char)11, /* 78,3 */
  /* from */ (char)-1,(char)-25,(char)-11, /* 67,-22 */
  /*  to  */ (char)0,(char)18,(char)11, /* 78,-4 */
  /* from */ (char)-1,(char)-37,(char)-12, /* 66,-41 */
  /*  to  */ (char)-1,(char)16,(char)12, /* 78,-25 */
  /* from */ (char)-1,(char)-15,(char)-8, /* 70,-40 */
  /*  to  */ (char)-1,(char)14,(char)11, /* 81,-26 */
  /* from */ (char)-1,(char)6,(char)-8, /* 73,-20 */
  /*  to  */ (char)-1,(char)16,(char)9, /* 82,-4 */
  /* from */ (char)-1,(char)-18,(char)-15, /* 67,-22 */
  /*  to  */ (char)-1,(char)18,(char)11, /* 78,-4 */
  /* from */ (char)-1,(char)-16,(char)-13, /* 65,-20 */
  /*  to  */ (char)0,(char)20,(char)11, /* 76,0 */
  /* from */ (char)-1,(char)-16,(char)-41, /* 35,-16 */
  /*  to  */ (char)-1,(char)16,(char)7, /* 42,0 */
  /* from */ (char)-1,(char)-15,(char)-84, /* -42,-15 */
  /*  to  */ (char)-1,(char)0,(char)-2, /* -44,-15 */
  /* from */ (char)-1,(char)15,(char)-15, /* -59,0 */
  /*  to  */ (char)0,(char)0,(char)-7, /* -66,0 */
  /* from */ (char)-1,(char)-3,(char)26, /* -40,-3 */
  /*  to  */ (char)-1,(char)3,(char)-4, /* -44,0 */
  /* from */ (char)-1,(char)10,(char)6, /* -38,10 */
  /*  to  */ (char)0,(char)5,(char)-6, /* -44,15 */
  /* from */ (char)-1,(char)-31,(char)79, /* 35,-16 */
  /*  to  */ (char)-1,(char)16,(char)7, /* 42,0 */
  /* from */ (char)-1,(char)23,(char)29, /* 71,23 */
  /*  to  */ (char)-1,(char)27,(char)6, /* 77,50 */
  /* from */ (char)-1,(char)-40,(char)-115, /* -38,10 */
  /*  to  */ (char)-1,(char)5,(char)-6, /* -44,15 */
  /* from */ (char)-1,(char)-18,(char)120, /* 76,-3 */
  /*  to  */ (char)-1,(char)18,(char)7, /* 83,15 */
  /* from */ (char)-1,(char)-44,(char)-9, /* 74,-29 */
  /*  to  */ (char)-1,(char)14,(char)9, /* 83,-15 */
  /* from */ (char)-1,(char)0,(char)-125, /* -42,-15 */
  /*  to  */ (char)-1,(char)0,(char)-2, /* -44,-15 */
  /* from */ (char)-1,(char)-49,(char)107, /* 63,-64 */
  /*  to  */ (char)-1,(char)14,(char)14, /* 77,-50 */
  /* from */ (char)-1,(char)34,(char)-42, /* 35,-16 */
  /*  to  */ (char)-1,(char)16,(char)7, /* 42,0 */
  /* from */ (char)-1,(char)-3,(char)34, /* 76,-3 */
  /*  to  */ (char)0,(char)18,(char)7, /* 83,15 */
  /* from */ (char)-1,(char)29,(char)-7, /* 76,44 */
  /*  to  */ (char)-1,(char)29,(char)5, /* 81,73 */
  /* from */ (char)-1,(char)-30,(char)-36, /* 45,43 */
  /*  to  */ (char)0,(char)23,(char)-1, /* 44,66 */
  /* from */ (char)-1,(char)-43,(char)27, /* 71,23 */
  /*  to  */ (char)-1,(char)27,(char)6, /* 77,50 */
  /* from */ (char)-1,(char)-18,(char)-1, /* 76,32 */
  /*  to  */ (char)0,(char)26,(char)5, /* 81,58 */
  /* from */ (char)-1,(char)-28,(char)-7, /* 74,30 */
  /*  to  */ (char)-1,(char)27,(char)5, /* 79,57 */
  /* from */ (char)-1,(char)-20,(char)-4, /* 75,37 */
  /*  to  */ (char)-1,(char)31,(char)6, /* 81,68 */
  /* from */ (char)-1,(char)-36,(char)-5, /* 76,32 */
  /*  to  */ (char)-1,(char)26,(char)5, /* 81,58 */
  /* from */ (char)-1,(char)-87,(char)-7, /* 74,-29 */
  /*  to  */ (char)0,(char)14,(char)9, /* 83,-15 */
  /* from */ (char)-1,(char)-69,(char)-18, /* 65,-84 */
  /*  to  */ (char)-1,(char)11,(char)15, /* 80,-73 */
  /* from */ (char)-1,(char)0,(char)-48, /* 32,-73 */
  /*  to  */ (char)0,(char)6,(char)12, /* 44,-67 */
  /* from */ (char)-1,(char)3,(char)19, /* 63,-64 */
  /*  to  */ (char)-1,(char)14,(char)14, /* 77,-50 */
  /* from */ (char)-1,(char)-19,(char)-10, /* 67,-69 */
  /*  to  */ (char)0,(char)11,(char)13, /* 80,-58 */
  /* from */ (char)-1,(char)-19,(char)-15, /* 65,-77 */
  /*  to  */ (char)-1,(char)8,(char)15, /* 80,-69 */
  /* from */ (char)-1,(char)0,(char)-16, /* 64,-69 */
  /*  to  */ (char)-1,(char)12,(char)15, /* 79,-57 */
  /* from */ (char)-1,(char)-13,(char)-12, /* 67,-70 */
  /*  to  */ (char)-1,(char)12,(char)13, /* 80,-58 */
  1
};

#include "recording.h"

#ifdef VECTREX
#pragma const_data end
#endif

static const char *framelist[15] IN_ROM = { // cmoc will not place in rom due to initialisers
       shipframe0,
       shipframe1,
       shipframe2,
       shipframe3,
       shipframe4,
       shipframe5,
       shipframe6,
       shipframe7,
       shipframe8,
       shipframe9,
       shipframe10,
       shipframe11,
       shipframe12,
       shipframe13,
       shipframe14,
};

// 16 bit maths, no floats.

static signed16 rseed;
static signed16 urandom16(void)
{
  // VECTREX HAS A BUILT-IN RANDOM THAT WE CAN USE!
  return (rseed = (rseed * 2053) + 13849);
}

static unsigned16 irand(signed16 max) {
  // returns int 0..max-1
  return (unsigned16)(urandom16() % max); // probably not very random, but this is a video game, not crypto
}

static signed16 pickrandom(signed16 low, signed16 high)
{
  // We'll just assume that high > low...
  return (signed16)irand(high-low+1)+low;  // pick a random integer between low and high inclusive.
}

#ifdef NOTYET
static unsigned8 numdigits(signed16 num)
{
  if (num < 0) return 1+numdigits(-num);
  if (num < 10) return 1U;
  if (num < 100) return 2U;
  if (num < 1000) return 3U;
  if (num < 10000) return 4U;
  return 5U;
}
#endif

static signed8 pxy[32];
static signed16 pxa[16], pya[16];

static signed16 star_x1(unsigned8 idx) {
  unsigned8 xtype = (idx>>2)&3, ytype = idx&3;

  idx = xtype ^ ytype; // four types of star trail ...
  if (idx == 0) { // left edge
    return -((signed16)127<<3);
  } else if (idx == 2) { // right edge
    return (signed16)127<<3;
  } else { // top or bottom edges
    return pickrandom(-127, 127)<<3;  // could use Scratch's random byte directly...
  }
}

static signed16 star_y1(unsigned8 idx) {
  unsigned8 xtype = (idx>>2)&3, ytype = idx&3;

  idx = xtype ^ ytype; // four types of star trail ...
  if (idx == 1) { // top edge
    return (signed16)127<<3; // right edge
  } else if (idx == 3) { // bottom edge
    return -((signed16)127<<3);
  } else {
    return pickrandom(-127, 127)<<3;
  }
}

static int /* boolean */ clipoff(signed16 x, signed16 y)
{
  return ( (-(signed16)0x20 <= x) && (x < (signed16)0x20) && (-(signed16)0x12 <= y) && (y < (signed16)0x12));
}

static void move_star(unsigned8 starno)
{
  signed16 x, y;

  x = pxa[starno];
  y = pya[starno];
  // coordinate space is 0,0 center!
  x = ((x<<5)-x)>>5;
  y = ((y<<5)-y)>>5;
  // move stars closer to the center, ie towards 0
  if (clipoff((signed16)x>>(signed16)4,(signed16)y>>(signed16)4)) {
    x = star_x1(starno); y = star_y1(starno); // reset when they disappear
  }
  pxa[starno] = x; pya[starno] = y;
}

static void plot_star(unsigned8 starno)
{
  signed16 brightx, brighty;
  if (pxa[starno] < 0) brightx = -pxa[starno]; else brightx = pxa[starno];
  brightx = (brightx>>3)&127;
  if (pya[starno] < 0) brighty = -pya[starno]; else brighty = pya[starno];
  brighty = (brighty>>3)&127;
  // take this out if we don't want fading over distance...
  // If we don't adjust individual star intensities, we can use
  // the 'dots()' procedure to draw them all at once...
  intensity((char)((brightx+brighty)>>1)); // good enough approximation for hypotenuse :-)
  dot((signed8)(pxa[starno]>>4),(signed8)(pya[starno]>>4));
  move((signed8)(-(pxa[starno]>>4)),(signed8)(-(pya[starno]>>4))); // correct back to 0,0 for next dot.
}

static void init_stars(void)
{
  unsigned8 i, star;

  for (star = 0U; star < 16U; star++) {
    pxa[star] = star_x1(star); pya[star] = star_y1(star);
    for (i=0; i < star*13; i++) move_star(star); // skew the starting points (QUICK HACK)
  }
}

static void stars(unsigned8 speed) // will always be centered on 0,0
{
  unsigned8 i, star;

  debugstr("stars");

  for (star = 0U; star < 16U; star++) {
    for (i = 0U; i < speed; i++) move_star(star);
  }


  for (star = 0U; star < 16U; star++) {
    if ((star & 15) == 0) {
      // control the frequency that the beam is reset!
      // Use a smaller mask if there is jitter if only
      // doing this once every 16 stars
      reset_beam();
      set_scale(0xD0);
      move(0, 0);
    }
    plot_star(star);
  }
return;
  reset_beam();
  set_scale(0x70);
  for (star = 0U; star < 16U; star++) {
    pxy[star+star] = (signed8)((signed16)(((signed16)pxa[(star+1)&15] >> (signed16)4) - ((signed16)pxa[star] >> (signed16)4)));
    pxy[star+star+1] = (signed8)((signed16)(((signed16)pya[(star+1)&15] >> (signed16)4) - ((signed16)pya[star] >> (signed16)4)));
  }
  move((signed8)((signed16)pxa[0]>>(signed16)4), (signed8)((signed16)pya[1]>>(signed16)4));
  dots(16, pxy);
}

/* Shields on the vectrex are sideways wrt the 'real' tailgunner */
static void draw_shields(unsigned8 scale)
{
  const signed8 *ptr = shieldvec;
  signed16 i;
  signed8 x1, y1;

  debugstr("draw_shields");

  reset_beam();
  set_scale(0x7f);
  move(0, 0);
  set_scale(scale);

  move(-72, 24); /* Should move the starting point into the array... */

  for (i = 0; i < 10; i++) {
    /* DRAW THE VECTOR */
    y1 = (*ptr++);
    x1 = (*ptr++);
    line(y1, x1); // Swapped x for y because of portrait mode Vectrex display
  }
}

static void Draw_crosshair(signed8 absx, signed8 absy, unsigned8 scale)
{
  signed8  x1, y1, x2, y2, dx, dy;
  const signed8 *ptr = crosshair_points;

  debugstr("Draw_crosshair");

  reset_beam();
  set_scale(0x7f);
  move(absx, absy);
  set_scale(scale);
  move(-0x20, -0x20);

  for (;;) {
    /* DRAW THE VECTOR */
    x1 = *ptr++; if (x1 == 0) break; 
    y1 = *ptr++; 
    x2 = *ptr++; 
    y2 = *ptr++; 

    dx = x2-x1; 
    dy = y2-y1;

    move(y1, x1); 
    line(dy, dx );
    move(-dy-y1,-dx-x1);
    //move(-y1, -x1);    
    /* back at relative 0,0 */
  }
}

/* 3d rendering */

// Remember that changing FOCAL_LENGTH changes the scale it is drawn at as well!
// Maybe not the proper name for this parameter?

//#define FOCAL_LENGTH_SHIFT 7 /* 128 */
//#define FOCAL_LENGTH_SHIFT 8 /* 256 */
#define FOCAL_LENGTH_SHIFT 9 /* 512 */
//#define FOCAL_LENGTH_SHIFT 10 /* 1024 */

#define FOCAL_LENGTH ((signed16)1<<(signed16)FOCAL_LENGTH_SHIFT)

static unsigned8 Credits;

static unsigned8 intro_rot;
static signed16 frame_number;
static unsigned8 global_flashing_intensity;

static signed16 HighScore;
static signed16 LastScore;
static signed16 Score;

#ifdef NOTYET
static signed16 UsingShields;
static signed16 Shields;
static signed16 shieldsegment;
static signed16 shieldsubticksleft;
#endif

static fp2_14 sinsymmetry(unsigned8 angle128)
{
  // '>', not '>=', is a special case for sin(x)=1.0
  if (angle128 > 64U) return sine[128-angle128]; else return sine[angle128];
}

static fp2_14 fp2_14_sin(signed16 angle256)
{
  if ((unsigned8)angle256 >= 128U) return -sinsymmetry((unsigned8)(angle256-128)&127); else return sinsymmetry((unsigned8)angle256&127);
}

static fp2_14 fp2_14_cos(signed16 angle256)
{
  return fp2_14_sin(angle256+64); // implicit &255 in these unsigned8 parameters
}

// The revolving intro placard...

static void drawtgintro(unsigned8 scale, unsigned8 bright) {
  signed16 i, from_x, from_y, to_x, to_y, objects, delta_fx, delta_tx;
  const signed8 *ptr;
  fp2_14 sin_rot, cos_rot;

  debugstr("drawtgintro");

  reset_beam();
  set_scale(scale);
  move(0,0); vectors_dumped = 0;
  intensity(bright);

  if ((intro_rot&128) == 0) { // are we looking at the front of the tumbling intro placard?
    objects = ((sizeof (tg_intro_placard) / sizeof (tg_intro_placard[0])) / 4); // yes - draw rectangles and text together
  } else {
    objects = 8; // no - just draw the rectangles
  }

  sin_rot = fp2_14_sin (intro_rot); cos_rot = fp2_14_cos (intro_rot);

  ptr = tg_intro_placard;
  for (i = 0; i < objects; i++) {
    from_y = *ptr++; // make coords center on 0,0 - this can be moved into the const array
    from_x = *ptr++;
    to_y = *ptr++;
    to_x = *ptr++;

    if (intro_rot != 64) { // optimise case where the placard is face-on.
      // y coords signed, in range -64:63  =>  0..127

      // These all need some tweaking to reduce inaccuracy due to lack of precision
      // - it is visibly wrong, but for now we will just live with it...
      delta_fx = (from_x * (from_y)) >> 8;
      delta_tx = (to_x * (to_y)) >> 8;
      from_x += (delta_fx * (cos_rot>>4)) >> 10;
      to_x += (delta_tx * (cos_rot>>4)) >> 10;
      from_y = (from_y * (sin_rot>>4)) >> 10;
      to_y = (to_y * (sin_rot>>4)) >> 10;
    }

    // I did implement a layer on top of move/line which optimised consecutive moves
    // and eliminated redundant ones where lines were adjacent, but for reasons that
    // are too long-winded to be worth going into, I've temporarily removed that code;
    // it can be found in the rcs logs if/when I add it back in.
 
    move((signed8)(from_y), (signed8)(from_x));
    line((signed8)(to_y-from_y), (signed8)(to_x-from_x));
    move((signed8)-(to_y), (signed8)-(to_x));

    vectors_dumped += 3;
    if (vectors_dumped > 12) {
      reset_beam(); // we are already at 0,0
      // not sure if these are needed?:
      set_scale(scale);
      move(0,0); vectors_dumped = 0;
      intensity(bright);
    }
  }
}

static void position_and_scale(signed8 absx, signed8 absy, signed16 scale)
{
  reset_beam();
  set_scale(0x7f);
  move_rel_XY(absx, absy);
  set_scale((unsigned8)scale);
}

static void show_digit(signed8 digit)
{
  // a binary chop or an array of procedures might be
  // faster depending on how switch is implemented, however
  // cmoc does not support arrays of procedure pointers.
  switch (digit) {
    case 0: SHOW_N0(); break;
    case 1: SHOW_N1(); break;
    case 2: SHOW_N2(); break;
    case 3: SHOW_N3(); break;
    case 4: SHOW_N4(); break;
    case 5: SHOW_N5(); break;
    case 6: SHOW_N6(); break;
    case 7: SHOW_N7(); break;
    case 8: SHOW_N8(); break;
    case 9: SHOW_N9(); break;
  }
}

static void SHOW_NUM(signed16 num, signed8 absx, signed8 absy, unsigned16 scale) { // left-aligned
  signed8 digit, zeroes;

  if (scale) position_and_scale(absx, absy, 0x20);

  // This replaces code that used divide by 10 and modulo 10.  Much faster.

  // handles full 16 bit range of -32768:32767  -  Uses negative numbers to avoid the issue of negating -32768

  if (num >= 0) num = -num; /* else MINUS(); */  // TO DO: add a font character for '-'.
  digit = 0;
  zeroes = 1; // CLRing is shorter
  // max 11 add/subtracts...
  if (num <= -20000) { num += 20000; digit += 2; zeroes = 0; }
  if (num <= -10000) { num += 10000; digit += 1; zeroes = 0; }
  if (!zeroes) show_digit(digit);
  digit = 0;
  if (num <= -8000) { num += 8000; digit += 8; zeroes = 0; } else if (num <= -4000) { num += 4000; digit += 4; zeroes = 0; }
  if (num <= -2000) { num += 2000; digit += 2; zeroes = 0; }
  if (num <= -1000) { num += 1000; digit += 1; zeroes = 0; }
  if (!zeroes) show_digit(digit);
  digit = 0;
  if (num <= -800) { num += 800; digit += 8; zeroes = 0; } else if (num <= -400) { num += 400; digit += 4; zeroes = 0; }
  if (num <= -200) { num += 200; digit += 2; zeroes = 0; }
  if (num <= -100) { num += 100; digit += 1; zeroes = 0; }
  if (!zeroes) show_digit(digit);
  digit = 0;
  if (num <= -80) { num += 80; digit += 8; zeroes = 0; } else if (num <= -40) { num += 40; digit += 4; zeroes = 0; }
  if (num <= -20) { num += 20; digit += 2; zeroes = 0; }
  if (num <= -10) { num += 10; digit += 1; zeroes = 0; }
  if (!zeroes) show_digit(digit);
  show_digit((signed8)-num);
}

static void Draw_lastscore(void)
{
  debugstr("Draw_lastscore");
  position_and_scale(-100,127,32);
  SHOW_SCORE();
  SHOW_NUM(LastScore, -98,113, 256);
}

static void Draw_highscore(void)
{
  debugstr("Draw_highscore");
  position_and_scale(40,127,32);
  SHOW_HIGH_SCORE();
  SHOW_NUM(HighScore, 52,113, 256);
}

static void Draw_insertcoin(void) // Not yet used
{
  debugstr("Draw_insertcoin");
  intensity(global_flashing_intensity<<1);
  position_and_scale(-40,-80,32);
  SHOW_INSERT_COIN();
}

static void Draw_start(void)
{
  debugstr("Draw_start");
  intensity(global_flashing_intensity<<1);
  position_and_scale(-39,-80,32);
  SHOW_PRESS_START();
}

static void Draw_credits(void)
{
  debugstr("Draw_credits");
  position_and_scale(-46,-30,48);
  SHOW_CREDITS();
  if (Credits > 9U) {
    SHOW_NUM(9, 0,0,0); // display any more than 9 as 9. (This is what many arcade machines did in real life)
  } else {
    SHOW_NUM(Credits, 0,0,0);
  }
}

static void Draw_ships_remaining(void)
{
  SHOW_NUM(10, 90,120, 64);
}

static void Draw_shields_remaining(void)
{
  SHOW_NUM(80, -5,127, 128);
}

static void Draw_score(void)
{
  SHOW_NUM(Score, -100,120, 64);
}

static void next_frame(void)
{
  debugstr("next_frame");
  wait_retrace();
  if ((frame_number & 16) == 0) {
    global_flashing_intensity += 4;
  } else {
    global_flashing_intensity -= 4;
  }
  frame_number++;
  //SHOW_NUM(Debug, -100,-100, 128);
}

int main(void) { // cmoc doesn't allow argc, argv
  signed16 frames;
  unsigned8 placard_scale, placard_brightness;

  vectors_dumped = 0;
  global_flashing_intensity = 0; frame_number = 0; // start flashing from off position
  frame_number = 0;
  init_stars();
  reset_beam();
  set_scale(0x7f);
  move(0,0);
  intensity(MAX_BRIGHTNESS);

  Debug = 0; Score = 72; HighScore = 2047; LastScore = 132; Credits = 0;
  for (;;) {
#ifdef NEVER
    debugstr("main loop");

    // approach banner:

    placard_scale = (unsigned8)((signed16)(0xFF-160));
    placard_brightness = (unsigned8)((signed16)(((signed16)MAX_BRIGHTNESS+(signed16)MAX_BRIGHTNESS-160)));
    intro_rot = 128;
    // start at 128 step by -2  end at 64 after one full revolution (128 + 32 steps)
    for (frames = 0; frames < 160; frames++) {
      next_frame();
      drawtgintro(placard_scale, placard_brightness>>1);
      if ((intro_rot&128) != 0) {
        next_frame();
        drawtgintro(placard_scale, placard_brightness>>1);
        next_frame();
        drawtgintro(placard_scale, placard_brightness>>1);
      }
      placard_scale++; placard_brightness++;
      //stars(1);
      intro_rot -= 2;
    }

    {signed16 i;
      for (i = 0; i < 2; i++) {
        placard_brightness = MAX_BRIGHTNESS&0xF8;
        while (placard_brightness != 0) {
          next_frame();
          drawtgintro(placard_scale, placard_brightness);
          //stars(1);
	  placard_brightness -= 8;
        }
        while (placard_brightness != (MAX_BRIGHTNESS&0xF8)) {
	  placard_brightness += 8;
          next_frame();
          drawtgintro(placard_scale, placard_brightness);
          //stars(1);
        }
      }
    }
    placard_brightness = MAX_BRIGHTNESS&0xF8;
    while (placard_brightness != 0) {
      next_frame();
      drawtgintro(placard_scale, placard_brightness);
      // unfortunately this does not affect stars: intensity(MAX_BRIGHTNESS-placard_brightness);
      stars(1);
      placard_brightness -= 8;
    }
    intensity(MAX_BRIGHTNESS);
    //stars:
    debugstr("wait for coins...");
    global_flashing_intensity = 0; frame_number = 0; // start flashing from off position
    for (frames = 0; frames < 255; frames++) {
      next_frame();
      stars(1);
      if (frames < 80) {
        Draw_insertcoin();
        intensity(MAX_BRIGHTNESS);
        Draw_lastscore();
        Draw_highscore();
      } else if (frames < 160) {
        if (frames == 80) Credits += 1;
        if (frames == 120) Credits += 1;
        Draw_start();
        intensity(MAX_BRIGHTNESS);
        Draw_credits();
        Draw_lastscore();
        Draw_highscore();
      } else {
        Draw_ships_remaining();
        Draw_shields_remaining();
        Draw_score();
        Draw_crosshair((signed8)(frames>>1), (signed8)(-(frames>>2)), 0x38);
      }
    }
    Credits = 0;
    // shields:
    debugstr("shields...");
    for (frames = 0; frames < 200; frames++) {
      next_frame();
      if ((frames > 120) && (frames < 200)) {
        intensity((unsigned8)pickrandom(64,127));
        if (pickrandom(0,31)) draw_shields(0xF0);
      } else {
        Draw_crosshair((signed8)(frames>>1), (signed8)(-(frames>>2)), 0x38); // don't allow shooting while shields are up...
      }
      stars(1);
      Draw_ships_remaining();
      Draw_shields_remaining();
      Draw_score();
      //Only in attract mode:
      //Draw_lastscore();
      //Draw_highscore();
    }
    // whoosh:
    debugstr("whoosh...");
    for (frames = 0; frames < 64; frames++) {
      next_frame();
      stars(3);
      intensity((unsigned8)(64-frames)*2);
      Draw_ships_remaining();
      Draw_shields_remaining();
      Draw_score();
      //Only in attract mode:
      //Draw_lastscore();
      //Draw_highscore();
    }
    //continue;
#endif
    // ELITE! (stolen)
    {signed16 i;
      for (i = 0; i < 15; i++) {
        for (frames = 0; frames < 20; frames++) {
          next_frame();
	  //          stars(1);
          reset_beam();
          set_scale(0xFF);
          move(0, 0);
          //displaylist((signed8 *)framelist[i]);
          displaylist((signed8 *)recording);
        }
      }
    }
  }
  return 0;
}
