/
SolarSystem23.h
259 lines (246 loc) · 9.98 KB
/
SolarSystem23.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
#define LAMP_SPINNER_1000 0
#define LAMP_SUN_SPECIAL 1
#define LAMP_GALAXY_TURNAROUND_Y 2
#define LAMP_GALAXY_TURNAROUND_X 3
#define LAMP_GALAXY_TURNAROUND_A2 4
#define LAMP_GALAXY_TURNAROUND_L 5
#define LAMP_GALAXY_TURNAROUND_A1 6
#define LAMP_GALAXY_TURNAROUND_G 7
#define LAMP_RIGHT_OUTLANE 8
#define LAMP_LEFT_OUTLANE 9
#define LAMP_RIGHT_INLANE_Y 10
#define LAMP_LEFT_INLANE_X 11
#define LAMP_ROLLOVER_A 12
#define LAMP_TOPLANE_L 13
#define LAMP_TOPLANE_A 14
#define LAMP_TOPLANE_G 15
#define LAMP_PLUTO 16
#define LAMP_NEPTUNE 17
#define LAMP_URANUS 18
#define LAMP_SATURN 19
#define LAMP_JUPITER 20
#define LAMP_MARS 21
#define LAMP_VENUS 22
#define LAMP_MERCURY 23
#define LAMP_BONUS_40 24
#define LAMP_BONUS_30 25
#define LAMP_BONUS_20 26
#define LAMP_BONUS_10 27
#define LAMP_BONUS_8 28
#define LAMP_BONUS_6 29
#define LAMP_BONUS_4 30
#define LAMP_BONUS_2 31
#define LAMP_RIGHT_EXTRABALL 32
#define LAMP_LEFT_EXTRABALL 33
#define LAMP_RIGHT_SPECIAL 34
#define LAMP_LEFT_SPECIAL 35
#define LAMP_BONUS_5X 36
#define LAMP_BONUS_4X 37
#define LAMP_BONUS_3X 38
#define LAMP_BONUS_2X 39
#define LAMP_SHOOT_AGAIN 40
#define LAMP_SPOT_TARGET_INLANES 41
#define LAMP_10X_SCORE_WHEN_LIT 42
#define LAMP_SAUCER_10K 43
#define LAMP_SAUCER_8K 44
#define LAMP_SAUCER_6K 45
#define LAMP_SAUCER_4K 46
#define LAMP_SAUCER_2K 47
#define LAMP_HEAD_HIGH_SCORE 48
#define LAMP_HEAD_GAME_OVER 50
#define LAMP_HEAD_TILT 51
#define LAMP_HEAD_MATCH 59
#define SW_COIN_1 0
#define SW_COIN_2 1
#define SW_COIN_3 2
#define SW_RED_DROP_TARGET 3
#define SW_SPINNER 4
#define SW_CREDIT_RESET 5
#define SW_TILT 6
#define SW_SLAM 7
#define SW_BLACK_DROP_TARGET 8
#define SW_YELLOW_DROP_TARGET 9
#define SW_BLUE_DROP_TARGET 10
#define SW_UPPER_POP 11
#define SW_LOWER_RIGHT_POP 12
#define SW_LOWER_LEFT_POP 13
#define SW_RIGHT_SLING 14
#define SW_LEFT_SLING 15
#define SW_CENTER_ROLLOVER 17
#define SW_RIGHT_INLANE 18
#define SW_RIGHT_MIDLANE 19
#define SW_LEFT_INLANE 20
#define SW_LEFT_MIDLANE 21
#define SW_RIGHT_OUTLANE_ROLLOVER 22
#define SW_LEFT_OUTLANE_ROLLOVER 23
#define SW_BLUE_STANDUP 25
#define SW_YELLOW_STANDUP 28
#define SW_BLACK_STANDUP 29
#define SW_OUTHOLE 32
#define SW_GALAXY_TURNAROUND 34
#define SW_LEFT_TOPLANE 35
#define SW_MID_TOPLANE 36
#define SW_RIGHT_TOPLANE 37
#define SW_A2_ROLLOVER 38
#define SW_SAUCER 39
#define SOL_RIGHT_SLING 0
#define SOL_LEFT_SLING 1
#define SOL_UPPER_POP 2
#define SOL_DROP_TARGET_RESET 3
#define SOL_GALAXY_KICKER 4
#define SOL_KNOCKER 5
#define SOL_LOWER_RIGHT_POP 6
#define SOL_SAUCER 7
#define SOL_RED_DROP_TARGET 8
#define SOL_BLUE_DROP_TARGET 9
#define SOL_OUTHOLE 10
#define SOL_LOWER_LEFT_POP 11
#define SOL_YELLOW_DROP_TARGET 12
#define SOL_BLACK_DROP_TARGET 13
#define SOLCONT_GENERAL_ILLUMINATION 0x10
//#define SOL_NONE 15
#define NUM_SWITCHES_WITH_TRIGGERS 5
#define NUM_PRIORITY_SWITCHES_WITH_TRIGGERS 5
struct PlayfieldAndCabinetSwitch SolenoidAssociatedSwitches[] = {
{ SW_RIGHT_SLING, SOL_RIGHT_SLING, 4},
{ SW_LEFT_SLING, SOL_LEFT_SLING, 4},
{ SW_UPPER_POP, SOL_UPPER_POP, 3},
{ SW_LOWER_RIGHT_POP, SOL_LOWER_RIGHT_POP, 3},
{ SW_LOWER_LEFT_POP, SOL_LOWER_LEFT_POP, 3}
};
#define LAMP_ANIMATION_STEPS 16
byte LampAnimations[7][LAMP_ANIMATION_STEPS][8] = {
// Axial (radar) sweep
{
{0x00, 0x05, 0x00, 0x18, 0x01, 0x02, 0x00, 0x00},
{0x00, 0x05, 0x00, 0x18, 0x40, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x08, 0x10, 0x01, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x08, 0x20, 0x01, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x08, 0xA0, 0x00, 0x00, 0x00},
{0x00, 0x08, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00},
{0x00, 0x0A, 0x00, 0x88, 0x02, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x48, 0x0A, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00},
{0xFD, 0x00, 0xE0, 0x0A, 0x00, 0x18, 0x00, 0x00},
{0x00, 0xC0, 0x30, 0x0A, 0x00, 0xE4, 0x00, 0x00},
{0x02, 0x30, 0x0F, 0x09, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x02, 0x29, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 0x00}
},
// Radilal (center out) sweep
{
{0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0xF7, 0xC0, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0xF7, 0xF0, 0x00, 0x00, 0x00},
{0x00, 0x0C, 0x38, 0x00, 0x3B, 0x01, 0x00, 0x00},
{0x02, 0x0C, 0xEC, 0x00, 0x0D, 0x03, 0x00, 0x00},
{0x02, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x01, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x40, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
},
// Bottom to top
{
{0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00},
{0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00},
{0x00, 0x0C, 0x00, 0x90, 0x00, 0x02, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x68, 0x03, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x07, 0x0C, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x02, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x04, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00}
},
// Radial (centered on drops) sweep
{
{0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, 0x00},
{0x01, 0x00, 0x60, 0x00, 0x08, 0x00, 0x00, 0x00},
{0x05, 0x00, 0x20, 0x44, 0x0A, 0x00, 0x00, 0x00},
{0x0C, 0x00, 0x10, 0x46, 0x02, 0x00, 0x00, 0x00},
{0x18, 0x88, 0x10, 0xC2, 0x00, 0x00, 0x00, 0x00},
{0xB2, 0x8A, 0x08, 0x89, 0x00, 0x00, 0x00, 0x00},
{0xE2, 0x42, 0x04, 0x09, 0x80, 0x00, 0x00, 0x00},
{0x40, 0x40, 0x07, 0x30, 0xA0, 0x00, 0x00, 0x00},
{0x00, 0x20, 0x03, 0x10, 0x75, 0x08, 0x00, 0x00},
{0x00, 0x24, 0x00, 0x00, 0x55, 0x1B, 0x00, 0x00},
{0x00, 0x14, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00},
{0x00, 0x01, 0x00, 0x00, 0x00, 0xE4, 0x00, 0x00},
{0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00}
},
// Radial (centered on top pop) sweep
{
{0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00},
{0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00},
{0x00, 0x70, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00},
{0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0xCF, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x02, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0xB8, 0x03, 0x04, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x27, 0x05, 0x00, 0x00, 0x00},
{0x00, 0x04, 0x00, 0xD8, 0x4A, 0x02, 0x00, 0x00},
{0x00, 0x09, 0x00, 0x80, 0xF2, 0x00, 0x00, 0x00},
{0x00, 0x02, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00}
},
// Radial (centered on lower pops) sweep
{
{0x02, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x02, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x01, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x01, 0x20, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x01, 0x20, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x20, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x10, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00},
{0x04, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00},
{0x0C, 0x00, 0x00, 0x24, 0x04, 0x00, 0x00, 0x00},
{0x18, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00},
{0x30, 0x04, 0x00, 0xD8, 0x08, 0x0E, 0x00, 0x00},
{0xC0, 0x04, 0x00, 0x80, 0xCA, 0xFE, 0x00, 0x00},
{0x00, 0x09, 0x00, 0x00, 0xB0, 0xF0, 0x00, 0x00},
{0x00, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00},
{0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00},
{0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
},
// Radial (centered on standups) sweep
{
{0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x02, 0x30, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x00},
{0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00},
{0x00, 0xC0, 0x10, 0x21, 0x01, 0x02, 0x00, 0x00},
{0x00, 0x80, 0x30, 0x23, 0x01, 0x02, 0x00, 0x00},
{0x01, 0x05, 0x60, 0x12, 0x00, 0x00, 0x00, 0x00},
{0x01, 0x01, 0xC0, 0x0C, 0x40, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x80, 0x44, 0x40, 0x00, 0x00, 0x00},
{0x0C, 0x00, 0x00, 0xC0, 0x90, 0x04, 0x00, 0x00},
{0x3C, 0x08, 0x00, 0x00, 0xAA, 0xC9, 0x00, 0x00},
{0xE0, 0x08, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00},
{0xC0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
}
};