1 /* Copyright (C) 1993, 1992 Nathan Sidwell */
2 /* RCS $Id: defmris.c,v 4.6 1995/12/14 13:53:27 nathan Exp $ */
3 #define EXTERN
4 #include "xmris.h"
5 #include "defmris.h"
6 #include "defcom.c"
7 /*{{{  unsigned char letter_mris[] =*/
8 unsigned char letter_mris[] =
9 {
10   LETTERPOS(1, 3),
11   LETTERPATH(0, 2), LETTERPATH(3, 1), LETTERPATH(1, 2), LETTERPATH(0, 2),
12   LETTERPATH(3, 1), LETTERPATH(1, 2), LETTERPATH(3, 1), LETTERPATH(0, 1),
13   LETTERPATH(3, 2), LETTERPATH(0, 1), LETTERPATH(2, 2), LETTERPATH(1, 1),
14   LETTERPATH(3, 1), LETTERPATH(1, 1), LETTERPATH(3, 2), LETTERPATH(0, 2),
15   LETTERPATH(1, 2), LETTERPATH(3, 3), LETTERPATH(0, 1), LETTERPATH(2, 2),
16   LETTERPATH(0, 1), LETTERPATH(3, 2),
17   LETTEREND
18 };
19 /*}}}*/
20 /*{{{  unsigned char letter_msit[] =*/
21 unsigned char letter_msit[] =
22 {
23   LETTERPOS(1, 3),
24   LETTERPATH(0, 2), LETTERPATH(3, 1), LETTERPATH(1, 2), LETTERPATH(0, 2),
25   LETTERPATH(3, 1), LETTERPATH(1, 2), LETTERPATH(3, 3), LETTERPATH(0, 1),
26   LETTERPATH(2, 2), LETTERPATH(0, 1), LETTERPATH(3, 3), LETTERPATH(1, 2),
27   LETTERPATH(0, 2), LETTERPATH(3, 3), LETTERPATH(2, 1), LETTERPATH(1, 2),
28   LETTEREND
29 };
30 /*}}}*/
31 /*{{{  static unsigned char letter_the[] =*/
32 static unsigned char letter_the[] =
33 {
34   LETTERPOS(2, 7),
35   LETTERPATH(0, 2), LETTERPATH(2, 1), LETTERPATH(3, 3), LETTERPATH(1, 2),
36   LETTERPATH(0, 1), LETTERPATH(3, 2), LETTERPATH(0, 1), LETTERPATH(1, 2),
37   LETTERPATH(3, 3), LETTERPATH(2, 2), LETTERPATH(0, 1), LETTERPATH(3, 2),
38   LETTERPATH(2, 2), LETTERPATH(0, 1), LETTERPATH(3, 2),
39   LETTEREND
40 };
41 /*}}}*/
42 /*{{{  static unsigned char letter_game[] =*/
43 static unsigned char letter_game[] =
44 {
45   LETTERPOS(2, 9),
46   LETTERPATH(2, 2), LETTERPATH(1, 2), LETTERPATH(3, 2), LETTERPATH(0, 1),
47   LETTERPATH(2, 1), LETTERPATH(3, 1), LETTERPATH(1, 1), LETTERPATH(3, 1),
48   LETTERPATH(0, 1), LETTERPATH(3, 2), LETTERPATH(0, 1), LETTERPATH(2, 2),
49   LETTERPATH(1, 1), LETTERPATH(3, 2), LETTERPATH(1, 1), LETTERPATH(3, 1),
50   LETTERPATH(0, 2), LETTERPATH(3, 1), LETTERPATH(1, 2), LETTERPATH(0, 2),
51   LETTERPATH(3, 1), LETTERPATH(1, 2), LETTERPATH(3, 3), LETTERPATH(2, 2),
52   LETTERPATH(0, 1), LETTERPATH(3, 2), LETTERPATH(2, 2), LETTERPATH(0, 1),
53   LETTERPATH(3, 2),
54   LETTEREND
55 };
56 /*}}}*/
57 /*{{{  extern COORD CONST she_hold[16] =*/
58 /*{{{  held ball offsets*/
59 #define SHE_RIGHT1_BALL_X   (splyrw1_x_hot - CELL_WIDTH / 2)
60 #define SHE_RIGHT1_BALL_Y   (splyrw1_y_hot - CELL_HEIGHT / 2)
61 #define SHE_UP1_BALL_X      (splyrw1_y_hot - CELL_WIDTH / 2)
62 #define SHE_UP1_BALL_Y      (splyrw1_x_hot - CELL_HEIGHT / 2)
63 #define SHE_RIGHT2_BALL_X   (splyrw2_x_hot - CELL_WIDTH / 2)
64 #define SHE_RIGHT2_BALL_Y   (splyrw2_y_hot - CELL_HEIGHT / 2)
65 #define SHE_UP2_BALL_X      (splyrw2_y_hot - CELL_WIDTH / 2)
66 #define SHE_UP2_BALL_Y      (splyrw2_x_hot - CELL_HEIGHT / 2)
67 #define SHE_PUSH1_BALL_X    (splyrs1_x_hot - CELL_WIDTH / 2)
68 #define SHE_PUSH1_BALL_Y    (splyrs1_y_hot - CELL_HEIGHT / 2)
69 #define SHE_PUSH2_BALL_X    (splyrs2_x_hot - CELL_WIDTH / 2)
70 #define SHE_PUSH2_BALL_Y    (splyrs2_y_hot - CELL_HEIGHT / 2)
71 /*}}}*/
72 COORD CONST she_hold[16] =
73 {
74  {-SHE_UP1_BALL_X, -SHE_UP1_BALL_Y},
75  {-SHE_UP2_BALL_X, -SHE_UP2_BALL_Y},
76  { SHE_UP1_BALL_X,  SHE_UP1_BALL_Y},
77  { SHE_UP2_BALL_X,  SHE_UP2_BALL_Y},
78  {-SHE_RIGHT1_BALL_X, SHE_RIGHT1_BALL_Y},
79  {-SHE_RIGHT2_BALL_X, SHE_RIGHT2_BALL_Y},
80  { SHE_RIGHT1_BALL_X, SHE_RIGHT1_BALL_Y},
81  { SHE_RIGHT2_BALL_X, SHE_RIGHT2_BALL_Y},
82  { SHE_UP1_BALL_X, -SHE_UP1_BALL_Y},
83  { SHE_UP2_BALL_X, -SHE_UP2_BALL_Y},
84  {-SHE_UP1_BALL_X,  SHE_UP1_BALL_Y},
85  {-SHE_UP2_BALL_X,  SHE_UP2_BALL_Y},
86  {-SHE_PUSH1_BALL_X, SHE_PUSH1_BALL_Y},
87  {-SHE_PUSH2_BALL_X, SHE_PUSH2_BALL_Y},
88  { SHE_PUSH1_BALL_X, SHE_PUSH1_BALL_Y},
89  { SHE_PUSH2_BALL_X, SHE_PUSH2_BALL_Y},
90 };
91 /*}}}*/
92 /*{{{  APPLE_SIZE CONST apple_sizes[7] =*/
93 APPLE_SIZE CONST apple_sizes[6] =
94   {
95     {{CELL_WIDTH, CELL_HEIGHT}, {0, 0}},
96     {{CELL_WIDTH, CELL_HEIGHT}, {0, 0}},
97     {{CELL_WIDTH, CELL_HEIGHT}, {0, 0}},
98     {{CELL_WIDTH, CELL_HEIGHT}, {0, 0}},
99     {{DECAY_WIDTH, DECAY_HEIGHT},
100 	  {(CELL_WIDTH - DECAY_WIDTH) / 2, CELL_HEIGHT - DECAY_HEIGHT}},
101     {{ROT_WIDTH, ROT_HEIGHT},
102 	  {(CELL_WIDTH - ROT_WIDTH) / 2, CELL_HEIGHT - ROT_HEIGHT}},
103   };
104 /*}}}*/
105 /*{{{  COORD ball_hold[16] =*/
106 /*{{{  held ball offsets*/
107 #define HE_RIGHT1_BALL_X   (hplyrw1_x_hot - CELL_WIDTH / 2)
108 #define HE_RIGHT1_BALL_Y   (hplyrw1_y_hot - CELL_HEIGHT / 2)
109 #define HE_UP1_BALL_X      (hplyrw1_y_hot - CELL_WIDTH / 2)
110 #define HE_UP1_BALL_Y      (hplyrw1_x_hot - CELL_HEIGHT / 2)
111 #define HE_RIGHT2_BALL_X   (hplyrw2_x_hot - CELL_WIDTH / 2)
112 #define HE_RIGHT2_BALL_Y   (hplyrw2_y_hot - CELL_HEIGHT / 2)
113 #define HE_UP2_BALL_X      (hplyrw2_y_hot - CELL_WIDTH / 2)
114 #define HE_UP2_BALL_Y      (hplyrw2_x_hot - CELL_HEIGHT / 2)
115 #define HE_PUSH1_BALL_X    (hplyrs1_x_hot - CELL_WIDTH / 2)
116 #define HE_PUSH1_BALL_Y    (hplyrs1_y_hot - CELL_HEIGHT / 2)
117 #define HE_PUSH2_BALL_X    (hplyrs2_x_hot - CELL_WIDTH / 2)
118 #define HE_PUSH2_BALL_Y    (hplyrs2_y_hot - CELL_HEIGHT / 2)
119 /*}}}*/
120 COORD ball_hold[16] =
121 {
122  {-HE_UP1_BALL_X, -HE_UP1_BALL_Y},
123  {-HE_UP2_BALL_X, -HE_UP2_BALL_Y},
124  { HE_UP1_BALL_X,  HE_UP1_BALL_Y},
125  { HE_UP2_BALL_X,  HE_UP2_BALL_Y},
126  {-HE_RIGHT1_BALL_X, HE_RIGHT1_BALL_Y},
127  {-HE_RIGHT2_BALL_X, HE_RIGHT2_BALL_Y},
128  { HE_RIGHT1_BALL_X, HE_RIGHT1_BALL_Y},
129  { HE_RIGHT2_BALL_X, HE_RIGHT2_BALL_Y},
130  { HE_UP1_BALL_X, -HE_UP1_BALL_Y},
131  { HE_UP2_BALL_X, -HE_UP2_BALL_Y},
132  {-HE_UP1_BALL_X,  HE_UP1_BALL_Y},
133  {-HE_UP2_BALL_X,  HE_UP2_BALL_Y},
134  {-HE_PUSH1_BALL_X, HE_PUSH1_BALL_Y},
135  {-HE_PUSH2_BALL_X, HE_PUSH2_BALL_Y},
136  { HE_PUSH1_BALL_X, HE_PUSH1_BALL_Y},
137  { HE_PUSH2_BALL_X, HE_PUSH2_BALL_Y},
138 };
139 /*}}}*/
140 /*{{{  COORD CONST ball_throw[8] =*/
141 COORD CONST ball_throw[8] =
142 {
143   {-GAP_WIDTH / 2, -(CELL_HEIGHT + GAP_HEIGHT) / 2},
144   {GAP_WIDTH / 2, (CELL_HEIGHT + GAP_HEIGHT) / 2},
145   {-(CELL_WIDTH + GAP_WIDTH) / 2, GAP_HEIGHT / 2},
146   {(CELL_WIDTH + GAP_WIDTH) / 2, GAP_HEIGHT / 2},
147   {GAP_WIDTH / 2, -(CELL_HEIGHT + GAP_HEIGHT) / 2},
148   {-GAP_WIDTH / 2, (CELL_HEIGHT + GAP_HEIGHT) / 2},
149   {-(CELL_WIDTH + GAP_WIDTH) / 2, GAP_HEIGHT / 2},
150   {(CELL_WIDTH + GAP_WIDTH) / 2, GAP_HEIGHT / 2},
151 };
152 /*}}}*/
153 unsigned CONST ball_dir[8] = {0, 1, 2, 1, 3, 2, 2, 1};
154 /*{{{  unsigned CONST ball_returns[BALL_RETURNS] =*/
155 #if BALL_RETURNS != 3
156   #error BALL_RETURNS != 3
157 #endif /* BALL_RETURNS */
158 unsigned CONST ball_returns[BALL_RETURNS] =
159   {FRAMES_PER_SECOND * 3 / 2, FRAMES_PER_SECOND * 7 / 2,
160     FRAMES_PER_SECOND * 11 / 2};
161 /*}}}*/
162 /*{{{  unsigned CONST player_dies[8] =*/
163 unsigned CONST player_dies[8] =
164   {
165     3, 5, 8, 4,
166     2, 1, 8, 0,
167   };
168 /*}}}*/
169 /*{{{  unsigned CONST squish_scores[SQUISH_SCORES] =*/
170 #if SQUISH_SCORES != 7
171   #error SQUISH_SCORES != 7
172 #endif /* SQUISH_SCORES */
173 unsigned CONST squish_scores[SQUISH_SCORES] =
174 {
175   0,
176   1000 / SCORE_ROUND,
177   2000 / SCORE_ROUND,
178   4000 / SCORE_ROUND,
179   6000 / SCORE_ROUND,
180   8000 / SCORE_ROUND,
181   9900 / SCORE_ROUND
182 };
183 /*}}}*/
184 /*{{{  TITLE title_text[] =*/
185 TITLE title_text[] =
186   {
187 #if __STDC__
188     {XMRISVERSION " " DATE},
189 #else
190     {"%s %s"},
191 #endif /* __STDC__ */
192     {"Left - %s",         2},
193     {"Right - %s",        3},
194     {"Up - %s",           0},
195     {"Down - %s",         1},
196     {"Throw - %s",        KEY_THROW},
197     {"Pause - %s",        KEY_PAUSE},
198     {"Quit - %s",         KEY_QUIT},
199     {"Iconize - %s",      KEY_ICONIZE},
200     {"Keyboard - %s",     KEY_KEYBOARD},
201     {"Press %s to start", KEY_THROW},
202     {""},
203     {COPYRIGHT},
204     {"Sprites also by Stefan Gustavson"},
205     {NULL}
206   };
207 /*}}}*/
208 /*{{{  unsigned char CONST *lettering_game[] =*/
209 unsigned char CONST *lettering_game[] =
210 {
211   letter_mris,
212   letter_the,
213   letter_game,
214   NULL
215 };
216 /*}}}*/
217 unsigned char CONST **lettering = lettering_game;
218