1 /**********************************************************
2 * mame2003-plus control description data stuctures
3 *
4 * Originally dervied from
5 * controls.dat Version=0.141.1, Time=2011-01-05 18:17:26, Generated by=SirPoonga
6 *********************************************************/
7
8 /* By default we assume that multiplayer games use the same button names for the different
9 * players, although there are exceptions. The approach is to use case statements with the
10 * highest player numbers first so that the Player 1 labels can serve as default.
11 */
12
13 #include "controls.h"
14 #include "inptport.h"
15 #include "mame.h"
16
17 /***********************************************************
18 PRIVATE HELPER FUNCTIONS
19 ***********************************************************/
20
21 static const char *joy2way_labels(int type);
22 static const char *joy4way_labels(int type);
23
24 /* joy2way_labels returns only generic "Left" and "Right"
25 * strings for 2-way joysticks that have no game-specific
26 * control panel labels.
27 */
joy2way_labels(int type)28 static const char *joy2way_labels(int type)
29 {
30 switch(type)
31 {
32 case IPT_JOYSTICK_LEFT: return "Left";
33 case IPT_JOYSTICK_RIGHT: return "Right";
34 } /* end of switch */
35
36 return "";
37 }
38
39 /* joy4way_labels returns only generic "Left", "Right",
40 * "Up", and "Down" strings for 4-way and 8-way joysticks that have
41 * no game-specific control panel labels. An example of game-
42 * specific 8-way joystick labels is Street Fighter 2, which uses
43 * "Crouch" instead of "Down" and "Jump" instead of "Up" and
44 * and therefore is not suitable for the generic function.
45 */
joy4way_labels(int type)46 static const char *joy4way_labels(int type)
47 {
48 switch(type)
49 {
50 case IPT_JOYSTICK_UP: return "Up";
51 case IPT_JOYSTICK_DOWN: return "Down";
52 case IPT_JOYSTICK_LEFT: return "Left";
53 case IPT_JOYSTICK_RIGHT: return "Right";
54 } /* end of switch */
55
56 return "";
57 }
58
59 /***********************************************************
60 CONTROLS METADATA
61 ***********************************************************/
62
63 const struct ControlInfo generic_ctrl =
64 {
65 false, /* 45_degree_rotation for joystick(s) */
66 false, /* alternating_controls */
67 true, /* mirrored_controls */
68 "", /* control_details */
69 &generic_ctrl_label /* button labeler function */
70 };
71
72 const struct ControlInfo a88games_ctrl =
73 {
74 false, /* 45_degree_rotation for joystick(s) */
75 false, /* alternating_controls */
76 true, /* mirrored_controls */
77 "This is a 4 player team type game where 2 players compete each time.", /* control_details */
78 &a88games_get_ctrl_name
79 };
80
a88games_get_ctrl_name(int type)81 const char *a88games_get_ctrl_name(int type)
82 {
83 switch(type)
84 {
85 case IPT_BUTTON1: return BTN1 "Run";
86 case IPT_BUTTON2: return BTN2 "Jump";
87 case IPT_BUTTON3: return BTN3 "Run";
88 } /* end of switch */
89
90 return "";
91 }
92
93 const struct ControlInfo a005_ctrl =
94 {
95 false, /* 45_degree_rotation for joystick(s) */
96 true, /* alternating_controls */
97 true, /* mirrored_controls */
98 "", /* control_details */
99 &a005_get_ctrl_name
100 };
101
a005_get_ctrl_name(int type)102 const char *a005_get_ctrl_name(int type)
103 {
104 switch(type)
105 {
106 case IPT_BUTTON1: return BTN1 "Fire";
107 } /* end of switch */
108
109 return joy4way_labels(type);
110 }
111
112 const struct ControlInfo a10yardj_ctrl =
113 {
114 false, /* 45_degree_rotation for joystick(s) */
115 true, /* alternating_controls */
116 true, /* mirrored_controls */
117 "", /* control_details */
118 &a10yardj_get_ctrl_name
119 };
120
a10yardj_get_ctrl_name(int type)121 const char *a10yardj_get_ctrl_name(int type)
122 {
123 switch(type)
124 {
125 case IPT_BUTTON1: return BTN1 "Pass / Hike";
126 case IPT_BUTTON2: return BTN2 "Lateral";
127 } /* end of switch */
128
129 return joy4way_labels(type);
130 }
131
132 const struct ControlInfo gtmr_ctrl =
133 {
134 false, /* 45_degree_rotation for joystick(s) */
135 true, /* alternating_controls */
136 true, /* mirrored_controls */
137 "This game has several options regarding the control type. It has an optional brake pedal/button as well as the option to play the game with either a 270 wheel or an 8way joystick. The controls shown here are the ones used on the dedicated model. Notice the lack of the brake pedal. It seems that the brake pedal was used in conversion kits as the dedicated cabinet didn't have one.", /* control_details */
138 >mr_get_ctrl_name
139 };
140
gtmr_get_ctrl_name(int type)141 const char *gtmr_get_ctrl_name(int type)
142 {
143 switch(type)
144 {
145 case IPT_BUTTON1: return BTN1 "Accelerate";
146 case IPT_PADDLE: return "Left";
147 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
148 } /* end of switch */
149
150 return "";
151 }
152
153 const struct ControlInfo a1941_ctrl =
154 {
155 false, /* 45_degree_rotation for joystick(s) */
156 false, /* alternating_controls */
157 true, /* mirrored_controls */
158 "", /* control_details */
159 &a1941_get_ctrl_name
160 };
161
a1941_get_ctrl_name(int type)162 const char *a1941_get_ctrl_name(int type)
163 {
164 switch(type)
165 {
166 case IPT_BUTTON1: return BTN1 "Fire";
167 case IPT_BUTTON2: return BTN2 "Loop";
168 } /* end of switch */
169
170 return joy4way_labels(type);
171 }
172
173 const struct ControlInfo a1942_ctrl =
174 {
175 false, /* 45_degree_rotation for joystick(s) */
176 true, /* alternating_controls */
177 true, /* mirrored_controls */
178 "", /* control_details */
179 &a1942_get_ctrl_name
180 };
181
a1942_get_ctrl_name(int type)182 const char *a1942_get_ctrl_name(int type)
183 {
184 switch(type)
185 {
186 case IPT_BUTTON1: return BTN1 "Fire";
187 case IPT_BUTTON2: return BTN2 "Loop";
188 } /* end of switch */
189
190 return joy4way_labels(type);
191 }
192
193 const struct ControlInfo a1943kai_ctrl =
194 {
195 false, /* 45_degree_rotation for joystick(s) */
196 false, /* alternating_controls */
197 true, /* mirrored_controls */
198 "A - Fire, B - Bomb Pressing both buttons will allow the plane to loop", /* control_details */
199 &a1943kai_get_ctrl_name
200 };
201
a1943kai_get_ctrl_name(int type)202 const char *a1943kai_get_ctrl_name(int type)
203 {
204 switch(type)
205 {
206 case IPT_BUTTON1: return BTN1 "A";
207 case IPT_BUTTON2: return BTN2 "B";
208 } /* end of switch */
209
210 return joy4way_labels(type);
211 }
212
213 const struct ControlInfo a1943_ctrl =
214 {
215 false, /* 45_degree_rotation for joystick(s) */
216 false, /* alternating_controls */
217 true, /* mirrored_controls */
218 "Press both buttons together to cause the plane to loop.", /* control_details */
219 &a1943_get_ctrl_name
220 };
221
a1943_get_ctrl_name(int type)222 const char *a1943_get_ctrl_name(int type)
223 {
224 switch(type)
225 {
226 case IPT_BUTTON1: return BTN1 "Fire";
227 case IPT_BUTTON2: return BTN2 "Special";
228 } /* end of switch */
229
230 return joy4way_labels(type);
231 }
232
233 const struct ControlInfo a1944_ctrl =
234 {
235 false, /* 45_degree_rotation for joystick(s) */
236 false, /* alternating_controls */
237 true, /* mirrored_controls */
238 "", /* control_details */
239 &a1944_get_ctrl_name
240 };
241
a1944_get_ctrl_name(int type)242 const char *a1944_get_ctrl_name(int type)
243 {
244 switch(type)
245 {
246 case IPT_BUTTON1: return BTN1 "Shoot";
247 case IPT_BUTTON2: return BTN2 "Bomb";
248 } /* end of switch */
249
250 return joy4way_labels(type);
251 }
252
253 const struct ControlInfo a19xx_ctrl =
254 {
255 false, /* 45_degree_rotation for joystick(s) */
256 false, /* alternating_controls */
257 true, /* mirrored_controls */
258 "If you hold down the shoot button, your weapon powers up and gives you a homing missle in addition to you normal weapon.", /* control_details */
259 &a19xx_get_ctrl_name
260 };
261
a19xx_get_ctrl_name(int type)262 const char *a19xx_get_ctrl_name(int type)
263 {
264 switch(type)
265 {
266 case IPT_BUTTON1: return BTN1 "Shoot";
267 case IPT_BUTTON2: return BTN2 "Bomb";
268 } /* end of switch */
269
270 return joy4way_labels(type);
271 }
272
273 const struct ControlInfo openice_ctrl =
274 {
275 false, /* 45_degree_rotation for joystick(s) */
276 false, /* alternating_controls */
277 true, /* mirrored_controls */
278 "", /* control_details */
279 &openice_get_ctrl_name
280 };
281
openice_get_ctrl_name(int type)282 const char *openice_get_ctrl_name(int type)
283 {
284 switch(type)
285 {
286 case IPT_BUTTON1: return BTN1 "Turbo";
287 case IPT_BUTTON2: return BTN2 "Shoot / Block";
288 case IPT_BUTTON3: return BTN3 "Pass / Steal";
289 } /* end of switch */
290
291 return joy4way_labels(type);
292 }
293
294 const struct ControlInfo a39in1_ctrl =
295 {
296 false, /* 45_degree_rotation for joystick(s) */
297 false, /* alternating_controls */
298 true, /* mirrored_controls */
299 "This is a bootleg pcb that contains many classic vertical arcade games. Because of this the 'alternating play' flag is invalid and will vary from game to game. The game kit is a pcb only and thus lacks any official labels. The manual for this version lists the buttons as 1P-S1 thru 2P-S3. However, these are simply the jamma pinouts. Every control panel overlay manufacturer that has since released a overlay for this unit has either left the labels blank or labeled them A, B and C respectively.", /* control_details */
300 &a39in1_get_ctrl_name
301 };
302
a39in1_get_ctrl_name(int type)303 const char *a39in1_get_ctrl_name(int type)
304 {
305 switch(type)
306 {
307 case IPT_BUTTON1: return BTN1 "A";
308 case IPT_BUTTON2: return BTN2 "B";
309 case IPT_BUTTON3: return BTN3 "C";
310 } /* end of switch */
311
312 return joy4way_labels(type);
313 }
314
315 const struct ControlInfo a4enraya_ctrl =
316 {
317 false, /* 45_degree_rotation for joystick(s) */
318 false, /* alternating_controls */
319 true, /* mirrored_controls */
320 "", /* control_details */
321 &a4enraya_get_ctrl_name
322 };
323
a4enraya_get_ctrl_name(int type)324 const char *a4enraya_get_ctrl_name(int type)
325 {
326 switch(type)
327 {
328 case IPT_BUTTON1: return BTN1 "Down";
329 case IPT_BUTTON2: return BTN2 "Shot";
330 } /* end of switch */
331
332 return joy2way_labels(type);
333 }
334
335 const struct ControlInfo a4in1_ctrl =
336 {
337 false, /* 45_degree_rotation for joystick(s) */
338 true, /* alternating_controls */
339 true, /* mirrored_controls */
340 "", /* control_details */
341 &a4in1_get_ctrl_name
342 };
343
a4in1_get_ctrl_name(int type)344 const char *a4in1_get_ctrl_name(int type)
345 {
346 switch(type)
347 {
348 case IPT_BUTTON1: return BTN1 "Fire";
349 } /* end of switch */
350
351 return joy4way_labels(type);
352 }
353
354 const struct ControlInfo a4dwarrio_ctrl =
355 {
356 false, /* 45_degree_rotation for joystick(s) */
357 true, /* alternating_controls */
358 true, /* mirrored_controls */
359 "", /* control_details */
360 &a4dwarrio_get_ctrl_name
361 };
362
a4dwarrio_get_ctrl_name(int type)363 const char *a4dwarrio_get_ctrl_name(int type)
364 {
365 switch(type)
366 {
367 case IPT_BUTTON1: return BTN1 "Fire";
368 case IPT_BUTTON2: return BTN2 "Bomb";
369 } /* end of switch */
370
371 return joy4way_labels(type);
372 }
373
374 const struct ControlInfo a64street_ctrl =
375 {
376 false, /* 45_degree_rotation for joystick(s) */
377 false, /* alternating_controls */
378 true, /* mirrored_controls */
379 "Pressing both buttons will do a special attack", /* control_details */
380 &a64street_get_ctrl_name
381 };
382
a64street_get_ctrl_name(int type)383 const char *a64street_get_ctrl_name(int type)
384 {
385 switch(type)
386 {
387 case IPT_BUTTON1: return BTN1 "Attack";
388 case IPT_BUTTON2: return BTN2 "Jump";
389 } /* end of switch */
390
391 return joy4way_labels(type);
392 }
393
394 const struct ControlInfo a720_ctrl =
395 {
396 false, /* 45_degree_rotation for joystick(s) */
397 true, /* alternating_controls */
398 true, /* mirrored_controls */
399 "OTHER: The 720 controller is unique. It is an optical sensed spinner with a joystick handle. The controller had two encoder wheels on the same axis /* control_details */ one was like a normal spinner encode wheel with 72 spokes & 72 gaps, the other encoder wheel had only two gaps spaced as far as alternating gaps on the normal encoder wheel (ie: instead of gap, spoke, gap, spoke, gap like on the normal wheel, the middle gap was part of the one fat spoke seperating the two gaps on the ends). The normal encoder wheel turns the character in the game, the other encoder wheel is to help keep the stick calibrated with the screen, on each rotation of the stick. Mame only emulates the normal wheel as a dial type input; the other is ignored. The character in the game can face 16 directions: the 4 cardinal directions, the 4 normal diagonals, and the 8 directions inbetween the cardinals and the diagonals. The Kick button makes the character skate faster (in case that's not clear). Both buttons are mirrored on opposite sides of the 'joystick' spinner, but like most mirror cases, they are wired as a total of only two buttons.", /* control_details */
400 &a720_get_ctrl_name
401 };
402
a720_get_ctrl_name(int type)403 const char *a720_get_ctrl_name(int type)
404 {
405 switch(type)
406 {
407 case IPT_BUTTON1: return BTN1 "Kick";
408 case IPT_BUTTON2: return BTN2 "Jump";
409 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
410 case IPT_DIAL: return "Rotate Left";
411 } /* end of switch */
412
413 return "";
414 }
415
416
417 const struct ControlInfo ace_ctrl =
418 {
419 false, /* 45_degree_rotation for joystick(s) */
420 false, /* alternating_controls */
421 true, /* mirrored_controls */
422 "The 2-way horizontal stick is a trigger stick, pushing left rotates the plane anticlockwise, pushing right rotates the plane clockwise", /* control_details */
423 &ace_get_ctrl_name
424 };
425
ace_get_ctrl_name(int type)426 const char *ace_get_ctrl_name(int type)
427 {
428 switch(type)
429 {
430 case IPT_BUTTON1: return BTN1 "Fire";
431 case IPT_JOYSTICK_LEFT: return "Left";
432 case IPT_JOYSTICK_RIGHT: return "Right";
433 case IPT_JOYSTICK_UP: return "Speed Up";
434 case IPT_JOYSTICK_DOWN: return "Slow Down";
435 } /* end of switch */
436
437 return "";
438 }
439
440 const struct ControlInfo acrobatm_ctrl =
441 {
442 false, /* 45_degree_rotation for joystick(s) */
443 false, /* alternating_controls */
444 true, /* mirrored_controls */
445 "Hold down Fire button to increase power", /* control_details */
446 &acrobatm_get_ctrl_name
447 };
448
acrobatm_get_ctrl_name(int type)449 const char *acrobatm_get_ctrl_name(int type)
450 {
451 switch(type)
452 {
453 case IPT_BUTTON1: return BTN1 "Fire";
454 case IPT_BUTTON2: return BTN2 "Bomb";
455 } /* end of switch */
456
457 return joy4way_labels(type);
458 }
459
460 const struct ControlInfo actfancr_ctrl =
461 {
462 false, /* 45_degree_rotation for joystick(s) */
463 true, /* alternating_controls */
464 true, /* mirrored_controls */
465 "", /* control_details */
466 &actfancr_get_ctrl_name
467 };
468
actfancr_get_ctrl_name(int type)469 const char *actfancr_get_ctrl_name(int type)
470 {
471 switch(type)
472 {
473 case IPT_BUTTON1: return BTN1 "Fire";
474 case IPT_BUTTON2: return BTN2 "Jump";
475 } /* end of switch */
476
477 return joy4way_labels(type);
478 }
479
480 const struct ControlInfo hatena_ctrl =
481 {
482 false, /* 45_degree_rotation for joystick(s) */
483 false, /* alternating_controls */
484 true, /* mirrored_controls */
485 "", /* control_details */
486 &hatena_get_ctrl_name
487 };
488
hatena_get_ctrl_name(int type)489 const char *hatena_get_ctrl_name(int type)
490 {
491 switch(type)
492 {
493 case IPT_BUTTON1: return BTN1 "1";
494 case IPT_BUTTON2: return BTN2 "2";
495 case IPT_BUTTON3: return BTN3 "3";
496 case IPT_BUTTON4: return BTN4 "4";
497 } /* end of switch */
498
499 return "";
500 }
501
502 const struct ControlInfo aerofgt_ctrl =
503 {
504 false, /* 45_degree_rotation for joystick(s) */
505 false, /* alternating_controls */
506 true, /* mirrored_controls */
507 "Pressing bomb button drops bomb and plane also loops. There are no labels on the CP.", /* control_details */
508 &aerofgt_get_ctrl_name
509 };
510
aerofgt_get_ctrl_name(int type)511 const char *aerofgt_get_ctrl_name(int type)
512 {
513 switch(type)
514 {
515 case IPT_BUTTON1: return BTN1 "Fire";
516 case IPT_BUTTON2: return BTN2 "Bomb";
517 } /* end of switch */
518
519 return joy4way_labels(type);
520 }
521
522 const struct ControlInfo aburner2_ctrl =
523 {
524 false, /* 45_degree_rotation for joystick(s) */
525 false, /* alternating_controls */
526 true, /* mirrored_controls */
527 "The 'unknown' button is emulated in MAME but has no real purpose. As far as I can tell from the drivers, it was used for some sort of feedback in the simulation cockpits.", /* control_details */
528 &aburner2_get_ctrl_name
529 };
530
aburner2_get_ctrl_name(int type)531 const char *aburner2_get_ctrl_name(int type)
532 {
533 switch(type)
534 {
535 case IPT_BUTTON1: return BTN1 "Fire";
536 case IPT_BUTTON2: return BTN2 "Vulcan";
537 case IPT_BUTTON3: return BTN3 "Unknown";
538 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
539 case IPT_AD_STICK_Y: return "Up";
540 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
541 case IPT_AD_STICK_X: return "Left";
542 case IPT_AD_STICK_Z: return "Slow";
543 case (IPT_AD_STICK_Z + IPT_EXTENSION): return "Fast";
544 } /* end of switch */
545
546 return "";
547 }
548
549 const struct ControlInfo koshien_ctrl =
550 {
551 false, /* 45_degree_rotation for joystick(s) */
552 false, /* alternating_controls */
553 true, /* mirrored_controls */
554 "A - Power-up B - Hit/Throw C - Unknown action during game", /* control_details */
555 &koshien_get_ctrl_name
556 };
557
koshien_get_ctrl_name(int type)558 const char *koshien_get_ctrl_name(int type)
559 {
560 switch(type)
561 {
562 case IPT_BUTTON1: return BTN1 "A";
563 case IPT_BUTTON2: return BTN2 "B";
564 case IPT_BUTTON3: return BTN3 "C";
565 } /* end of switch */
566
567 return joy4way_labels(type);
568 }
569
570 const struct ControlInfo airbustr_ctrl =
571 {
572 false, /* 45_degree_rotation for joystick(s) */
573 false, /* alternating_controls */
574 true, /* mirrored_controls */
575 "Only 1 button on the CP but MAME has 2 mapped (both doing the same thing)", /* control_details */
576 &airbustr_get_ctrl_name
577 };
578
airbustr_get_ctrl_name(int type)579 const char *airbustr_get_ctrl_name(int type)
580 {
581 switch(type)
582 {
583 case IPT_BUTTON1: return BTN1 "Fire";
584 case IPT_BUTTON2: return BTN2 "Fire";
585 } /* end of switch */
586
587 return joy4way_labels(type);
588 }
589
590 const struct ControlInfo airduel_ctrl =
591 {
592 false, /* 45_degree_rotation for joystick(s) */
593 false, /* alternating_controls */
594 true, /* mirrored_controls */
595 "Pinout shows 3 buttons (Fire1, Fire2, Fire3), the flyer shows 2 buttons, Mame has 4 buttons mapped and only 2 seem to work", /* control_details */
596 &airduel_get_ctrl_name
597 };
598
airduel_get_ctrl_name(int type)599 const char *airduel_get_ctrl_name(int type)
600 {
601 switch(type)
602 {
603 case IPT_BUTTON1: return BTN1 "Gun";
604 case IPT_BUTTON2: return BTN2 "Guided Bomb";
605 case IPT_BUTTON3: return BTN3 "Unknown";
606 case IPT_BUTTON4: return BTN4 "Unknown";
607 } /* end of switch */
608
609 return joy4way_labels(type);
610 }
611
612 const struct ControlInfo airwolf_ctrl =
613 {
614 false, /* 45_degree_rotation for joystick(s) */
615 true, /* alternating_controls */
616 true, /* mirrored_controls */
617 "Button 2 acts differently based on the position on the screen. In the lower half of the screen button 2 will shoot diagonally down to the ground. In the top half it will drop a bomb", /* control_details */
618 &airwolf_get_ctrl_name
619 };
620
airwolf_get_ctrl_name(int type)621 const char *airwolf_get_ctrl_name(int type)
622 {
623 switch(type)
624 {
625 case IPT_BUTTON1: return BTN1 "Fire";
626 case IPT_BUTTON2: return BTN2 "Bomb";
627 } /* end of switch */
628
629 return joy4way_labels(type);
630 }
631
632 const struct ControlInfo ajax_ctrl =
633 {
634 false, /* 45_degree_rotation for joystick(s) */
635 true, /* alternating_controls */
636 true, /* mirrored_controls */
637 "", /* control_details */
638 &ajax_get_ctrl_name
639 };
640
ajax_get_ctrl_name(int type)641 const char *ajax_get_ctrl_name(int type)
642 {
643 switch(type)
644 {
645 case IPT_BUTTON1: return BTN1 "Machine Gun";
646 case IPT_BUTTON2: return BTN2 "Missle";
647 case IPT_BUTTON3: return BTN3 "Super Weapon";
648 } /* end of switch */
649
650 return joy4way_labels(type);
651 }
652
653 const struct ControlInfo alexkidd_ctrl =
654 {
655 false, /* 45_degree_rotation for joystick(s) */
656 false, /* alternating_controls */
657 true, /* mirrored_controls */
658 "I cold not find what the 3rd button did nor did I immediately notice where it is written in the driver (I think it's one of those generic drivers)", /* control_details */
659 &alexkidd_get_ctrl_name
660 };
661
alexkidd_get_ctrl_name(int type)662 const char *alexkidd_get_ctrl_name(int type)
663 {
664 switch(type)
665 {
666 case IPT_BUTTON1: return BTN1 "Attack";
667 case IPT_BUTTON2: return BTN2 "Jump";
668 case IPT_BUTTON3: return BTN3 "Unknown";
669 } /* end of switch */
670
671 return joy4way_labels(type);
672 }
673
674 const struct ControlInfo alibaba_ctrl =
675 {
676 false, /* 45_degree_rotation for joystick(s) */
677 true, /* alternating_controls */
678 true, /* mirrored_controls */
679 "Drop is not the button label (couldn't find one). It drops something behind your character which blocks the path of the Captain Thief which allows you to get away", /* control_details */
680 &alibaba_get_ctrl_name
681 };
682
alibaba_get_ctrl_name(int type)683 const char *alibaba_get_ctrl_name(int type)
684 {
685 switch(type)
686 {
687 case IPT_BUTTON1: return BTN1 "Drop";
688 } /* end of switch */
689
690 return joy4way_labels(type);
691 }
692
693 const struct ControlInfo astorm_ctrl =
694 {
695 false, /* 45_degree_rotation for joystick(s) */
696 false, /* alternating_controls */
697 true, /* mirrored_controls */
698 "", /* control_details */
699 &astorm_get_ctrl_name
700 };
701
astorm_get_ctrl_name(int type)702 const char *astorm_get_ctrl_name(int type)
703 {
704 switch(type)
705 {
706 case IPT_BUTTON1: return BTN1 "Attack";
707 case IPT_BUTTON2: return BTN2 "Roll";
708 case IPT_BUTTON3: return BTN3 "Special";
709 } /* end of switch */
710
711 return joy4way_labels(type);
712 }
713
714 const struct ControlInfo aliensyn_ctrl =
715 {
716 false, /* 45_degree_rotation for joystick(s) */
717 false, /* alternating_controls */
718 true, /* mirrored_controls */
719 "", /* control_details */
720 &aliensyn_get_ctrl_name
721 };
722
aliensyn_get_ctrl_name(int type)723 const char *aliensyn_get_ctrl_name(int type)
724 {
725 switch(type)
726 {
727 case IPT_BUTTON1: return BTN1 "Fire";
728 } /* end of switch */
729
730 return joy4way_labels(type);
731 }
732
733 const struct ControlInfo avsp_ctrl =
734 {
735 false, /* 45_degree_rotation for joystick(s) */
736 false, /* alternating_controls */
737 true, /* mirrored_controls */
738 "The default dipswitch is two player mode /* control_details */ you need to F2 into the game's service mode and change it to three player mode to play with 3 players. Each character has special moves.", /* control_details */
739 &avsp_get_ctrl_name
740 };
741
avsp_get_ctrl_name(int type)742 const char *avsp_get_ctrl_name(int type)
743 {
744 switch(type)
745 {
746 case IPT_BUTTON1: return BTN1 "Shoot";
747 case IPT_BUTTON2: return BTN2 "Attack";
748 case IPT_BUTTON3: return BTN3 "Jump (Dash)";
749 case IPT_JOYSTICK_UP: return "Up";
750 case IPT_JOYSTICK_DOWN: return "Down";
751 case IPT_JOYSTICK_LEFT: return "Move Left";
752 case IPT_JOYSTICK_RIGHT: return "Move Right";
753 } /* end of switch */
754
755 return "";
756 }
757
758 const struct ControlInfo alien3_ctrl =
759 {
760 false, /* 45_degree_rotation for joystick(s) */
761 false, /* alternating_controls */
762 true, /* mirrored_controls */
763 "There isn't much info about the 'real' name for the second button on the guns. If you have any info feel free to corect.", /* control_details */
764 &alien3_get_ctrl_name
765 };
766
alien3_get_ctrl_name(int type)767 const char *alien3_get_ctrl_name(int type)
768 {
769 switch(type)
770 {
771 case IPT_BUTTON1: return BTN1 "Fire";
772 case IPT_BUTTON2: return BTN2 "Secondary Weapon";
773 case IPT_LIGHTGUN_X: return "Left";
774 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
775 case IPT_LIGHTGUN_Y: return "Up";
776 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
777 } /* end of switch */
778
779 return "";
780 }
781
782 const struct ControlInfo aliens_ctrl =
783 {
784 false, /* 45_degree_rotation for joystick(s) */
785 false, /* alternating_controls */
786 true, /* mirrored_controls */
787 "", /* control_details */
788 &aliens_get_ctrl_name
789 };
790
aliens_get_ctrl_name(int type)791 const char *aliens_get_ctrl_name(int type)
792 {
793 switch(type)
794 {
795 case IPT_BUTTON1: return BTN1 "Shoot 1";
796 case IPT_BUTTON2: return BTN2 "Shoot 2";
797 } /* end of switch */
798
799 return joy4way_labels(type);
800 }
801
802 const struct ControlInfo aafb_ctrl =
803 {
804 false, /* 45_degree_rotation for joystick(s) */
805 false, /* alternating_controls */
806 true, /* mirrored_controls */
807 "The joystick controls the player movement while the kicker is for kicking and passing.", /* control_details */
808 &aafb_get_ctrl_name
809 };
810
aafb_get_ctrl_name(int type)811 const char *aafb_get_ctrl_name(int type)
812 {
813 switch(type)
814 {
815 case IPT_BUTTON1: return BTN1 "Action";
816 case IPT_AD_STICK_X: return "Aim Left";
817 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Aim Right";
818 case IPT_AD_STICK_Y: return "Short";
819 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Long";
820 } /* end of switch */
821
822 return joy4way_labels(type);
823 }
824
825 const struct ControlInfo alleymas_ctrl =
826 {
827 false, /* 45_degree_rotation for joystick(s) */
828 true, /* alternating_controls */
829 true, /* mirrored_controls */
830 "Probably the oddest bowling game out there, this game uses a football kicker stick to bowl!", /* control_details */
831 &alleymas_get_ctrl_name
832 };
833
alleymas_get_ctrl_name(int type)834 const char *alleymas_get_ctrl_name(int type)
835 {
836 switch(type)
837 {
838 case IPT_BUTTON1: return BTN1 "Left";
839 case IPT_BUTTON2: return BTN2 "Right";
840 case IPT_AD_STICK_X: return "Left";
841 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
842 case IPT_AD_STICK_Y: return "Up";
843 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
844 } /* end of switch */
845
846 return "";
847 }
848
849 const struct ControlInfo alphaho_ctrl =
850 {
851 false, /* 45_degree_rotation for joystick(s) */
852 false, /* alternating_controls */
853 true, /* mirrored_controls */
854 "", /* control_details */
855 &alphaho_get_ctrl_name
856 };
857
alphaho_get_ctrl_name(int type)858 const char *alphaho_get_ctrl_name(int type)
859 {
860 switch(type)
861 {
862 case IPT_BUTTON1: return BTN1 "Accelerate";
863 } /* end of switch */
864
865 return joy4way_labels(type);
866 }
867
868 const struct ControlInfo alpinerd_ctrl =
869 {
870 false, /* 45_degree_rotation for joystick(s) */
871 false, /* alternating_controls */
872 false, /* mirrored_controls */
873 "This game uses a dedicated platform shaped like a pair of skiis. It basically acts like a giant analog stick. The player navigates via three, lighted, navigational buttons. (Left, Right and Decision) The Decision button also changes view during gameplay. The 'sweep' and 'edge' descriptions were taken directly from the game's cryptic i/o test menu. Knowing nothing about skiiing, the way the terms 'sweep' and 'edge' were used may be incorrect.", /* control_details */
874 &alpinerd_get_ctrl_name
875 };
876
alpinerd_get_ctrl_name(int type)877 const char *alpinerd_get_ctrl_name(int type)
878 {
879 switch(type)
880 {
881 case IPT_BUTTON1: return BTN1 "Decision";
882 case IPT_BUTTON2: return BTN2 "Left (Select)";
883 case IPT_BUTTON3: return BTN3 "Right (Select)";
884 case IPT_AD_STICK_X: return "Sweep Left";
885 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Sweep Right";
886 case IPT_AD_STICK_Y: return "Increase Edge ";
887 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Decrease Edge";
888 } /* end of switch */
889
890 return "";
891 }
892
893 const struct ControlInfo alpine_ctrl =
894 {
895 false, /* 45_degree_rotation for joystick(s) */
896 true, /* alternating_controls */
897 true, /* mirrored_controls */
898 "The cpo depicted a simple arrow pointing up for the button label. Upon research I found that this button makes you go down the hill faster. I modified the caption accordingly to avoid confusion. For left and right, the cpo shows a picture of a skiier going left and right respectively. I added the 'ski' part of the caption to prepare for the upcoming icon support in the viewer. As the game doesn't have a true caption, this shouldn't be any less accurate.", /* control_details */
899 &alpine_get_ctrl_name
900 };
901
alpine_get_ctrl_name(int type)902 const char *alpine_get_ctrl_name(int type)
903 {
904 switch(type)
905 {
906 case IPT_BUTTON1: return BTN1 "Ski Faster";
907 case IPT_JOYSTICK_RIGHT: return "Ski Right";
908 case IPT_JOYSTICK_LEFT: return "Ski Left";
909 } /* end of switch */
910
911 return "";
912 }
913
914 const struct ControlInfo altbeast_ctrl =
915 {
916 false, /* 45_degree_rotation for joystick(s) */
917 false, /* alternating_controls */
918 true, /* mirrored_controls */
919 "", /* control_details */
920 &altbeast_get_ctrl_name
921 };
922
altbeast_get_ctrl_name(int type)923 const char *altbeast_get_ctrl_name(int type)
924 {
925 switch(type)
926 {
927 case IPT_BUTTON1: return BTN1 "Punch";
928 case IPT_BUTTON2: return BTN2 "Kick ";
929 case IPT_BUTTON3: return BTN3 "Jump";
930 } /* end of switch */
931
932 return joy4way_labels(type);
933 }
934
935 const struct ControlInfo maze_ctrl =
936 {
937 false, /* 45_degree_rotation for joystick(s) */
938 false, /* alternating_controls */
939 true, /* mirrored_controls */
940 "", /* control_details */
941 &maze_get_ctrl_name
942 };
943
maze_get_ctrl_name(int type)944 const char *maze_get_ctrl_name(int type)
945 {
946 return joy4way_labels(type);
947 }
948
949 const struct ControlInfo horshoes_ctrl =
950 {
951 false, /* 45_degree_rotation for joystick(s) */
952 true, /* alternating_controls */
953 true, /* mirrored_controls */
954 "", /* control_details */
955 &horshoes_get_ctrl_name
956 };
957
horshoes_get_ctrl_name(int type)958 const char *horshoes_get_ctrl_name(int type)
959 {
960 switch(type)
961 {
962 case IPT_BUTTON1: return BTN1 "Angle";
963 case IPT_BUTTON2: return BTN2 "Grip";
964 case IPT_TRACKBALL_Y: return "Up";
965 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
966 case IPT_TRACKBALL_X: return "Left";
967 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
968 } /* end of switch */
969
970 return "";
971 }
972
973 const struct ControlInfo amspdwy_ctrl =
974 {
975 false, /* 45_degree_rotation for joystick(s) */
976 false, /* alternating_controls */
977 true, /* mirrored_controls */
978 "", /* control_details */
979 &amspdwy_get_ctrl_name
980 };
981
amspdwy_get_ctrl_name(int type)982 const char *amspdwy_get_ctrl_name(int type)
983 {
984 switch(type)
985 {
986 case IPT_BUTTON1: return BTN1 "Accelerate";
987 case IPT_DIAL: return "Left";
988 case (IPT_DIAL + IPT_EXTENSION): return "Right";
989 } /* end of switch */
990
991 return "";
992 }
993
994 const struct ControlInfo amerdart_ctrl =
995 {
996 false, /* 45_degree_rotation for joystick(s) */
997 true, /* alternating_controls */
998 true, /* mirrored_controls */
999 "To play, aim with the trackball, press the 'lock' button to set the position and then roll to throw.", /* control_details */
1000 &amerdart_get_ctrl_name
1001 };
1002
amerdart_get_ctrl_name(int type)1003 const char *amerdart_get_ctrl_name(int type)
1004 {
1005 switch(type)
1006 {
1007 case IPT_BUTTON1: return BTN1 "Lock";
1008 case IPT_TRACKBALL_X: return "Left";
1009 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
1010 case IPT_TRACKBALL_Y: return "Up";
1011 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
1012 } /* end of switch */
1013
1014 return "";
1015 }
1016
1017 const struct ControlInfo amidar_ctrl =
1018 {
1019 false, /* 45_degree_rotation for joystick(s) */
1020 true, /* alternating_controls */
1021 true, /* mirrored_controls */
1022 "", /* control_details */
1023 &amidar_get_ctrl_name
1024 };
1025
amidar_get_ctrl_name(int type)1026 const char *amidar_get_ctrl_name(int type)
1027 {
1028 switch(type)
1029 {
1030 case IPT_BUTTON1: return BTN1 "Jump";
1031 } /* end of switch */
1032
1033 return joy4way_labels(type);
1034 }
1035
1036 const struct ControlInfo angelkds_ctrl =
1037 {
1038 false, /* 45_degree_rotation for joystick(s) */
1039 true, /* alternating_controls */
1040 true, /* mirrored_controls */
1041 "Left joy controls the left kid, right controls the right kid", /* control_details */
1042 &angelkds_get_ctrl_name
1043 };
1044
angelkds_get_ctrl_name(int type)1045 const char *angelkds_get_ctrl_name(int type)
1046 {
1047 switch(type)
1048 {
1049 case IPT_JOYSTICKLEFT_UP: return "Up";
1050 case IPT_JOYSTICKLEFT_DOWN: return "Down";
1051 case IPT_JOYSTICKLEFT_LEFT: return "Left";
1052 case IPT_JOYSTICKLEFT_RIGHT: return "Right";
1053 case IPT_JOYSTICKRIGHT_UP: return "Up";
1054 case IPT_JOYSTICKRIGHT_DOWN: return "Down";
1055 case IPT_JOYSTICKRIGHT_LEFT: return "Left";
1056 case IPT_JOYSTICKRIGHT_RIGHT: return "Right";
1057 } /* end of switch */
1058
1059 return "";
1060 }
1061
1062 const struct ControlInfo anteater_ctrl =
1063 {
1064 false, /* 45_degree_rotation for joystick(s) */
1065 true, /* alternating_controls */
1066 true, /* mirrored_controls */
1067 "Not sure if the label is correct but that's what it does. Couldn't find a pic of the panel", /* control_details */
1068 &anteater_get_ctrl_name
1069 };
1070
anteater_get_ctrl_name(int type)1071 const char *anteater_get_ctrl_name(int type)
1072 {
1073 switch(type)
1074 {
1075 case IPT_BUTTON1: return BTN1 "Tongue Return";
1076 } /* end of switch */
1077
1078 return joy4way_labels(type);
1079 }
1080
1081 const struct ControlInfo apb_ctrl =
1082 {
1083 false, /* 45_degree_rotation for joystick(s) */
1084 false, /* alternating_controls */
1085 false, /* mirrored_controls */
1086 "", /* control_details */
1087 &apb_get_ctrl_name
1088 };
1089
apb_get_ctrl_name(int type)1090 const char *apb_get_ctrl_name(int type)
1091 {
1092 switch(type)
1093 {
1094 case IPT_BUTTON1: return BTN1 "Siren / Start";
1095 case IPT_BUTTON2: return BTN2 "Fire";
1096 case (IPT_DIAL + IPT_EXTENSION): return "Right";
1097 case IPT_DIAL: return "Left";
1098 case IPT_PEDAL: return "Accelerate";
1099 } /* end of switch */
1100
1101 return "";
1102 }
1103
1104 const struct ControlInfo aquajack_ctrl =
1105 {
1106 false, /* 45_degree_rotation for joystick(s) */
1107 false, /* alternating_controls */
1108 false, /* mirrored_controls */
1109 "In mame a dial is also emulated. This dial has no apparent function and isn't used in the game at all. It could be reminants of a hack or something.", /* control_details */
1110 &aquajack_get_ctrl_name
1111 };
1112
aquajack_get_ctrl_name(int type)1113 const char *aquajack_get_ctrl_name(int type)
1114 {
1115 switch(type)
1116 {
1117 case IPT_BUTTON1: return BTN1 "Machine Gun";
1118 case IPT_BUTTON2: return BTN2 "Jump";
1119 case IPT_BUTTON3: return BTN3 "Vulcan";
1120 case IPT_BUTTON4: return BTN4 "Thrust";
1121 } /* end of switch */
1122
1123 return joy4way_labels(type);
1124 }
1125
1126 const struct ControlInfo aquarium_ctrl =
1127 {
1128 false, /* 45_degree_rotation for joystick(s) */
1129 false, /* alternating_controls */
1130 true, /* mirrored_controls */
1131 "You can choose at the start of the game whether you would like to use 1 or 2 buttons Type A - 2 buttons Type B - 1 button No pic available, labelled on what they do", /* control_details */
1132 &aquarium_get_ctrl_name
1133 };
1134
aquarium_get_ctrl_name(int type)1135 const char *aquarium_get_ctrl_name(int type)
1136 {
1137 switch(type)
1138 {
1139 case IPT_BUTTON1: return BTN1 "Rotate Right";
1140 case IPT_BUTTON2: return BTN2 "Rotate Left";
1141 } /* end of switch */
1142
1143 return joy4way_labels(type);
1144 }
1145
1146 const struct ControlInfo arabian_ctrl =
1147 {
1148 false, /* 45_degree_rotation for joystick(s) */
1149 true, /* alternating_controls */
1150 true, /* mirrored_controls */
1151 "", /* control_details */
1152 &arabian_get_ctrl_name
1153 };
1154
arabian_get_ctrl_name(int type)1155 const char *arabian_get_ctrl_name(int type)
1156 {
1157 switch(type)
1158 {
1159 case IPT_BUTTON1: return BTN1 "Kick";
1160 case IPT_JOYSTICK_RIGHT: return "Walk";
1161 case IPT_JOYSTICK_LEFT: return "Walk";
1162 case IPT_JOYSTICK_DOWN: return "Down";
1163 case IPT_JOYSTICK_UP: return "Up";
1164 } /* end of switch */
1165
1166 return "";
1167 }
1168
1169 const struct ControlInfo arbalest_ctrl =
1170 {
1171 false, /* 45_degree_rotation for joystick(s) */
1172 false, /* alternating_controls */
1173 true, /* mirrored_controls */
1174 "", /* control_details */
1175 &arbalest_get_ctrl_name
1176 };
1177
arbalest_get_ctrl_name(int type)1178 const char *arbalest_get_ctrl_name(int type)
1179 {
1180 switch(type)
1181 {
1182 case IPT_BUTTON1: return BTN1 "Fire";
1183 case IPT_BUTTON2: return BTN2 "Special";
1184 } /* end of switch */
1185
1186 return joy4way_labels(type);
1187 }
1188
1189 const struct ControlInfo arcadecl_ctrl =
1190 {
1191 false, /* 45_degree_rotation for joystick(s) */
1192 false, /* alternating_controls */
1193 true, /* mirrored_controls */
1194 "", /* control_details */
1195 &arcadecl_get_ctrl_name
1196 };
1197
arcadecl_get_ctrl_name(int type)1198 const char *arcadecl_get_ctrl_name(int type)
1199 {
1200 switch(type)
1201 {
1202 case IPT_BUTTON1: return BTN1 "Fire / Left Missile";
1203 case IPT_BUTTON2: return BTN2 "Fire / Center Missile";
1204 case IPT_BUTTON3: return BTN3 "Fire / Right Missile";
1205 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
1206 case IPT_TRACKBALL_Y: return "Up";
1207 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
1208 case IPT_TRACKBALL_X: return "Left";
1209 } /* end of switch */
1210
1211 return "";
1212 }
1213
1214 const struct ControlInfo archrivl_ctrl =
1215 {
1216 false, /* 45_degree_rotation for joystick(s) */
1217 false, /* alternating_controls */
1218 true, /* mirrored_controls */
1219 "The control panel for this game had two pass buttons, but they were merely wired to the same input as only one pass is wired in the schematics. The controls actually used 49-way joysticks for this game, which can be thought of as corse analog sticks.", /* control_details */
1220 &archrivl_get_ctrl_name
1221 };
1222
archrivl_get_ctrl_name(int type)1223 const char *archrivl_get_ctrl_name(int type)
1224 {
1225 switch(type)
1226 {
1227 case IPT_BUTTON1: return BTN1 "Shoot/Jump";
1228 case IPT_BUTTON2: return BTN2 "Pass/Punch";
1229 case IPT_AD_STICK_X: return "Left";
1230 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
1231 case IPT_AD_STICK_Y: return "Up";
1232 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
1233 } /* end of switch */
1234
1235 return "";
1236 }
1237
1238 const struct ControlInfo area51_ctrl =
1239 {
1240 false, /* 45_degree_rotation for joystick(s) */
1241 false, /* alternating_controls */
1242 true, /* mirrored_controls */
1243 "As with many of the lightgun games at the time, Area 51 requires you to fire off screen to reload. Mame has hacked this to where you fire at the absolute edge of the screen to reload. This is good for people who don't use lightguns but very bad for those of us who do.", /* control_details */
1244 &area51_get_ctrl_name
1245 };
1246
area51_get_ctrl_name(int type)1247 const char *area51_get_ctrl_name(int type)
1248 {
1249 switch(type)
1250 {
1251 case IPT_BUTTON1: return BTN1 "Fire";
1252 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
1253 case IPT_LIGHTGUN_Y: return "Up";
1254 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
1255 case IPT_LIGHTGUN_X: return "Left";
1256 } /* end of switch */
1257
1258 return "";
1259 }
1260
1261 const struct ControlInfo area51mx_ctrl =
1262 {
1263 false, /* 45_degree_rotation for joystick(s) */
1264 false, /* alternating_controls */
1265 true, /* mirrored_controls */
1266 "", /* control_details */
1267 &area51mx_get_ctrl_name
1268 };
1269
area51mx_get_ctrl_name(int type)1270 const char *area51mx_get_ctrl_name(int type)
1271 {
1272 switch(type)
1273 {
1274 case IPT_BUTTON1: return BTN1 "Fire";
1275 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
1276 case IPT_LIGHTGUN_Y: return "Up";
1277 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
1278 case IPT_LIGHTGUN_X: return "Left";
1279 } /* end of switch */
1280
1281 return "";
1282 }
1283
1284 const struct ControlInfo a51site4_ctrl =
1285 {
1286 false, /* 45_degree_rotation for joystick(s) */
1287 false, /* alternating_controls */
1288 true, /* mirrored_controls */
1289 "Shoot off-screen to reload. Note: many pc lightguns have a dedicated reload button, which mame supports.", /* control_details */
1290 &a51site4_get_ctrl_name
1291 };
1292
a51site4_get_ctrl_name(int type)1293 const char *a51site4_get_ctrl_name(int type)
1294 {
1295 switch(type)
1296 {
1297 case IPT_BUTTON1: return BTN1 "Fire";
1298 case IPT_LIGHTGUN_X: return "Aim Left";
1299 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
1300 case IPT_LIGHTGUN_Y: return "Aim Up";
1301 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
1302 } /* end of switch */
1303
1304 return "";
1305 }
1306
1307 const struct ControlInfo argus_ctrl =
1308 {
1309 false, /* 45_degree_rotation for joystick(s) */
1310 true, /* alternating_controls */
1311 true, /* mirrored_controls */
1312 "Fire button shoots flying objects, the laser hits the ground units", /* control_details */
1313 &argus_get_ctrl_name
1314 };
1315
argus_get_ctrl_name(int type)1316 const char *argus_get_ctrl_name(int type)
1317 {
1318 switch(type)
1319 {
1320 case IPT_BUTTON1: return BTN1 "Fire";
1321 case IPT_BUTTON2: return BTN2 "Laser";
1322 } /* end of switch */
1323
1324 return joy4way_labels(type);
1325 }
1326
1327 const struct ControlInfo arkarea_ctrl =
1328 {
1329 false, /* 45_degree_rotation for joystick(s) */
1330 false, /* alternating_controls */
1331 true, /* mirrored_controls */
1332 "To change direction hold the direction button down while using the joystick", /* control_details */
1333 &arkarea_get_ctrl_name
1334 };
1335
arkarea_get_ctrl_name(int type)1336 const char *arkarea_get_ctrl_name(int type)
1337 {
1338 switch(type)
1339 {
1340 case IPT_BUTTON1: return BTN1 "Fire";
1341 case IPT_BUTTON2: return BTN2 "Direction";
1342 } /* end of switch */
1343
1344 return joy4way_labels(type);
1345 }
1346
1347 const struct ControlInfo arkanoid_ctrl =
1348 {
1349 false, /* 45_degree_rotation for joystick(s) */
1350 true, /* alternating_controls */
1351 true, /* mirrored_controls */
1352 "", /* control_details */
1353 &arkanoid_get_ctrl_name
1354 };
1355
arkanoid_get_ctrl_name(int type)1356 const char *arkanoid_get_ctrl_name(int type)
1357 {
1358 switch(type)
1359 {
1360 case IPT_BUTTON1: return BTN1 "Fire";
1361 case IPT_DIAL: return "Left";
1362 case (IPT_DIAL + IPT_EXTENSION): return "Right";
1363 } /* end of switch */
1364
1365 return "";
1366 }
1367
1368 const struct ControlInfo arknoid2_ctrl =
1369 {
1370 false, /* 45_degree_rotation for joystick(s) */
1371 true, /* alternating_controls */
1372 true, /* mirrored_controls */
1373 "", /* control_details */
1374 &arknoid2_get_ctrl_name
1375 };
1376
arknoid2_get_ctrl_name(int type)1377 const char *arknoid2_get_ctrl_name(int type)
1378 {
1379 switch(type)
1380 {
1381 case IPT_BUTTON1: return BTN1 "Fire";
1382 case IPT_DIAL: return "Left";
1383 case (IPT_DIAL + IPT_EXTENSION): return "Right";
1384 } /* end of switch */
1385
1386 return "";
1387 }
1388
1389 const struct ControlInfo arlingtn_ctrl =
1390 {
1391 false, /* 45_degree_rotation for joystick(s) */
1392 true, /* alternating_controls */
1393 true, /* mirrored_controls */
1394 "Sirp Please fix me.... vertical 2 ways have the wrong labels showing up and there isn't a directional 2 way button (vertical), which is what I use.", /* control_details */
1395 &arlingtn_get_ctrl_name
1396 };
1397
arlingtn_get_ctrl_name(int type)1398 const char *arlingtn_get_ctrl_name(int type)
1399 {
1400 switch(type)
1401 {
1402 case IPT_BUTTON1: return BTN1 "WIN";
1403 case IPT_BUTTON2: return BTN2 "PLACE";
1404 case IPT_BUTTON3: return BTN3 "SHOW";
1405 case IPT_BUTTON4: return BTN4 "COLLECT";
1406 case IPT_JOYSTICK_DOWN: return "Down";
1407 case IPT_JOYSTICK_UP: return "Up";
1408 } /* end of switch */
1409
1410 return "";
1411 }
1412
1413 const struct ControlInfo armwrest_ctrl =
1414 {
1415 false, /* 45_degree_rotation for joystick(s) */
1416 false, /* alternating_controls */
1417 false, /* mirrored_controls */
1418 "This Game only uses 3 directions of the 4 way stick. Down is not used.", /* control_details */
1419 &armwrest_get_ctrl_name
1420 };
1421
armwrest_get_ctrl_name(int type)1422 const char *armwrest_get_ctrl_name(int type)
1423 {
1424 switch(type)
1425 {
1426 case IPT_BUTTON1: return BTN1 "Power";
1427 case IPT_JOYSTICK_LEFT: return "Left";
1428 case IPT_JOYSTICK_UP: return "Pull";
1429 case IPT_JOYSTICK_RIGHT: return "Right";
1430 } /* end of switch */
1431
1432 return "";
1433 }
1434
1435 const struct ControlInfo armedf_ctrl =
1436 {
1437 false, /* 45_degree_rotation for joystick(s) */
1438 true, /* alternating_controls */
1439 true, /* mirrored_controls */
1440 "Button 3 is mapped in driver armedf.c but isn't used", /* control_details */
1441 &armedf_get_ctrl_name
1442 };
1443
armedf_get_ctrl_name(int type)1444 const char *armedf_get_ctrl_name(int type)
1445 {
1446 switch(type)
1447 {
1448 case IPT_BUTTON1: return BTN1 "Fire";
1449 case IPT_BUTTON2: return BTN2 "Special";
1450 case IPT_BUTTON3: return BTN3 "Unknown";
1451 } /* end of switch */
1452
1453 return joy4way_labels(type);
1454 }
1455
1456 const struct ControlInfo armora_ctrl =
1457 {
1458 false, /* 45_degree_rotation for joystick(s) */
1459 false, /* alternating_controls */
1460 true, /* mirrored_controls */
1461 "Something of note is this game is pretty much unplayable in Mame without the artwork pack that goes with the rom. Be sure to download it.", /* control_details */
1462 &armora_get_ctrl_name
1463 };
1464
armora_get_ctrl_name(int type)1465 const char *armora_get_ctrl_name(int type)
1466 {
1467 switch(type)
1468 {
1469 case IPT_BUTTON1: return BTN1 "Fire";
1470 case IPT_BUTTON2: return BTN2 "Forward";
1471 } /* end of switch */
1472
1473 return joy2way_labels(type);
1474 }
1475
1476 const struct ControlInfo armorcar_ctrl =
1477 {
1478 false, /* 45_degree_rotation for joystick(s) */
1479 true, /* alternating_controls */
1480 true, /* mirrored_controls */
1481 "I think a bit of how to play info might be necessary. The sawhorse button releases a police barrier to crash cars. The 2nd gear button makes you go faster, but only while it is held.", /* control_details */
1482 &armorcar_get_ctrl_name
1483 };
1484
armorcar_get_ctrl_name(int type)1485 const char *armorcar_get_ctrl_name(int type)
1486 {
1487 switch(type)
1488 {
1489 case IPT_BUTTON1: return BTN1 "Sawhorse";
1490 case IPT_BUTTON2: return BTN2 "2nd Gear";
1491 } /* end of switch */
1492
1493 return joy4way_labels(type);
1494 }
1495
1496 const struct ControlInfo ashura_ctrl =
1497 {
1498 false, /* 45_degree_rotation for joystick(s) */
1499 false, /* alternating_controls */
1500 true, /* mirrored_controls */
1501 "", /* control_details */
1502 &ashura_get_ctrl_name
1503 };
1504
ashura_get_ctrl_name(int type)1505 const char *ashura_get_ctrl_name(int type)
1506 {
1507 switch(type)
1508 {
1509 case IPT_BUTTON1: return BTN1 "Fire";
1510 case IPT_BUTTON2: return BTN2 "Bomb";
1511 } /* end of switch */
1512
1513 return joy4way_labels(type);
1514 }
1515
1516 const struct ControlInfo aso_ctrl =
1517 {
1518 false, /* 45_degree_rotation for joystick(s) */
1519 true, /* alternating_controls */
1520 true, /* mirrored_controls */
1521 "", /* control_details */
1522 &aso_get_ctrl_name
1523 };
1524
aso_get_ctrl_name(int type)1525 const char *aso_get_ctrl_name(int type)
1526 {
1527 switch(type)
1528 {
1529 case IPT_BUTTON1: return BTN1 "Laser";
1530 case IPT_BUTTON2: return BTN2 "Missile";
1531 case IPT_BUTTON3: return BTN3 "Power Up";
1532 } /* end of switch */
1533
1534 return joy4way_labels(type);
1535 }
1536
1537 const struct ControlInfo assault_ctrl =
1538 {
1539 false, /* 45_degree_rotation for joystick(s) */
1540 false, /* alternating_controls */
1541 false, /* mirrored_controls */
1542 "Mame-wise, this game is really odd. The original game uses dual 4-way trigger sticks. However the author of the mame driver also hacked in an optional 1 stick control scheme so you can play the game with a regular single stick. Unfortunately, this hack interferes with the real inputs so you have to clear one or the other to play properly. It should also be noted that you can not rapid roll with the hack as the game requires you to press both sticks left or right at once to do a roll. Also there is a phantom button defined that is useless. Gameplay Tips: To rapid roll push both sticks in the same direction. (Left or right only) To launch a grenade push both sticks to the outside and fire when ready.", /* control_details */
1543 &assault_get_ctrl_name
1544 };
1545
assault_get_ctrl_name(int type)1546 const char *assault_get_ctrl_name(int type)
1547 {
1548 switch(type)
1549 {
1550 case IPT_BUTTON1: return BTN1 "Fire";
1551 case IPT_JOYSTICKRIGHT_RIGHT: return "Rapid Roll Right";
1552 } /* end of switch */
1553
1554 return "";
1555 }
1556
1557 const struct ControlInfo asterix_ctrl =
1558 {
1559 false, /* 45_degree_rotation for joystick(s) */
1560 false, /* alternating_controls */
1561 true, /* mirrored_controls */
1562 "Watch the attract screen to view general and special moves", /* control_details */
1563 &asterix_get_ctrl_name
1564 };
1565
asterix_get_ctrl_name(int type)1566 const char *asterix_get_ctrl_name(int type)
1567 {
1568 switch(type)
1569 {
1570 case IPT_BUTTON1: return BTN1 "Attack";
1571 case IPT_BUTTON2: return BTN2 "Jump";
1572 } /* end of switch */
1573
1574 return joy4way_labels(type);
1575 }
1576
1577 const struct ControlInfo asteroid_ctrl =
1578 {
1579 false, /* 45_degree_rotation for joystick(s) */
1580 true, /* alternating_controls */
1581 true, /* mirrored_controls */
1582 "", /* control_details */
1583 &asteroid_get_ctrl_name
1584 };
1585
asteroid_get_ctrl_name(int type)1586 const char *asteroid_get_ctrl_name(int type)
1587 {
1588 switch(type)
1589 {
1590 case IPT_BUTTON1: return BTN1 "FIRE";
1591 case IPT_BUTTON2: return BTN2 "THRUST";
1592 case IPT_BUTTON3: return BTN3 "HYPER SPACE";
1593 case IPT_JOYSTICK_LEFT: return "Rotate Left";
1594 case IPT_JOYSTICK_RIGHT: return "Rotate Right";
1595 } /* end of switch */
1596
1597 return "";
1598 }
1599
1600 const struct ControlInfo astdelux_ctrl =
1601 {
1602 false, /* 45_degree_rotation for joystick(s) */
1603 true, /* alternating_controls */
1604 true, /* mirrored_controls */
1605 "", /* control_details */
1606 &astdelux_get_ctrl_name
1607 };
1608
astdelux_get_ctrl_name(int type)1609 const char *astdelux_get_ctrl_name(int type)
1610 {
1611 switch(type)
1612 {
1613 case IPT_BUTTON1: return BTN1 "FIRE";
1614 case IPT_BUTTON2: return BTN2 "THRUST";
1615 case IPT_BUTTON3: return BTN3 "SHIELDS";
1616 case IPT_JOYSTICK_RIGHT: return "ROTATE RIGHT";
1617 case IPT_JOYSTICK_LEFT: return "ROTATE LEFT";
1618 } /* end of switch */
1619
1620 return "";
1621 }
1622
1623 const struct ControlInfo astrob_ctrl =
1624 {
1625 false, /* 45_degree_rotation for joystick(s) */
1626 true, /* alternating_controls */
1627 true, /* mirrored_controls */
1628 "Don't think Star Trek when you see the warp button. It activates a 10 second time warp which slows the enemies down. So who ever said that Binx was innovative was about 20 years too late.", /* control_details */
1629 &astrob_get_ctrl_name
1630 };
1631
astrob_get_ctrl_name(int type)1632 const char *astrob_get_ctrl_name(int type)
1633 {
1634 switch(type)
1635 {
1636 case IPT_BUTTON1: return BTN1 "Fire";
1637 case IPT_BUTTON2: return BTN2 "Warp";
1638 } /* end of switch */
1639
1640 return joy2way_labels(type);
1641 }
1642
1643 const struct ControlInfo astrof_ctrl =
1644 {
1645 false, /* 45_degree_rotation for joystick(s) */
1646 true, /* alternating_controls */
1647 true, /* mirrored_controls */
1648 "", /* control_details */
1649 &astrof_get_ctrl_name
1650 };
1651
astrof_get_ctrl_name(int type)1652 const char *astrof_get_ctrl_name(int type)
1653 {
1654 switch(type)
1655 {
1656 case IPT_BUTTON1: return BTN1 "Missile";
1657 } /* end of switch */
1658
1659 return joy2way_labels(type);
1660 }
1661
1662 const struct ControlInfo astinvad_ctrl =
1663 {
1664 false, /* 45_degree_rotation for joystick(s) */
1665 true, /* alternating_controls */
1666 true, /* mirrored_controls */
1667 "", /* control_details */
1668 &astinvad_get_ctrl_name
1669 };
1670
astinvad_get_ctrl_name(int type)1671 const char *astinvad_get_ctrl_name(int type)
1672 {
1673 switch(type)
1674 {
1675 case IPT_BUTTON1: return BTN1 "FIRE";
1676 } /* end of switch */
1677
1678 return joy2way_labels(type);
1679 }
1680
1681 const struct ControlInfo asuka_ctrl =
1682 {
1683 false, /* 45_degree_rotation for joystick(s) */
1684 false, /* alternating_controls */
1685 true, /* mirrored_controls */
1686 "", /* control_details */
1687 &asuka_get_ctrl_name
1688 };
1689
asuka_get_ctrl_name(int type)1690 const char *asuka_get_ctrl_name(int type)
1691 {
1692 switch(type)
1693 {
1694 case IPT_BUTTON1: return BTN1 "Fire";
1695 case IPT_BUTTON2: return BTN2 "Bomb";
1696 } /* end of switch */
1697
1698 return joy4way_labels(type);
1699 }
1700
1701 const struct ControlInfo asylum_ctrl =
1702 {
1703 false, /* 45_degree_rotation for joystick(s) */
1704 false, /* alternating_controls */
1705 true, /* mirrored_controls */
1706 "", /* control_details */
1707 &asylum_get_ctrl_name
1708 };
1709
asylum_get_ctrl_name(int type)1710 const char *asylum_get_ctrl_name(int type)
1711 {
1712 switch(type)
1713 {
1714 case IPT_BUTTON1: return BTN1 "Attack";
1715 case IPT_BUTTON2: return BTN2 "Jump";
1716 } /* end of switch */
1717
1718 return joy4way_labels(type);
1719 }
1720
1721 const struct ControlInfo abaseb_ctrl =
1722 {
1723 false, /* 45_degree_rotation for joystick(s) */
1724 false, /* alternating_controls */
1725 true, /* mirrored_controls */
1726 "Action button depends if batting or fielding - selects hit, swings bat, selects pitch, throws etc", /* control_details */
1727 &abaseb_get_ctrl_name
1728 };
1729
abaseb_get_ctrl_name(int type)1730 const char *abaseb_get_ctrl_name(int type)
1731 {
1732 switch(type)
1733 {
1734 case IPT_BUTTON1: return BTN1 "Action";
1735 case IPT_TRACKBALL_X: return "Left";
1736 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
1737 case IPT_TRACKBALL_Y: return "Up";
1738 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
1739 } /* end of switch */
1740
1741 return "";
1742 }
1743
1744 const struct ControlInfo atarifb_ctrl =
1745 {
1746 false, /* 45_degree_rotation for joystick(s) */
1747 false, /* alternating_controls */
1748 true, /* mirrored_controls */
1749 "There are 4 plays (well, four offense, four defense) per player displayed as part of the control panel with an LED for each play and selected with the action button. You cannot play against the computer: this game has to be played with two players. There is a four player version with four trackballs /* control_details */ that version has to be played with 4 players. **Update** I looked in the mame cpo pack and found a pic to fill in the button label. Rebel, if you need a copy of the cpo pack please contact me, it's very helpful.", /* control_details */
1750 &atarifb_get_ctrl_name
1751 };
1752
atarifb_get_ctrl_name(int type)1753 const char *atarifb_get_ctrl_name(int type)
1754 {
1755 switch(type)
1756 {
1757 case IPT_BUTTON1: return BTN1 "Play Select: Press to Pass / Kick";
1758 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
1759 case IPT_TRACKBALL_Y: return "Up";
1760 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
1761 case IPT_TRACKBALL_X: return "Left";
1762 } /* end of switch */
1763
1764 return "";
1765 }
1766
1767 const struct ControlInfo ataxx_ctrl =
1768 {
1769 false, /* 45_degree_rotation for joystick(s) */
1770 false, /* alternating_controls */
1771 true, /* mirrored_controls */
1772 "", /* control_details */
1773 &ataxx_get_ctrl_name
1774 };
1775
ataxx_get_ctrl_name(int type)1776 const char *ataxx_get_ctrl_name(int type)
1777 {
1778 switch(type)
1779 {
1780 case IPT_BUTTON1: return BTN1 "Select";
1781 case IPT_TRACKBALL_X: return "Left";
1782 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
1783 case IPT_TRACKBALL_Y: return "Up";
1784 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
1785 } /* end of switch */
1786
1787 return "";
1788 }
1789
1790 const struct ControlInfo athena_ctrl =
1791 {
1792 false, /* 45_degree_rotation for joystick(s) */
1793 true, /* alternating_controls */
1794 true, /* mirrored_controls */
1795 "", /* control_details */
1796 &athena_get_ctrl_name
1797 };
1798
athena_get_ctrl_name(int type)1799 const char *athena_get_ctrl_name(int type)
1800 {
1801 switch(type)
1802 {
1803 case IPT_BUTTON1: return BTN1 "Jump";
1804 case IPT_BUTTON2: return BTN2 "Attack";
1805 } /* end of switch */
1806
1807 return joy4way_labels(type);
1808 }
1809
1810 const struct ControlInfo atehate_ctrl =
1811 {
1812 false, /* 45_degree_rotation for joystick(s) */
1813 false, /* alternating_controls */
1814 true, /* mirrored_controls */
1815 "", /* control_details */
1816 &atehate_get_ctrl_name
1817 };
1818
atehate_get_ctrl_name(int type)1819 const char *atehate_get_ctrl_name(int type)
1820 {
1821 switch(type)
1822 {
1823 case IPT_BUTTON1: return BTN1 "1";
1824 case IPT_BUTTON2: return BTN2 "2";
1825 case IPT_BUTTON3: return BTN3 "3";
1826 case IPT_BUTTON4: return BTN4 "4";
1827 } /* end of switch */
1828
1829 return "";
1830 }
1831
1832 const struct ControlInfo atomicp_ctrl =
1833 {
1834 false, /* 45_degree_rotation for joystick(s) */
1835 false, /* alternating_controls */
1836 true, /* mirrored_controls */
1837 "If a falling block has one block flashing you can press the second button and you get four choices. One of these it to get to select what the next shape will be. Mame has this as a 8-way in the system16.c driver but while playing acts like a 4-way", /* control_details */
1838 &atomicp_get_ctrl_name
1839 };
1840
atomicp_get_ctrl_name(int type)1841 const char *atomicp_get_ctrl_name(int type)
1842 {
1843 switch(type)
1844 {
1845 case IPT_BUTTON1: return BTN1 "Rotate";
1846 case IPT_BUTTON2: return BTN2 "Special";
1847 } /* end of switch */
1848
1849 return joy4way_labels(type);
1850 }
1851
1852 const struct ControlInfo robokid_ctrl =
1853 {
1854 false, /* 45_degree_rotation for joystick(s) */
1855 true, /* alternating_controls */
1856 true, /* mirrored_controls */
1857 "", /* control_details */
1858 &robokid_get_ctrl_name
1859 };
1860
robokid_get_ctrl_name(int type)1861 const char *robokid_get_ctrl_name(int type)
1862 {
1863 switch(type)
1864 {
1865 case IPT_BUTTON1: return BTN1 "Fire";
1866 case IPT_BUTTON2: return BTN2 "Weapon Select";
1867 } /* end of switch */
1868
1869 return joy4way_labels(type);
1870 }
1871
1872 const struct ControlInfo aurail_ctrl =
1873 {
1874 false, /* 45_degree_rotation for joystick(s) */
1875 true, /* alternating_controls */
1876 true, /* mirrored_controls */
1877 "Special sends out remote attack drones", /* control_details */
1878 &aurail_get_ctrl_name
1879 };
1880
aurail_get_ctrl_name(int type)1881 const char *aurail_get_ctrl_name(int type)
1882 {
1883 switch(type)
1884 {
1885 case IPT_BUTTON1: return BTN1 "Fire";
1886 case IPT_BUTTON2: return BTN2 "Sepcial";
1887 case IPT_BUTTON3: return BTN3 "Shield";
1888 } /* end of switch */
1889
1890 return joy4way_labels(type);
1891 }
1892
1893 const struct ControlInfo avalnche_ctrl =
1894 {
1895 false, /* 45_degree_rotation for joystick(s) */
1896 true, /* alternating_controls */
1897 true, /* mirrored_controls */
1898 "", /* control_details */
1899 &avalnche_get_ctrl_name
1900 };
1901
avalnche_get_ctrl_name(int type)1902 const char *avalnche_get_ctrl_name(int type)
1903 {
1904 switch(type)
1905 {
1906 case IPT_BUTTON1: return BTN1 "Serve";
1907 case IPT_PADDLE: return "Left";
1908 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
1909 } /* end of switch */
1910
1911 return "";
1912 }
1913
1914 const struct ControlInfo avengers_ctrl =
1915 {
1916 false, /* 45_degree_rotation for joystick(s) */
1917 false, /* alternating_controls */
1918 true, /* mirrored_controls */
1919 "", /* control_details */
1920 &avengers_get_ctrl_name
1921 };
1922
avengers_get_ctrl_name(int type)1923 const char *avengers_get_ctrl_name(int type)
1924 {
1925 switch(type)
1926 {
1927 case IPT_BUTTON1: return BTN1 "Punch";
1928 case IPT_BUTTON2: return BTN2 "Punch";
1929 case IPT_BUTTON3: return BTN3 "Kick";
1930 case IPT_BUTTON4: return BTN4 "Kick";
1931
1932 } /* end of switch */
1933
1934 return joy4way_labels(type);
1935 }
1936
1937 const struct ControlInfo avspirit_ctrl =
1938 {
1939 false, /* 45_degree_rotation for joystick(s) */
1940 true, /* alternating_controls */
1941 true, /* mirrored_controls */
1942 "Button A - Fire Button B - Jump", /* control_details */
1943 &avspirit_get_ctrl_name
1944 };
1945
avspirit_get_ctrl_name(int type)1946 const char *avspirit_get_ctrl_name(int type)
1947 {
1948 switch(type)
1949 {
1950 case IPT_BUTTON1: return BTN1 "A";
1951 case IPT_BUTTON2: return BTN2 "B";
1952 } /* end of switch */
1953
1954 return joy4way_labels(type);
1955 }
1956
1957 const struct ControlInfo aztarac_ctrl =
1958 {
1959 false, /* 45_degree_rotation for joystick(s) */
1960 true, /* alternating_controls */
1961 true, /* mirrored_controls */
1962 "", /* control_details */
1963 &aztarac_get_ctrl_name
1964 };
1965
aztarac_get_ctrl_name(int type)1966 const char *aztarac_get_ctrl_name(int type)
1967 {
1968 switch(type)
1969 {
1970 case IPT_BUTTON1: return BTN1 "Fire";
1971 case IPT_BUTTON2: return BTN2 "Radar";
1972 case IPT_AD_STICK_X: return "Left";
1973 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
1974 case IPT_AD_STICK_Y: return "Up";
1975 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
1976 case IPT_DIAL: return "Aim Left";
1977 case (IPT_DIAL + IPT_EXTENSION): return "Aim Right";
1978 } /* end of switch */
1979
1980 return "";
1981 }
1982
1983 const struct ControlInfo azurian_ctrl =
1984 {
1985 false, /* 45_degree_rotation for joystick(s) */
1986 true, /* alternating_controls */
1987 true, /* mirrored_controls */
1988 "", /* control_details */
1989 &azurian_get_ctrl_name
1990 };
1991
azurian_get_ctrl_name(int type)1992 const char *azurian_get_ctrl_name(int type)
1993 {
1994 switch(type)
1995 {
1996 case IPT_BUTTON1: return BTN1 "Fire";
1997 } /* end of switch */
1998
1999 return joy4way_labels(type);
2000 }
2001
2002 const struct ControlInfo baddudes_ctrl =
2003 {
2004 false, /* 45_degree_rotation for joystick(s) */
2005 false, /* alternating_controls */
2006 true, /* mirrored_controls */
2007 "Holding down attack while standing still will charge up a super punch. Pressing jump and attack at once will do a super kick at the expense of some of your energy.", /* control_details */
2008 &baddudes_get_ctrl_name
2009 };
2010
baddudes_get_ctrl_name(int type)2011 const char *baddudes_get_ctrl_name(int type)
2012 {
2013 switch(type)
2014 {
2015 case IPT_BUTTON1: return BTN1 "Attack";
2016 case IPT_BUTTON2: return BTN2 "Jump";
2017 } /* end of switch */
2018
2019 return joy4way_labels(type);
2020 }
2021
2022 const struct ControlInfo badlands_ctrl =
2023 {
2024 false, /* 45_degree_rotation for joystick(s) */
2025 false, /* alternating_controls */
2026 true, /* mirrored_controls */
2027 "", /* control_details */
2028 &badlands_get_ctrl_name
2029 };
2030
badlands_get_ctrl_name(int type)2031 const char *badlands_get_ctrl_name(int type)
2032 {
2033 switch(type)
2034 {
2035 case IPT_BUTTON1: return BTN1 "Gas";
2036 case IPT_BUTTON2: return BTN2 "Fire";
2037 case IPT_DIAL: return "Left";
2038 case (IPT_DIAL + IPT_EXTENSION): return "Right";
2039 } /* end of switch */
2040
2041 return "";
2042 }
2043
2044 const struct ControlInfo bagman_ctrl =
2045 {
2046 false, /* 45_degree_rotation for joystick(s) */
2047 true, /* alternating_controls */
2048 true, /* mirrored_controls */
2049 "", /* control_details */
2050 &bagman_get_ctrl_name
2051 };
2052
bagman_get_ctrl_name(int type)2053 const char *bagman_get_ctrl_name(int type)
2054 {
2055 switch(type)
2056 {
2057 case IPT_BUTTON1: return BTN1 "Action";
2058 } /* end of switch */
2059
2060 return joy4way_labels(type);
2061 }
2062
2063 const struct ControlInfo bkrtmaq_ctrl =
2064 {
2065 false, /* 45_degree_rotation for joystick(s) */
2066 false, /* alternating_controls */
2067 true, /* mirrored_controls */
2068 "This will display in mame as a 4 player even though it is only 2 player.", /* control_details */
2069 &bkrtmaq_get_ctrl_name
2070 };
2071
bkrtmaq_get_ctrl_name(int type)2072 const char *bkrtmaq_get_ctrl_name(int type)
2073 {
2074 switch(type)
2075 {
2076 case IPT_BUTTON1: return BTN1 "1";
2077 case IPT_BUTTON2: return BTN2 "2";
2078 case IPT_BUTTON3: return BTN3 "3";
2079 case IPT_BUTTON4: return BTN4 "4";
2080 } /* end of switch */
2081
2082 return "";
2083 }
2084
2085 const struct ControlInfo bakutotu_ctrl =
2086 {
2087 false, /* 45_degree_rotation for joystick(s) */
2088 true, /* alternating_controls */
2089 true, /* mirrored_controls */
2090 "All buttons do the same thing", /* control_details */
2091 &bakutotu_get_ctrl_name
2092 };
2093
bakutotu_get_ctrl_name(int type)2094 const char *bakutotu_get_ctrl_name(int type)
2095 {
2096 switch(type)
2097 {
2098 case IPT_BUTTON1: return BTN1 "Fire";
2099 case IPT_BUTTON2: return BTN2 "Fire";
2100 case IPT_BUTTON3: return BTN3 "Fire";
2101 } /* end of switch */
2102
2103 return joy4way_labels(type);
2104 }
2105
2106 const struct ControlInfo ballbomb_ctrl =
2107 {
2108 false, /* 45_degree_rotation for joystick(s) */
2109 true, /* alternating_controls */
2110 true, /* mirrored_controls */
2111 "", /* control_details */
2112 &ballbomb_get_ctrl_name
2113 };
2114
ballbomb_get_ctrl_name(int type)2115 const char *ballbomb_get_ctrl_name(int type)
2116 {
2117 switch(type)
2118 {
2119 case IPT_BUTTON1: return BTN1 "Fire";
2120 } /* end of switch */
2121
2122 return joy2way_labels(type);
2123 }
2124
2125 const struct ControlInfo ballbros_ctrl =
2126 {
2127 false, /* 45_degree_rotation for joystick(s) */
2128 false, /* alternating_controls */
2129 true, /* mirrored_controls */
2130 "Mame has 3 buttons mapped but the game only has 1.", /* control_details */
2131 &ballbros_get_ctrl_name
2132 };
2133
ballbros_get_ctrl_name(int type)2134 const char *ballbros_get_ctrl_name(int type)
2135 {
2136 switch(type)
2137 {
2138 case IPT_BUTTON1: return BTN1 "Rotate";
2139 case IPT_BUTTON2: return BTN2 "Unknown";
2140 case IPT_BUTTON3: return BTN3 "Unknown";
2141 case IPT_JOYSTICK_LEFT: return "Left";
2142 case IPT_JOYSTICK_UP: return "Up";
2143 case IPT_JOYSTICK_RIGHT: return "Right";
2144 } /* end of switch */
2145
2146 return "";
2147 }
2148
2149 const struct ControlInfo baluba_ctrl =
2150 {
2151 false, /* 45_degree_rotation for joystick(s) */
2152 true, /* alternating_controls */
2153 true, /* mirrored_controls */
2154 "", /* control_details */
2155 &baluba_get_ctrl_name
2156 };
2157
baluba_get_ctrl_name(int type)2158 const char *baluba_get_ctrl_name(int type)
2159 {
2160 switch(type)
2161 {
2162 case IPT_BUTTON1: return BTN1 "Jump";
2163 } /* end of switch */
2164
2165 return joy4way_labels(type);
2166 }
2167
2168 const struct ControlInfo bangball_ctrl =
2169 {
2170 false, /* 45_degree_rotation for joystick(s) */
2171 false, /* alternating_controls */
2172 true, /* mirrored_controls */
2173 "", /* control_details */
2174 &bangball_get_ctrl_name
2175 };
2176
bangball_get_ctrl_name(int type)2177 const char *bangball_get_ctrl_name(int type)
2178 {
2179 switch(type)
2180 {
2181 case IPT_BUTTON1: return BTN1 "Throw";
2182 } /* end of switch */
2183
2184 return joy4way_labels(type);
2185 }
2186
2187 const struct ControlInfo bang_ctrl =
2188 {
2189 false, /* 45_degree_rotation for joystick(s) */
2190 false, /* alternating_controls */
2191 true, /* mirrored_controls */
2192 "", /* control_details */
2193 &bang_get_ctrl_name
2194 };
2195
bang_get_ctrl_name(int type)2196 const char *bang_get_ctrl_name(int type)
2197 {
2198 switch(type)
2199 {
2200 case IPT_BUTTON1: return BTN1 "Fire";
2201 case IPT_LIGHTGUN_X: return "Left";
2202 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
2203 case IPT_LIGHTGUN_Y: return "Up";
2204 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
2205 } /* end of switch */
2206
2207 return "";
2208 }
2209
2210 const struct ControlInfo bankp_ctrl =
2211 {
2212 false, /* 45_degree_rotation for joystick(s) */
2213 true, /* alternating_controls */
2214 true, /* mirrored_controls */
2215 "", /* control_details */
2216 &bankp_get_ctrl_name
2217 };
2218
bankp_get_ctrl_name(int type)2219 const char *bankp_get_ctrl_name(int type)
2220 {
2221 switch(type)
2222 {
2223 case IPT_BUTTON1: return BTN1 "Shoot Door 1";
2224 case IPT_BUTTON2: return BTN2 "Shoot Door 2";
2225 case IPT_BUTTON3: return BTN3 "Shoot Door 3";
2226 } /* end of switch */
2227
2228 return joy2way_labels(type);
2229 }
2230
2231 const struct ControlInfo baraduke_ctrl =
2232 {
2233 false, /* 45_degree_rotation for joystick(s) */
2234 true, /* alternating_controls */
2235 true, /* mirrored_controls */
2236 "", /* control_details */
2237 &baraduke_get_ctrl_name
2238 };
2239
baraduke_get_ctrl_name(int type)2240 const char *baraduke_get_ctrl_name(int type)
2241 {
2242 switch(type)
2243 {
2244 case IPT_BUTTON1: return BTN1 "Fire";
2245 } /* end of switch */
2246
2247 return joy4way_labels(type);
2248 }
2249
2250 const struct ControlInfo barricad_ctrl =
2251 {
2252 false, /* 45_degree_rotation for joystick(s) */
2253 false, /* alternating_controls */
2254 true, /* mirrored_controls */
2255 "Panel had directional buttons but of course mame is mapped to the normal joystick inputs", /* control_details */
2256 &barricad_get_ctrl_name
2257 };
2258
barricad_get_ctrl_name(int type)2259 const char *barricad_get_ctrl_name(int type)
2260 {
2261 return joy4way_labels(type);
2262 }
2263
2264 const struct ControlInfo barrier_ctrl =
2265 {
2266 false, /* 45_degree_rotation for joystick(s) */
2267 true, /* alternating_controls */
2268 true, /* mirrored_controls */
2269 "Mame has the original directional buttons mapped to the normal mame movement buttons Buttons are used to select skill level", /* control_details */
2270 &barrier_get_ctrl_name
2271 };
2272
barrier_get_ctrl_name(int type)2273 const char *barrier_get_ctrl_name(int type)
2274 {
2275 switch(type)
2276 {
2277 case IPT_BUTTON1: return BTN1 "Beginner";
2278 case IPT_BUTTON2: return BTN2 "Intermediate";
2279 case IPT_BUTTON3: return BTN3 "Expert";
2280 } /* end of switch */
2281
2282 return joy4way_labels(type);
2283 }
2284
2285 const struct ControlInfo bsktball_ctrl =
2286 {
2287 false, /* 45_degree_rotation for joystick(s) */
2288 false, /* alternating_controls */
2289 true, /* mirrored_controls */
2290 "On the real machine this game had the start button wired onto the action button and the true caption reads 'Start, Shoot & Jump' However it appears that the start button has been split out in mame.", /* control_details */
2291 &bsktball_get_ctrl_name
2292 };
2293
bsktball_get_ctrl_name(int type)2294 const char *bsktball_get_ctrl_name(int type)
2295 {
2296 switch(type)
2297 {
2298 case IPT_BUTTON1: return BTN1 "Shoot & Jump";
2299 case IPT_TRACKBALL_X: return "Left";
2300 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
2301 case IPT_TRACKBALL_Y: return "Up";
2302 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
2303 } /* end of switch */
2304
2305 return "";
2306 }
2307
2308 const struct ControlInfo batman_ctrl =
2309 {
2310 false, /* 45_degree_rotation for joystick(s) */
2311 true, /* alternating_controls */
2312 true, /* mirrored_controls */
2313 "", /* control_details */
2314 &batman_get_ctrl_name
2315 };
2316
batman_get_ctrl_name(int type)2317 const char *batman_get_ctrl_name(int type)
2318 {
2319 switch(type)
2320 {
2321 case IPT_BUTTON1: return BTN1 "Action";
2322 case IPT_BUTTON2: return BTN2 "Jump";
2323 } /* end of switch */
2324
2325 return joy4way_labels(type);
2326 }
2327
2328 const struct ControlInfo batsugun_ctrl =
2329 {
2330 false, /* 45_degree_rotation for joystick(s) */
2331 false, /* alternating_controls */
2332 true, /* mirrored_controls */
2333 "", /* control_details */
2334 &batsugun_get_ctrl_name
2335 };
2336
batsugun_get_ctrl_name(int type)2337 const char *batsugun_get_ctrl_name(int type)
2338 {
2339 switch(type)
2340 {
2341 case IPT_BUTTON1: return BTN1 "Shoot";
2342 case IPT_BUTTON2: return BTN2 "Bomb";
2343 } /* end of switch */
2344
2345 return joy4way_labels(type);
2346 }
2347
2348 const struct ControlInfo battlnts_ctrl =
2349 {
2350 false, /* 45_degree_rotation for joystick(s) */
2351 true, /* alternating_controls */
2352 true, /* mirrored_controls */
2353 "", /* control_details */
2354 &battlnts_get_ctrl_name
2355 };
2356
battlnts_get_ctrl_name(int type)2357 const char *battlnts_get_ctrl_name(int type)
2358 {
2359 switch(type)
2360 {
2361 case IPT_BUTTON1: return BTN1 "Shoot";
2362 } /* end of switch */
2363
2364 return joy4way_labels(type);
2365 }
2366
2367 const struct ControlInfo bkraidj_ctrl =
2368 {
2369 false, /* 45_degree_rotation for joystick(s) */
2370 false, /* alternating_controls */
2371 true, /* mirrored_controls */
2372 "At the ship select screen: To select a 'main shot power type' fighter, select your ship with A button, To select a 'Bomber power type', select your ship with B button, To select a 'Side shot power type', select your ship with C button, To select a 'Speed up type', select your ship with Start button. During game A - Shoot, B - Bomb", /* control_details */
2373 &bkraidj_get_ctrl_name
2374 };
2375
bkraidj_get_ctrl_name(int type)2376 const char *bkraidj_get_ctrl_name(int type)
2377 {
2378 switch(type)
2379 {
2380 case IPT_BUTTON1: return BTN1 "A";
2381 case IPT_BUTTON2: return BTN2 "B";
2382 case IPT_BUTTON3: return BTN3 "C";
2383 } /* end of switch */
2384
2385 return joy4way_labels(type);
2386 }
2387
2388 const struct ControlInfo battlex_ctrl =
2389 {
2390 false, /* 45_degree_rotation for joystick(s) */
2391 true, /* alternating_controls */
2392 true, /* mirrored_controls */
2393 "", /* control_details */
2394 &battlex_get_ctrl_name
2395 };
2396
battlex_get_ctrl_name(int type)2397 const char *battlex_get_ctrl_name(int type)
2398 {
2399 switch(type)
2400 {
2401 case IPT_BUTTON1: return BTN1 "Fire";
2402 } /* end of switch */
2403
2404 return joy4way_labels(type);
2405 }
2406
2407 const struct ControlInfo bcruzm12_ctrl =
2408 {
2409 false, /* 45_degree_rotation for joystick(s) */
2410 true, /* alternating_controls */
2411 true, /* mirrored_controls */
2412 "Should be just a horizontal 2-way joystick as shown on the coinop link. However mame driver marineb.c has as 8-way", /* control_details */
2413 &bcruzm12_get_ctrl_name
2414 };
2415
bcruzm12_get_ctrl_name(int type)2416 const char *bcruzm12_get_ctrl_name(int type)
2417 {
2418 switch(type)
2419 {
2420 case IPT_BUTTON1: return BTN1 "Fire";
2421 } /* end of switch */
2422
2423 return joy2way_labels(type);
2424 }
2425
2426 const struct ControlInfo btlkroad_ctrl =
2427 {
2428 false, /* 45_degree_rotation for joystick(s) */
2429 false, /* alternating_controls */
2430 true, /* mirrored_controls */
2431 "", /* control_details */
2432 &btlkroad_get_ctrl_name
2433 };
2434
btlkroad_get_ctrl_name(int type)2435 const char *btlkroad_get_ctrl_name(int type)
2436 {
2437 switch(type)
2438 {
2439 case IPT_BUTTON1: return BTN1 "Light Punch";
2440 case IPT_BUTTON2: return BTN2 "Middle Punch";
2441 case IPT_BUTTON3: return BTN3 "Heavy Punch";
2442 case IPT_BUTTON4: return BTN4 "Light Kick";
2443 case IPT_BUTTON5: return BTN5 "Middle Kick";
2444 case IPT_BUTTON6: return BTN6 "Heavy Kick";
2445 case IPT_JOYSTICK_UP: return "Jump";
2446 case IPT_JOYSTICK_DOWN: return "Duck";
2447 case IPT_JOYSTICK_LEFT: return "Left";
2448 case IPT_JOYSTICK_RIGHT: return "Right";
2449 } /* end of switch */
2450
2451 return "";
2452 }
2453
2454 const struct ControlInfo battlane_ctrl =
2455 {
2456 false, /* 45_degree_rotation for joystick(s) */
2457 true, /* alternating_controls */
2458 true, /* mirrored_controls */
2459 "", /* control_details */
2460 &battlane_get_ctrl_name
2461 };
2462
battlane_get_ctrl_name(int type)2463 const char *battlane_get_ctrl_name(int type)
2464 {
2465 switch(type)
2466 {
2467 case IPT_BUTTON1: return BTN1 "Fire";
2468 case IPT_BUTTON2: return BTN2 "Missile";
2469 } /* end of switch */
2470
2471 return joy4way_labels(type);
2472 }
2473
2474 const struct ControlInfo atlantis_ctrl =
2475 {
2476 false, /* 45_degree_rotation for joystick(s) */
2477 true, /* alternating_controls */
2478 true, /* mirrored_controls */
2479 "", /* control_details */
2480 &atlantis_get_ctrl_name
2481 };
2482
atlantis_get_ctrl_name(int type)2483 const char *atlantis_get_ctrl_name(int type)
2484 {
2485 switch(type)
2486 {
2487 case IPT_BUTTON1: return BTN1 "Fire";
2488 case IPT_BUTTON2: return BTN2 "Bomb";
2489 } /* end of switch */
2490
2491 return joy4way_labels(type);
2492 }
2493
2494 const struct ControlInfo battlera_ctrl =
2495 {
2496 false, /* 45_degree_rotation for joystick(s) */
2497 false, /* alternating_controls */
2498 true, /* mirrored_controls */
2499 "", /* control_details */
2500 &battlera_get_ctrl_name
2501 };
2502
battlera_get_ctrl_name(int type)2503 const char *battlera_get_ctrl_name(int type)
2504 {
2505 switch(type)
2506 {
2507 case IPT_BUTTON1: return BTN1 "Fire";
2508 case IPT_BUTTON2: return BTN2 "Jump";
2509 case IPT_BUTTON3: return BTN3 "Grenade";
2510 } /* end of switch */
2511
2512 return joy4way_labels(type);
2513 }
2514
2515 const struct ControlInfo bshark_ctrl =
2516 {
2517 false, /* 45_degree_rotation for joystick(s) */
2518 false, /* alternating_controls */
2519 false, /* mirrored_controls */
2520 "This game uses a one of a kind periscope control and you look into the periscope to see the screen similar to battlezone. For all intensive purposes it's a glorified star wars yoke though.", /* control_details */
2521 &bshark_get_ctrl_name
2522 };
2523
bshark_get_ctrl_name(int type)2524 const char *bshark_get_ctrl_name(int type)
2525 {
2526 switch(type)
2527 {
2528 case IPT_BUTTON1: return BTN1 "Fire";
2529 case IPT_AD_STICK_X: return "Left";
2530 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
2531 case IPT_AD_STICK_Y: return "Up";
2532 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
2533 } /* end of switch */
2534
2535 return "";
2536 }
2537
2538 const struct ControlInfo btoads_ctrl =
2539 {
2540 false, /* 45_degree_rotation for joystick(s) */
2541 false, /* alternating_controls */
2542 true, /* mirrored_controls */
2543 "This game is either set to 2 player, where you can select your toad, or 3 player, where the toads are hard-wired to the panel. You can adjust this setting in the dipswitches.", /* control_details */
2544 &btoads_get_ctrl_name
2545 };
2546
btoads_get_ctrl_name(int type)2547 const char *btoads_get_ctrl_name(int type)
2548 {
2549 switch(type)
2550 {
2551 case IPT_BUTTON1: return BTN1 "Start / Attack";
2552 case IPT_BUTTON2: return BTN2 "Jump";
2553 } /* end of switch */
2554
2555 return joy4way_labels(type);
2556 }
2557
2558 const struct ControlInfo bzone_ctrl =
2559 {
2560 false, /* 45_degree_rotation for joystick(s) */
2561 false, /* alternating_controls */
2562 false, /* mirrored_controls */
2563 "Both handles have holes for a trigger switch, but generally only one has a button.", /* control_details */
2564 &bzone_get_ctrl_name
2565 };
2566
bzone_get_ctrl_name(int type)2567 const char *bzone_get_ctrl_name(int type)
2568 {
2569 switch(type)
2570 {
2571 case IPT_BUTTON1: return BTN1 "Fire";
2572 case IPT_JOYSTICKLEFT_UP: return "Left Tread Forward";
2573 case IPT_JOYSTICKLEFT_DOWN: return "Left Tread Backward";
2574 case IPT_JOYSTICKRIGHT_UP: return "Right Tread Forward";
2575 case IPT_JOYSTICKRIGHT_DOWN: return "Right Tread Backward";
2576 } /* end of switch */
2577
2578 return "";
2579 }
2580
2581 const struct ControlInfo bayroute_ctrl =
2582 {
2583 false, /* 45_degree_rotation for joystick(s) */
2584 false, /* alternating_controls */
2585 true, /* mirrored_controls */
2586 "", /* control_details */
2587 &bayroute_get_ctrl_name
2588 };
2589
bayroute_get_ctrl_name(int type)2590 const char *bayroute_get_ctrl_name(int type)
2591 {
2592 switch(type)
2593 {
2594 case IPT_BUTTON1: return BTN1 "Fire";
2595 case IPT_BUTTON2: return BTN2 "Jump";
2596 } /* end of switch */
2597
2598 return joy4way_labels(type);
2599 }
2600
2601 const struct ControlInfo beaminv_ctrl =
2602 {
2603 false, /* 45_degree_rotation for joystick(s) */
2604 true, /* alternating_controls */
2605 true, /* mirrored_controls */
2606 "", /* control_details */
2607 &beaminv_get_ctrl_name
2608 };
2609
beaminv_get_ctrl_name(int type)2610 const char *beaminv_get_ctrl_name(int type)
2611 {
2612 switch(type)
2613 {
2614 case IPT_BUTTON1: return BTN1 "Fire";
2615 case IPT_PADDLE: return "Left";
2616 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
2617 } /* end of switch */
2618
2619 return "";
2620 }
2621
2622 const struct ControlInfo bbusters_ctrl =
2623 {
2624 false, /* 45_degree_rotation for joystick(s) */
2625 false, /* alternating_controls */
2626 true, /* mirrored_controls */
2627 "", /* control_details */
2628 &bbusters_get_ctrl_name
2629 };
2630
bbusters_get_ctrl_name(int type)2631 const char *bbusters_get_ctrl_name(int type)
2632 {
2633 switch(type)
2634 {
2635 case IPT_BUTTON1: return BTN1 "Fire";
2636 case IPT_BUTTON2: return BTN2 "Grenade";
2637 case IPT_LIGHTGUN_Y: return "Up";
2638 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
2639 case IPT_LIGHTGUN_X: return "Left";
2640 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
2641 } /* end of switch */
2642
2643 return "";
2644 }
2645
2646 const struct ControlInfo beathead_ctrl =
2647 {
2648 false, /* 45_degree_rotation for joystick(s) */
2649 false, /* alternating_controls */
2650 true, /* mirrored_controls */
2651 "Jump - player jumps to the adjacent block in the desired direction Big Jump - plyers jumps over the adjacent block and lands on the next", /* control_details */
2652 &beathead_get_ctrl_name
2653 };
2654
beathead_get_ctrl_name(int type)2655 const char *beathead_get_ctrl_name(int type)
2656 {
2657 switch(type)
2658 {
2659 case IPT_BUTTON1: return BTN1 "Jump";
2660 case IPT_BUTTON2: return BTN2 "Big Jump";
2661 } /* end of switch */
2662
2663 return joy4way_labels(type);
2664 }
2665
2666 const struct ControlInfo bm1stmix_ctrl =
2667 {
2668 false, /* 45_degree_rotation for joystick(s) */
2669 false, /* alternating_controls */
2670 true, /* mirrored_controls */
2671 "This game uses a musical 'keyboard' and Turntable. The keyboard is actually 5 trivia buttons rotated 90 degrees, arranged like a section of a piano. This game has a 6th button next to the start buttons on the control panel labeled 'Effector'. The button is mapped to start3 in mame because of it's physical position and this seems to make the most sense. As the button doesn't really impact gameplay, we'll simply ignore it for now.", /* control_details */
2672 &bm1stmix_get_ctrl_name
2673 };
2674
bm1stmix_get_ctrl_name(int type)2675 const char *bm1stmix_get_ctrl_name(int type)
2676 {
2677 switch(type)
2678 {
2679 case IPT_BUTTON1: return BTN1 "White 1";
2680 case IPT_BUTTON2: return BTN2 "Black 1";
2681 case IPT_BUTTON3: return BTN3 "White 2";
2682 case IPT_BUTTON4: return BTN4 "Black 2";
2683 case IPT_BUTTON5: return BTN5 "White 3";
2684 case (IPT_DIAL + IPT_EXTENSION): return "Scratch";
2685 case IPT_DIAL: return "Scratch";
2686 } /* end of switch */
2687
2688 return "";
2689 }
2690
2691 const struct ControlInfo bm2ndmix_ctrl =
2692 {
2693 false, /* 45_degree_rotation for joystick(s) */
2694 false, /* alternating_controls */
2695 true, /* mirrored_controls */
2696 "This game uses a musical 'keyboard' and Turntable. The keyboard is actually 5 trivia buttons rotated 90 degrees, arranged like a section of a piano. This game has a 6th button next to the start buttons on the control panel labeled 'Effector'. The button is mapped to start3 in mame because of it's physical position and this seems to make the most sense. As the button doesn't really impact gameplay, we'll simply ignore it for now.", /* control_details */
2697 &bm2ndmix_get_ctrl_name
2698 };
2699
bm2ndmix_get_ctrl_name(int type)2700 const char *bm2ndmix_get_ctrl_name(int type)
2701 {
2702 switch(type)
2703 {
2704 case IPT_BUTTON1: return BTN1 "White 1";
2705 case IPT_BUTTON2: return BTN2 "Black 1";
2706 case IPT_BUTTON3: return BTN3 "White 2";
2707 case IPT_BUTTON4: return BTN4 "Black 2";
2708 case IPT_BUTTON5: return BTN5 "White 3";
2709 case (IPT_DIAL + IPT_EXTENSION): return "Scratch";
2710 case IPT_DIAL: return "Scratch";
2711 } /* end of switch */
2712
2713 return "";
2714 }
2715
2716 const struct ControlInfo bm4thmix_ctrl =
2717 {
2718 false, /* 45_degree_rotation for joystick(s) */
2719 false, /* alternating_controls */
2720 true, /* mirrored_controls */
2721 "This game uses a musical 'keyboard' and Turntable. The keyboard is actually 5 trivia buttons rotated 90 degrees, arranged like a section of a piano. This game has a 6th button next to the start buttons on the control panel labeled 'Effector'. The button is mapped to start3 in mame because of it's physical position and this seems to make the most sense. As the button doesn't really impact gameplay, we'll simply ignore it for now.", /* control_details */
2722 &bm4thmix_get_ctrl_name
2723 };
2724
bm4thmix_get_ctrl_name(int type)2725 const char *bm4thmix_get_ctrl_name(int type)
2726 {
2727 switch(type)
2728 {
2729 case IPT_BUTTON1: return BTN1 "White 1";
2730 case IPT_BUTTON2: return BTN2 "Black 1";
2731 case IPT_BUTTON3: return BTN3 "White 2";
2732 case IPT_BUTTON4: return BTN4 "Black 2";
2733 case IPT_BUTTON5: return BTN5 "White 3";
2734 case (IPT_DIAL + IPT_EXTENSION): return "Scratch";
2735 case IPT_DIAL: return "Scratch";
2736 } /* end of switch */
2737
2738 return "";
2739 }
2740
2741 const struct ControlInfo bm5thmix_ctrl =
2742 {
2743 false, /* 45_degree_rotation for joystick(s) */
2744 false, /* alternating_controls */
2745 true, /* mirrored_controls */
2746 "This game uses a musical 'keyboard' and Turntable. The keyboard is actually 5 trivia buttons rotated 90 degrees, arranged like a section of a piano. This game has a 6th button next to the start buttons on the control panel labeled 'Effector'. The button is mapped to start3 in mame because of it's physical position and this seems to make the most sense. As the button doesn't really impact gameplay, we'll simply ignore it for now.", /* control_details */
2747 &bm5thmix_get_ctrl_name
2748 };
2749
bm5thmix_get_ctrl_name(int type)2750 const char *bm5thmix_get_ctrl_name(int type)
2751 {
2752 switch(type)
2753 {
2754 case IPT_BUTTON1: return BTN1 "White 1";
2755 case IPT_BUTTON2: return BTN2 "Black 1";
2756 case IPT_BUTTON3: return BTN3 "White 2";
2757 case IPT_BUTTON4: return BTN4 "Black 2";
2758 case IPT_BUTTON5: return BTN5 "White 3";
2759 case (IPT_DIAL + IPT_EXTENSION): return "Scratch";
2760 case IPT_DIAL: return "Scratch";
2761 } /* end of switch */
2762
2763 return "";
2764 }
2765
2766 const struct ControlInfo bm6thmix_ctrl =
2767 {
2768 false, /* 45_degree_rotation for joystick(s) */
2769 false, /* alternating_controls */
2770 true, /* mirrored_controls */
2771 "This game uses a musical 'keyboard' and Turntable. The keyboard is actually 5 trivia buttons rotated 90 degrees, arranged like a section of a piano. This game has a 6th button next to the start buttons on the control panel labeled 'Effector'. The button is mapped to start3 in mame because of it's physical position and this seems to make the most sense. As the button doesn't really impact gameplay, we'll simply ignore it for now.", /* control_details */
2772 &bm6thmix_get_ctrl_name
2773 };
2774
bm6thmix_get_ctrl_name(int type)2775 const char *bm6thmix_get_ctrl_name(int type)
2776 {
2777 switch(type)
2778 {
2779 case IPT_BUTTON1: return BTN1 "White 1";
2780 case IPT_BUTTON2: return BTN2 "Black 1";
2781 case IPT_BUTTON3: return BTN3 "White 2";
2782 case IPT_BUTTON4: return BTN4 "Black 2";
2783 case IPT_BUTTON5: return BTN5 "White 3";
2784 case (IPT_DIAL + IPT_EXTENSION): return "Scratch";
2785 case IPT_DIAL: return "Scratch";
2786 } /* end of switch */
2787
2788 return "";
2789 }
2790
2791 const struct ControlInfo bmcompmx_ctrl =
2792 {
2793 false, /* 45_degree_rotation for joystick(s) */
2794 false, /* alternating_controls */
2795 true, /* mirrored_controls */
2796 "This game uses a musical 'keyboard' and Turntable. The keyboard is actually 5 trivia buttons rotated 90 degrees, arranged like a section of a piano. This game has a 6th button next to the start buttons on the control panel labeled 'Effector'. The button is mapped to start3 in mame because of it's physical position and this seems to make the most sense. As the button doesn't really impact gameplay, we'll simply ignore it for now.", /* control_details */
2797 &bmcompmx_get_ctrl_name
2798 };
2799
bmcompmx_get_ctrl_name(int type)2800 const char *bmcompmx_get_ctrl_name(int type)
2801 {
2802 switch(type)
2803 {
2804 case IPT_BUTTON1: return BTN1 "White 1";
2805 case IPT_BUTTON2: return BTN2 "Black 1";
2806 case IPT_BUTTON3: return BTN3 "White 2";
2807 case IPT_BUTTON4: return BTN4 "Black 2";
2808 case IPT_BUTTON5: return BTN5 "White 3";
2809 case (IPT_DIAL + IPT_EXTENSION): return "Scratch";
2810 case IPT_DIAL: return "Scratch";
2811 } /* end of switch */
2812
2813 return "";
2814 }
2815
2816 const struct ControlInfo bmcompm2_ctrl =
2817 {
2818 false, /* 45_degree_rotation for joystick(s) */
2819 false, /* alternating_controls */
2820 true, /* mirrored_controls */
2821 "This game uses a musical 'keyboard' and Turntable. The keyboard is actually 5 trivia buttons rotated 90 degrees, arranged like a section of a piano. This game has a 6th button next to the start buttons on the control panel labeled 'Effector'. The button is mapped to start3 in mame because of it's physical position and this seems to make the most sense. As the button doesn't really impact gameplay, we'll simply ignore it for now.", /* control_details */
2822 &bmcompm2_get_ctrl_name
2823 };
2824
bmcompm2_get_ctrl_name(int type)2825 const char *bmcompm2_get_ctrl_name(int type)
2826 {
2827 switch(type)
2828 {
2829 case IPT_BUTTON1: return BTN1 "White 1";
2830 case IPT_BUTTON2: return BTN2 "Black 1";
2831 case IPT_BUTTON3: return BTN3 "White 2";
2832 case IPT_BUTTON4: return BTN4 "Black 2";
2833 case IPT_BUTTON5: return BTN5 "White 3";
2834 case (IPT_DIAL + IPT_EXTENSION): return "Scratch";
2835 case IPT_DIAL: return "Scratch";
2836 } /* end of switch */
2837
2838 return "";
2839 }
2840
2841 const struct ControlInfo bmcorerm_ctrl =
2842 {
2843 false, /* 45_degree_rotation for joystick(s) */
2844 false, /* alternating_controls */
2845 true, /* mirrored_controls */
2846 "This game uses a musical 'keyboard' and Turntable. The keyboard is actually 5 trivia buttons rotated 90 degrees, arranged like a section of a piano. This game has a 6th button next to the start buttons on the control panel labeled 'Effector'. The button is mapped to start3 in mame because of it's physical position and this seems to make the most sense. As the button doesn't really impact gameplay, we'll simply ignore it for now.", /* control_details */
2847 &bmcorerm_get_ctrl_name
2848 };
2849
bmcorerm_get_ctrl_name(int type)2850 const char *bmcorerm_get_ctrl_name(int type)
2851 {
2852 switch(type)
2853 {
2854 case IPT_BUTTON1: return BTN1 "White 1";
2855 case IPT_BUTTON2: return BTN2 "Black 1";
2856 case IPT_BUTTON3: return BTN3 "White 2";
2857 case IPT_BUTTON4: return BTN4 "Black 2";
2858 case IPT_BUTTON5: return BTN5 "White 3";
2859 case IPT_DIAL: return "Scratch";
2860 case (IPT_DIAL + IPT_EXTENSION): return "Scratch";
2861 } /* end of switch */
2862
2863 return "";
2864 }
2865
2866 const struct ControlInfo bmdct_ctrl =
2867 {
2868 false, /* 45_degree_rotation for joystick(s) */
2869 false, /* alternating_controls */
2870 true, /* mirrored_controls */
2871 "This game uses a musical 'keyboard' and Turntable. The keyboard is actually 5 trivia buttons rotated 90 degrees, arranged like a section of a piano. This game has a 6th button next to the start buttons on the control panel labeled 'Effector'. The button is mapped to start3 in mame because of it's physical position and this seems to make the most sense. As the button doesn't really impact gameplay, we'll simply ignore it for now.", /* control_details */
2872 &bmdct_get_ctrl_name
2873 };
2874
bmdct_get_ctrl_name(int type)2875 const char *bmdct_get_ctrl_name(int type)
2876 {
2877 switch(type)
2878 {
2879 case IPT_BUTTON1: return BTN1 "White 1";
2880 case IPT_BUTTON2: return BTN2 "Black 1";
2881 case IPT_BUTTON3: return BTN3 "White 2";
2882 case IPT_BUTTON4: return BTN4 "Black 2";
2883 case IPT_BUTTON5: return BTN5 "White 3";
2884 case IPT_DIAL: return "Scratch";
2885 case (IPT_DIAL + IPT_EXTENSION): return "Scratch";
2886 } /* end of switch */
2887
2888 return "";
2889 }
2890
2891 const struct ControlInfo beezer_ctrl =
2892 {
2893 false, /* 45_degree_rotation for joystick(s) */
2894 true, /* alternating_controls */
2895 true, /* mirrored_controls */
2896 "", /* control_details */
2897 &beezer_get_ctrl_name
2898 };
2899
beezer_get_ctrl_name(int type)2900 const char *beezer_get_ctrl_name(int type)
2901 {
2902 switch(type)
2903 {
2904 case IPT_TRACKBALL_X: return "Left";
2905 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
2906 case IPT_TRACKBALL_Y: return "Up";
2907 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
2908 } /* end of switch */
2909
2910 return "";
2911 }
2912
2913 const struct ControlInfo bel_ctrl =
2914 {
2915 false, /* 45_degree_rotation for joystick(s) */
2916 false, /* alternating_controls */
2917 true, /* mirrored_controls */
2918 "Mame has 4 buttons for this game, but it's leftover from the generic model 2 driver. Only the trigger button and grenade button, both monunted on the gun, exist.", /* control_details */
2919 &bel_get_ctrl_name
2920 };
2921
bel_get_ctrl_name(int type)2922 const char *bel_get_ctrl_name(int type)
2923 {
2924 switch(type)
2925 {
2926 case IPT_BUTTON1: return BTN1 "Fire";
2927 case IPT_BUTTON2: return BTN2 "Grenade";
2928 case IPT_LIGHTGUN_X: return "Aim Left";
2929 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
2930 case IPT_LIGHTGUN_Y: return "Aim Up";
2931 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
2932 } /* end of switch */
2933
2934 return "";
2935 }
2936
2937 const struct ControlInfo blswhstl_ctrl =
2938 {
2939 false, /* 45_degree_rotation for joystick(s) */
2940 false, /* alternating_controls */
2941 true, /* mirrored_controls */
2942 "Both buttons do the same thing. The review on gamefaqs says there is only 1 button, but the game is using the tmnt.c driver which has 2 buttons as default for all games", /* control_details */
2943 &blswhstl_get_ctrl_name
2944 };
2945
blswhstl_get_ctrl_name(int type)2946 const char *blswhstl_get_ctrl_name(int type)
2947 {
2948 switch(type)
2949 {
2950 case IPT_BUTTON1: return BTN1 "Fire";
2951 case IPT_BUTTON2: return BTN2 "Fire";
2952 } /* end of switch */
2953
2954 return joy4way_labels(type);
2955 }
2956
2957 const struct ControlInfo berabohm_ctrl =
2958 {
2959 false, /* 45_degree_rotation for joystick(s) */
2960 true, /* alternating_controls */
2961 true, /* mirrored_controls */
2962 "Original game has 2 pressure sensitive buttons but mame is hacked to 4 buttons. To do the hard attack, press buttons 1 and 2 together, for high jump, press buttons 3 and 4 together. Taken from the driver (namcos1.c) Notes: The berabohm buttons don't work too well. The real thing has a special pressure sensitive button, with two switches. The harder you push the button, the faster the two switches are closed one after another. Due to MAME's limited input sample rate (once per frame) it is difficult to measure the time between the two. Buttons (pressure sensitive) each button has two switches: the first is closed as soon as the button is pressed, the second a little later, depending on how hard the button is pressed. bits 0-5 control strength (0x00 = max 0x3f = min) bit 6 indicates the button is pressed bit 7 is not actually read by the game but I use it to simulate the second switch", /* control_details */
2963 &berabohm_get_ctrl_name
2964 };
2965
berabohm_get_ctrl_name(int type)2966 const char *berabohm_get_ctrl_name(int type)
2967 {
2968 switch(type)
2969 {
2970 case IPT_BUTTON1: return BTN1 "Attack";
2971 case IPT_BUTTON2: return BTN2 "Hard Attack";
2972 case IPT_BUTTON3: return BTN3 "Jump";
2973 case IPT_BUTTON4: return BTN4 "High Jump";
2974 } /* end of switch */
2975
2976 return joy4way_labels(type);
2977 }
2978
2979 const struct ControlInfo bermudat_ctrl =
2980 {
2981 false, /* 45_degree_rotation for joystick(s) */
2982 false, /* alternating_controls */
2983 true, /* mirrored_controls */
2984 "Button two changes the formation of the picked up small shield airplanes.", /* control_details */
2985 &bermudat_get_ctrl_name
2986 };
2987
bermudat_get_ctrl_name(int type)2988 const char *bermudat_get_ctrl_name(int type)
2989 {
2990 switch(type)
2991 {
2992 case IPT_BUTTON1: return BTN1 "Fire";
2993 case IPT_BUTTON2: return BTN2 "??";
2994 case IPT_DIAL: return "Left";
2995 case (IPT_DIAL + IPT_EXTENSION): return "Right";
2996 } /* end of switch */
2997
2998 return joy4way_labels(type);
2999 }
3000
3001 const struct ControlInfo berzerk_ctrl =
3002 {
3003 false, /* 45_degree_rotation for joystick(s) */
3004 true, /* alternating_controls */
3005 true, /* mirrored_controls */
3006 "This game was shipped out the door with a 8 way optical joystick. The joystick behaved exactly like a regular 8 way joystick except it was constantly failing. It was so bad that Stern recalled the orignal joystick and offered free leaf replacments to all the owners. So for the history books this game didn't use a regular 8 way, but in actuality it did 99 percent of the time.", /* control_details */
3007 &berzerk_get_ctrl_name
3008 };
3009
berzerk_get_ctrl_name(int type)3010 const char *berzerk_get_ctrl_name(int type)
3011 {
3012 switch(type)
3013 {
3014 case IPT_BUTTON1: return BTN1 "Fire";
3015 } /* end of switch */
3016
3017 return joy4way_labels(type);
3018 }
3019
3020 const struct ControlInfo bigevglf_ctrl =
3021 {
3022 false, /* 45_degree_rotation for joystick(s) */
3023 true, /* alternating_controls */
3024 true, /* mirrored_controls */
3025 "Button is on either side of the trackball. Button 2 is only used in cocktail mode.", /* control_details */
3026 &bigevglf_get_ctrl_name
3027 };
3028
bigevglf_get_ctrl_name(int type)3029 const char *bigevglf_get_ctrl_name(int type)
3030 {
3031 switch(type)
3032 {
3033 case IPT_BUTTON1: return BTN1 "Club Select";
3034 case IPT_BUTTON2: return BTN2 "Club Select (2P)";
3035 case IPT_TRACKBALL_Y: return "Up";
3036 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
3037 case IPT_TRACKBALL_X: return "Left";
3038 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
3039 } /* end of switch */
3040
3041 return "";
3042 }
3043
3044 const struct ControlInfo bigkarnk_ctrl =
3045 {
3046 false, /* 45_degree_rotation for joystick(s) */
3047 false, /* alternating_controls */
3048 true, /* mirrored_controls */
3049 "", /* control_details */
3050 &bigkarnk_get_ctrl_name
3051 };
3052
bigkarnk_get_ctrl_name(int type)3053 const char *bigkarnk_get_ctrl_name(int type)
3054 {
3055 switch(type)
3056 {
3057 case IPT_BUTTON1: return BTN1 "Shot";
3058 case IPT_BUTTON2: return BTN2 "Jump";
3059 } /* end of switch */
3060
3061 return joy4way_labels(type);
3062 }
3063
3064 const struct ControlInfo bigrun_ctrl =
3065 {
3066 false, /* 45_degree_rotation for joystick(s) */
3067 false, /* alternating_controls */
3068 false, /* mirrored_controls */
3069 "Obviously the horn button isn't labeled, but is the horn on the wheel.", /* control_details */
3070 &bigrun_get_ctrl_name
3071 };
3072
bigrun_get_ctrl_name(int type)3073 const char *bigrun_get_ctrl_name(int type)
3074 {
3075 switch(type)
3076 {
3077 case IPT_BUTTON1: return BTN1 "Accelerate";
3078 case IPT_BUTTON2: return BTN2 "Brake";
3079 case IPT_BUTTON3: return BTN3 "Low";
3080 case IPT_BUTTON4: return BTN4 "High";
3081 case IPT_BUTTON5: return BTN5 "Horn";
3082 case IPT_PADDLE: return "Left";
3083 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
3084 } /* end of switch */
3085
3086 return "";
3087 }
3088
3089 const struct ControlInfo bigstrik_ctrl =
3090 {
3091 false, /* 45_degree_rotation for joystick(s) */
3092 false, /* alternating_controls */
3093 true, /* mirrored_controls */
3094 "In offense A-Short Pass, B-Long Pass/Shoot, C-Fake Play In defense A-Sliding Tackle, B-Steal", /* control_details */
3095 &bigstrik_get_ctrl_name
3096 };
3097
bigstrik_get_ctrl_name(int type)3098 const char *bigstrik_get_ctrl_name(int type)
3099 {
3100 switch(type)
3101 {
3102 case IPT_BUTTON1: return BTN1 "A";
3103 case IPT_BUTTON2: return BTN2 "B";
3104 case IPT_BUTTON3: return BTN3 "C";
3105 } /* end of switch */
3106
3107 return joy4way_labels(type);
3108 }
3109
3110 const struct ControlInfo bigtwin_ctrl =
3111 {
3112 false, /* 45_degree_rotation for joystick(s) */
3113 false, /* alternating_controls */
3114 true, /* mirrored_controls */
3115 "Couldn?t find what the actually button is called on the panel but by pressing it you cause the hand on the screen to grab a ball", /* control_details */
3116 &bigtwin_get_ctrl_name
3117 };
3118
bigtwin_get_ctrl_name(int type)3119 const char *bigtwin_get_ctrl_name(int type)
3120 {
3121 switch(type)
3122 {
3123 case IPT_BUTTON1: return BTN1 "Grab";
3124 } /* end of switch */
3125
3126 return joy4way_labels(type);
3127 }
3128
3129 const struct ControlInfo bbonk_ctrl =
3130 {
3131 false, /* 45_degree_rotation for joystick(s) */
3132 false, /* alternating_controls */
3133 true, /* mirrored_controls */
3134 "Driver(lazercmd.c) has the controls as joystick while Klov states directional buttons - couldn't find any CPO pics", /* control_details */
3135 &bbonk_get_ctrl_name
3136 };
3137
bbonk_get_ctrl_name(int type)3138 const char *bbonk_get_ctrl_name(int type)
3139 {
3140 return joy4way_labels(type);
3141 }
3142
3143 const struct ControlInfo bioatack_ctrl =
3144 {
3145 false, /* 45_degree_rotation for joystick(s) */
3146 true, /* alternating_controls */
3147 true, /* mirrored_controls */
3148 "", /* control_details */
3149 &bioatack_get_ctrl_name
3150 };
3151
bioatack_get_ctrl_name(int type)3152 const char *bioatack_get_ctrl_name(int type)
3153 {
3154 switch(type)
3155 {
3156 case IPT_BUTTON1: return BTN1 "Fire";
3157 } /* end of switch */
3158
3159 return joy4way_labels(type);
3160 }
3161
3162 const struct ControlInfo bioship_ctrl =
3163 {
3164 false, /* 45_degree_rotation for joystick(s) */
3165 false, /* alternating_controls */
3166 true, /* mirrored_controls */
3167 "Super-Fire is achived by holding down the Fire button until the meter at the lower end of the screen reads full. Holding the Cursor button down causes the Paladin to remain stationary and the cursor can be moved around the screen using the joystick", /* control_details */
3168 &bioship_get_ctrl_name
3169 };
3170
bioship_get_ctrl_name(int type)3171 const char *bioship_get_ctrl_name(int type)
3172 {
3173 switch(type)
3174 {
3175 case IPT_BUTTON1: return BTN1 "Fire";
3176 case IPT_BUTTON2: return BTN2 "Cursor";
3177 } /* end of switch */
3178
3179 return joy4way_labels(type);
3180 }
3181
3182 const struct ControlInfo biofreak_ctrl =
3183 {
3184 false, /* 45_degree_rotation for joystick(s) */
3185 false, /* alternating_controls */
3186 true, /* mirrored_controls */
3187 "", /* control_details */
3188 &biofreak_get_ctrl_name
3189 };
3190
biofreak_get_ctrl_name(int type)3191 const char *biofreak_get_ctrl_name(int type)
3192 {
3193 switch(type)
3194 {
3195 case IPT_BUTTON1: return BTN1 "Left Punch";
3196 case IPT_BUTTON2: return BTN2 "Right Punch";
3197 case IPT_BUTTON3: return BTN3 "Fire/Shield";
3198 case IPT_BUTTON4: return BTN4 "Left Kick";
3199 case IPT_BUTTON5: return BTN5 "Right Kick";
3200 case IPT_BUTTON6: return BTN6 "Hover";
3201 } /* end of switch */
3202
3203 return joy4way_labels(type);
3204 }
3205
3206 const struct ControlInfo biomtoy_ctrl =
3207 {
3208 false, /* 45_degree_rotation for joystick(s) */
3209 false, /* alternating_controls */
3210 false, /* mirrored_controls */
3211 "Game is only 1 player while the driver (gaelco.c) has 2.", /* control_details */
3212 &biomtoy_get_ctrl_name
3213 };
3214
biomtoy_get_ctrl_name(int type)3215 const char *biomtoy_get_ctrl_name(int type)
3216 {
3217 switch(type)
3218 {
3219 case IPT_BUTTON1: return BTN1 "Fire";
3220 case IPT_BUTTON2: return BTN2 "Jump";
3221 } /* end of switch */
3222
3223 return joy4way_labels(type);
3224 }
3225
3226 const struct ControlInfo bionicc_ctrl =
3227 {
3228 false, /* 45_degree_rotation for joystick(s) */
3229 true, /* alternating_controls */
3230 true, /* mirrored_controls */
3231 "", /* control_details */
3232 &bionicc_get_ctrl_name
3233 };
3234
bionicc_get_ctrl_name(int type)3235 const char *bionicc_get_ctrl_name(int type)
3236 {
3237 switch(type)
3238 {
3239 case IPT_BUTTON1: return BTN1 "Fire";
3240 case IPT_BUTTON2: return BTN2 "Bionic Reach";
3241 } /* end of switch */
3242
3243 return joy4way_labels(type);
3244 }
3245
3246 const struct ControlInfo bking_ctrl =
3247 {
3248 false, /* 45_degree_rotation for joystick(s) */
3249 true, /* alternating_controls */
3250 true, /* mirrored_controls */
3251 "", /* control_details */
3252 &bking_get_ctrl_name
3253 };
3254
bking_get_ctrl_name(int type)3255 const char *bking_get_ctrl_name(int type)
3256 {
3257 switch(type)
3258 {
3259 case IPT_TRACKBALL_X: return "Left";
3260 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
3261 case IPT_TRACKBALL_Y: return "Up";
3262 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
3263 } /* end of switch */
3264
3265 return "";
3266 }
3267
3268 const struct ControlInfo bking2_ctrl =
3269 {
3270 false, /* 45_degree_rotation for joystick(s) */
3271 true, /* alternating_controls */
3272 true, /* mirrored_controls */
3273 "", /* control_details */
3274 &bking2_get_ctrl_name
3275 };
3276
bking2_get_ctrl_name(int type)3277 const char *bking2_get_ctrl_name(int type)
3278 {
3279 switch(type)
3280 {
3281 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
3282 case IPT_TRACKBALL_Y: return "Up";
3283 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
3284 case IPT_TRACKBALL_X: return "Left";
3285 } /* end of switch */
3286
3287 return "";
3288 }
3289
3290 const struct ControlInfo bking3_ctrl =
3291 {
3292 false, /* 45_degree_rotation for joystick(s) */
3293 true, /* alternating_controls */
3294 true, /* mirrored_controls */
3295 "", /* control_details */
3296 &bking3_get_ctrl_name
3297 };
3298
bking3_get_ctrl_name(int type)3299 const char *bking3_get_ctrl_name(int type)
3300 {
3301 switch(type)
3302 {
3303 case IPT_TRACKBALL_X: return "Left";
3304 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
3305 case IPT_TRACKBALL_Y: return "Up";
3306 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
3307 } /* end of switch */
3308
3309 return "";
3310 }
3311
3312 const struct ControlInfo birdtry_ctrl =
3313 {
3314 false, /* 45_degree_rotation for joystick(s) */
3315 true, /* alternating_controls */
3316 true, /* mirrored_controls */
3317 "In game controls lists dial input for both players. I think this is taken from hbarrel which is from the same driver (dec0.c). Shouldn?t be in there. Gameplay - press the options button to change club, swing type and ball spin. Press the swing button to start swing. When red bar on right side of screen reaches desired power press swing again.", /* control_details */
3318 &birdtry_get_ctrl_name
3319 };
3320
birdtry_get_ctrl_name(int type)3321 const char *birdtry_get_ctrl_name(int type)
3322 {
3323 switch(type)
3324 {
3325 case IPT_BUTTON1: return BTN1 "Swing";
3326 case IPT_BUTTON2: return BTN2 "Options";
3327 } /* end of switch */
3328
3329 return joy4way_labels(type);
3330 }
3331
3332 const struct ControlInfo blkheart_ctrl =
3333 {
3334 false, /* 45_degree_rotation for joystick(s) */
3335 false, /* alternating_controls */
3336 true, /* mirrored_controls */
3337 "", /* control_details */
3338 &blkheart_get_ctrl_name
3339 };
3340
blkheart_get_ctrl_name(int type)3341 const char *blkheart_get_ctrl_name(int type)
3342 {
3343 switch(type)
3344 {
3345 case IPT_BUTTON1: return BTN1 "Fire A";
3346 case IPT_BUTTON2: return BTN2 "Fire B";
3347 } /* end of switch */
3348
3349 return joy4way_labels(type);
3350 }
3351
3352 const struct ControlInfo blkhole_ctrl =
3353 {
3354 false, /* 45_degree_rotation for joystick(s) */
3355 true, /* alternating_controls */
3356 true, /* mirrored_controls */
3357 "", /* control_details */
3358 &blkhole_get_ctrl_name
3359 };
3360
blkhole_get_ctrl_name(int type)3361 const char *blkhole_get_ctrl_name(int type)
3362 {
3363 switch(type)
3364 {
3365 case IPT_BUTTON1: return BTN1 "Shoot";
3366 } /* end of switch */
3367
3368 return joy2way_labels(type);
3369 }
3370
3371 const struct ControlInfo blkpnthr_ctrl =
3372 {
3373 false, /* 45_degree_rotation for joystick(s) */
3374 true, /* alternating_controls */
3375 true, /* mirrored_controls */
3376 "No panel pics but that's what the buttons do.", /* control_details */
3377 &blkpnthr_get_ctrl_name
3378 };
3379
blkpnthr_get_ctrl_name(int type)3380 const char *blkpnthr_get_ctrl_name(int type)
3381 {
3382 switch(type)
3383 {
3384 case IPT_BUTTON1: return BTN1 "Attack";
3385 case IPT_BUTTON2: return BTN2 "Jump";
3386 } /* end of switch */
3387
3388 return joy4way_labels(type);
3389 }
3390
3391 const struct ControlInfo blktiger_ctrl =
3392 {
3393 false, /* 45_degree_rotation for joystick(s) */
3394 true, /* alternating_controls */
3395 true, /* mirrored_controls */
3396 "", /* control_details */
3397 &blktiger_get_ctrl_name
3398 };
3399
blktiger_get_ctrl_name(int type)3400 const char *blktiger_get_ctrl_name(int type)
3401 {
3402 switch(type)
3403 {
3404 case IPT_BUTTON1: return BTN1 "Mace";
3405 case IPT_BUTTON2: return BTN2 "Jump";
3406 } /* end of switch */
3407
3408 return joy4way_labels(type);
3409 }
3410
3411 const struct ControlInfo bwidow_ctrl =
3412 {
3413 false, /* 45_degree_rotation for joystick(s) */
3414 true, /* alternating_controls */
3415 true, /* mirrored_controls */
3416 "", /* control_details */
3417 &bwidow_get_ctrl_name
3418 };
3419
bwidow_get_ctrl_name(int type)3420 const char *bwidow_get_ctrl_name(int type)
3421 {
3422 switch(type)
3423 {
3424 case IPT_JOYSTICKRIGHT_UP: return "Aim Up";
3425 case IPT_JOYSTICKRIGHT_DOWN: return "Aim Down";
3426 case IPT_JOYSTICKRIGHT_LEFT: return "Aim Left";
3427 case IPT_JOYSTICKRIGHT_RIGHT: return "Aim Right";
3428 } /* end of switch */
3429
3430 return joy4way_labels(type);
3431 }
3432
3433 const struct ControlInfo bmaster_ctrl =
3434 {
3435 false, /* 45_degree_rotation for joystick(s) */
3436 false, /* alternating_controls */
3437 true, /* mirrored_controls */
3438 "", /* control_details */
3439 &bmaster_get_ctrl_name
3440 };
3441
bmaster_get_ctrl_name(int type)3442 const char *bmaster_get_ctrl_name(int type)
3443 {
3444 switch(type)
3445 {
3446 case IPT_BUTTON1: return BTN1 "Attack";
3447 case IPT_BUTTON2: return BTN2 "Jump";
3448 } /* end of switch */
3449
3450 return joy4way_labels(type);
3451 }
3452
3453 const struct ControlInfo bladestl_ctrl =
3454 {
3455 false, /* 45_degree_rotation for joystick(s) */
3456 false, /* alternating_controls */
3457 true, /* mirrored_controls */
3458 "The Mame driver has inputs for a 8 way joystick as well, but I've yet to find a machine that uses those inputs. It's unknown if this is a hack.", /* control_details */
3459 &bladestl_get_ctrl_name
3460 };
3461
bladestl_get_ctrl_name(int type)3462 const char *bladestl_get_ctrl_name(int type)
3463 {
3464 switch(type)
3465 {
3466 case IPT_BUTTON1: return BTN1 "Shoot";
3467 case IPT_BUTTON2: return BTN2 "Pass / Face-Off";
3468 case IPT_BUTTON3: return BTN3 "FIGHT!";
3469 case IPT_TRACKBALL_X: return "Left";
3470 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
3471 case IPT_TRACKBALL_Y: return "Up";
3472 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
3473 } /* end of switch */
3474
3475 return "";
3476 }
3477
3478 const struct ControlInfo blandia_ctrl =
3479 {
3480 false, /* 45_degree_rotation for joystick(s) */
3481 false, /* alternating_controls */
3482 true, /* mirrored_controls */
3483 "", /* control_details */
3484 &blandia_get_ctrl_name
3485 };
3486
blandia_get_ctrl_name(int type)3487 const char *blandia_get_ctrl_name(int type)
3488 {
3489 switch(type)
3490 {
3491 case IPT_BUTTON1: return BTN1 "Attack High";
3492 case IPT_BUTTON2: return BTN2 "Attack Middle";
3493 case IPT_BUTTON3: return BTN3 "Attack Low";
3494 } /* end of switch */
3495
3496 return joy4way_labels(type);
3497 }
3498
3499 const struct ControlInfo blastoff_ctrl =
3500 {
3501 false, /* 45_degree_rotation for joystick(s) */
3502 true, /* alternating_controls */
3503 true, /* mirrored_controls */
3504 "Driver (namcos1.c) has standard 3 button layout although only 2 are required", /* control_details */
3505 &blastoff_get_ctrl_name
3506 };
3507
blastoff_get_ctrl_name(int type)3508 const char *blastoff_get_ctrl_name(int type)
3509 {
3510 switch(type)
3511 {
3512 case IPT_BUTTON1: return BTN1 "Fire";
3513 case IPT_BUTTON2: return BTN2 "Change Weapon";
3514 case IPT_BUTTON3: return BTN3 "NA";
3515 } /* end of switch */
3516
3517 return joy4way_labels(type);
3518 }
3519
3520 const struct ControlInfo blasted_ctrl =
3521 {
3522 false, /* 45_degree_rotation for joystick(s) */
3523 false, /* alternating_controls */
3524 true, /* mirrored_controls */
3525 "", /* control_details */
3526 &blasted_get_ctrl_name
3527 };
3528
blasted_get_ctrl_name(int type)3529 const char *blasted_get_ctrl_name(int type)
3530 {
3531 switch(type)
3532 {
3533 case IPT_BUTTON1: return BTN1 "Fire";
3534 case IPT_JOYSTICK_UP: return "Aim Up";
3535 case IPT_JOYSTICK_DOWN: return "Aim Down";
3536 case IPT_JOYSTICK_LEFT: return "Aim Left";
3537 case IPT_JOYSTICK_RIGHT: return "Aim Right";
3538 } /* end of switch */
3539
3540 return "";
3541 }
3542
3543 const struct ControlInfo blaster_ctrl =
3544 {
3545 false, /* 45_degree_rotation for joystick(s) */
3546 true, /* alternating_controls */
3547 true, /* mirrored_controls */
3548 "This game uses a 49-way optical triggerstick with thumb button. The buttons are repeated on the control panel. The game uses aircraft style controls - Pull back on the stick to climb.", /* control_details */
3549 &blaster_get_ctrl_name
3550 };
3551
blaster_get_ctrl_name(int type)3552 const char *blaster_get_ctrl_name(int type)
3553 {
3554 switch(type)
3555 {
3556 case IPT_BUTTON1: return BTN1 "Blast";
3557 case IPT_BUTTON2: return BTN2 "Thrust";
3558 case IPT_BUTTON3: return BTN3 "Unknown";
3559 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
3560 case IPT_AD_STICK_Y: return "Up";
3561 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
3562 case IPT_AD_STICK_X: return "Left";
3563 } /* end of switch */
3564
3565 return "";
3566 }
3567
3568 const struct ControlInfo blstroid_ctrl =
3569 {
3570 false, /* 45_degree_rotation for joystick(s) */
3571 false, /* alternating_controls */
3572 true, /* mirrored_controls */
3573 "", /* control_details */
3574 &blstroid_get_ctrl_name
3575 };
3576
blstroid_get_ctrl_name(int type)3577 const char *blstroid_get_ctrl_name(int type)
3578 {
3579 switch(type)
3580 {
3581 case IPT_BUTTON1: return BTN1 "Fire";
3582 case IPT_BUTTON2: return BTN2 "Thrust";
3583 case IPT_BUTTON3: return BTN3 "Transform: Armor, Shots, Speed";
3584 case IPT_DIAL: return "Rotate Ship Left";
3585 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Ship Right";
3586 } /* end of switch */
3587
3588 return "";
3589 }
3590
3591 const struct ControlInfo blasto_ctrl =
3592 {
3593 false, /* 45_degree_rotation for joystick(s) */
3594 false, /* alternating_controls */
3595 true, /* mirrored_controls */
3596 "Cocktail cabinet had directional buttons (up/down/left/right) while upright had joysticks. Clearly seen on the arcadeflyer link", /* control_details */
3597 &blasto_get_ctrl_name
3598 };
3599
blasto_get_ctrl_name(int type)3600 const char *blasto_get_ctrl_name(int type)
3601 {
3602 switch(type)
3603 {
3604 case IPT_BUTTON1: return BTN1 "Fire";
3605 } /* end of switch */
3606
3607 return joy4way_labels(type);
3608 }
3609
3610 const struct ControlInfo blazeon_ctrl =
3611 {
3612 false, /* 45_degree_rotation for joystick(s) */
3613 false, /* alternating_controls */
3614 true, /* mirrored_controls */
3615 "Editor's note: The control panel on this gmae labels the buttons simply as 'A' and 'B' but I felt it would be ok to simply put the actual functions as described in the flyer. As this game was often sold as a conversion kit, we can assume that the flyer used the labels 'A' and 'B' because that is the 'jamma standard' labeling scheme. A = Normal shot, B = Special Weapon / Attack", /* control_details */
3616 &blazeon_get_ctrl_name
3617 };
3618
blazeon_get_ctrl_name(int type)3619 const char *blazeon_get_ctrl_name(int type)
3620 {
3621 switch(type)
3622 {
3623 case IPT_BUTTON1: return BTN1 "Normal Shot";
3624 case IPT_BUTTON2: return BTN2 "Special Weapon / Attack";
3625 } /* end of switch */
3626
3627 return joy4way_labels(type);
3628 }
3629
3630 const struct ControlInfo blockout_ctrl =
3631 {
3632 false, /* 45_degree_rotation for joystick(s) */
3633 false, /* alternating_controls */
3634 true, /* mirrored_controls */
3635 "Note that oddly enough, the drop button, which is on the top-fire is the 4th button, not the first. Button A rotates on the Z axis, B on the Y axis, and C on the Ry. If you can't follow that just try the game an you will cath on.", /* control_details */
3636 &blockout_get_ctrl_name
3637 };
3638
blockout_get_ctrl_name(int type)3639 const char *blockout_get_ctrl_name(int type)
3640 {
3641 switch(type)
3642 {
3643 case IPT_BUTTON1: return BTN1 "A Button";
3644 case IPT_BUTTON2: return BTN2 "B Button";
3645 case IPT_BUTTON3: return BTN3 "C Button";
3646 case IPT_BUTTON4: return BTN4 "Drop";
3647 } /* end of switch */
3648
3649 return joy4way_labels(type);
3650 }
3651
3652 const struct ControlInfo blockade_ctrl =
3653 {
3654 false, /* 45_degree_rotation for joystick(s) */
3655 false, /* alternating_controls */
3656 true, /* mirrored_controls */
3657 "", /* control_details */
3658 &blockade_get_ctrl_name
3659 };
3660
blockade_get_ctrl_name(int type)3661 const char *blockade_get_ctrl_name(int type)
3662 {
3663 return joy4way_labels(type);
3664 }
3665
3666 const struct ControlInfo bloodbro_ctrl =
3667 {
3668 false, /* 45_degree_rotation for joystick(s) */
3669 false, /* alternating_controls */
3670 true, /* mirrored_controls */
3671 "", /* control_details */
3672 &bloodbro_get_ctrl_name
3673 };
3674
bloodbro_get_ctrl_name(int type)3675 const char *bloodbro_get_ctrl_name(int type)
3676 {
3677 switch(type)
3678 {
3679 case IPT_BUTTON1: return BTN1 "Fire";
3680 case IPT_BUTTON2: return BTN2 "Roll";
3681 case IPT_BUTTON3: return BTN3 "Dynamite";
3682 } /* end of switch */
3683
3684 return joy4way_labels(type);
3685 }
3686
3687 const struct ControlInfo bloxeed_ctrl =
3688 {
3689 false, /* 45_degree_rotation for joystick(s) */
3690 false, /* alternating_controls */
3691 true, /* mirrored_controls */
3692 "", /* control_details */
3693 &bloxeed_get_ctrl_name
3694 };
3695
bloxeed_get_ctrl_name(int type)3696 const char *bloxeed_get_ctrl_name(int type)
3697 {
3698 switch(type)
3699 {
3700 case IPT_BUTTON1: return BTN1 "Rotate";
3701 } /* end of switch */
3702
3703 return joy4way_labels(type);
3704 }
3705
3706 const struct ControlInfo blueprnt_ctrl =
3707 {
3708 false, /* 45_degree_rotation for joystick(s) */
3709 true, /* alternating_controls */
3710 true, /* mirrored_controls */
3711 "", /* control_details */
3712 &blueprnt_get_ctrl_name
3713 };
3714
blueprnt_get_ctrl_name(int type)3715 const char *blueprnt_get_ctrl_name(int type)
3716 {
3717 switch(type)
3718 {
3719 case IPT_BUTTON1: return BTN1 "Run";
3720 case IPT_JOYSTICK_UP: return "Walk Up";
3721 case IPT_JOYSTICK_DOWN: return "Walk Down";
3722 case IPT_JOYSTICK_LEFT: return "Walk Left";
3723 case IPT_JOYSTICK_RIGHT: return "Walk Right";
3724 } /* end of switch */
3725
3726 return "";
3727 }
3728
3729 const struct ControlInfo blueshrk_ctrl =
3730 {
3731 false, /* 45_degree_rotation for joystick(s) */
3732 false, /* alternating_controls */
3733 false, /* mirrored_controls */
3734 "This game actually used a one axis positional gun shaped to look like a spear gun. The spear shoots from the bottom of the screen and travels all the way to the top so just one axis is needed.", /* control_details */
3735 &blueshrk_get_ctrl_name
3736 };
3737
blueshrk_get_ctrl_name(int type)3738 const char *blueshrk_get_ctrl_name(int type)
3739 {
3740 switch(type)
3741 {
3742 case IPT_PADDLE: return "Aim Left";
3743 case (IPT_PADDLE + IPT_EXTENSION): return "Aim Right";
3744 } /* end of switch */
3745
3746 return "";
3747 }
3748
3749 const struct ControlInfo bodyslam_ctrl =
3750 {
3751 false, /* 45_degree_rotation for joystick(s) */
3752 false, /* alternating_controls */
3753 true, /* mirrored_controls */
3754 "Press help when near team mate to tag Press punch + kick and a direction to run Press punch when opponent on ground to pick them up Press kick to pin Press help to get up off the ground", /* control_details */
3755 &bodyslam_get_ctrl_name
3756 };
3757
bodyslam_get_ctrl_name(int type)3758 const char *bodyslam_get_ctrl_name(int type)
3759 {
3760 switch(type)
3761 {
3762 case IPT_BUTTON1: return BTN1 "Punch";
3763 case IPT_BUTTON2: return BTN2 "Kick";
3764 case IPT_BUTTON3: return BTN3 "Help";
3765 } /* end of switch */
3766
3767 return joy4way_labels(type);
3768 }
3769
3770 const struct ControlInfo bogeyman_ctrl =
3771 {
3772 false, /* 45_degree_rotation for joystick(s) */
3773 true, /* alternating_controls */
3774 true, /* mirrored_controls */
3775 "Button A to swing the rod Button B Trick button (this can be used to jump when the player changes shape)or to trick the ghosts", /* control_details */
3776 &bogeyman_get_ctrl_name
3777 };
3778
bogeyman_get_ctrl_name(int type)3779 const char *bogeyman_get_ctrl_name(int type)
3780 {
3781 switch(type)
3782 {
3783 case IPT_BUTTON1: return BTN1 "A";
3784 case IPT_BUTTON2: return BTN2 "B";
3785 } /* end of switch */
3786
3787 return joy4way_labels(type);
3788 }
3789
3790 const struct ControlInfo bombjack_ctrl =
3791 {
3792 false, /* 45_degree_rotation for joystick(s) */
3793 true, /* alternating_controls */
3794 true, /* mirrored_controls */
3795 "", /* control_details */
3796 &bombjack_get_ctrl_name
3797 };
3798
bombjack_get_ctrl_name(int type)3799 const char *bombjack_get_ctrl_name(int type)
3800 {
3801 switch(type)
3802 {
3803 case IPT_BUTTON1: return BTN1 "Jump";
3804 } /* end of switch */
3805
3806 return joy4way_labels(type);
3807 }
3808
3809 const struct ControlInfo boogwing_ctrl =
3810 {
3811 false, /* 45_degree_rotation for joystick(s) */
3812 false, /* alternating_controls */
3813 true, /* mirrored_controls */
3814 "Each player starts with a single bomb attached to their plane by a hook. Once dropped the hook can be used to pick up any land-based objects and drop them at will with the bomb button. Once the player's plane is shot down, they can run on land and fire with a pistol until hit.", /* control_details */
3815 &boogwing_get_ctrl_name
3816 };
3817
boogwing_get_ctrl_name(int type)3818 const char *boogwing_get_ctrl_name(int type)
3819 {
3820 switch(type)
3821 {
3822 case IPT_BUTTON1: return BTN1 "Fire";
3823 case IPT_BUTTON2: return BTN2 "Bomb";
3824 } /* end of switch */
3825
3826 return joy4way_labels(type);
3827 }
3828
3829 const struct ControlInfo boothill_ctrl =
3830 {
3831 false, /* 45_degree_rotation for joystick(s) */
3832 false, /* alternating_controls */
3833 true, /* mirrored_controls */
3834 "This game did NOT have a paddle but something, that for lack of a better description, is a 'paddle gun'. It's similar to the T2 analog guns but with a single axis.", /* control_details */
3835 &boothill_get_ctrl_name
3836 };
3837
boothill_get_ctrl_name(int type)3838 const char *boothill_get_ctrl_name(int type)
3839 {
3840 switch(type)
3841 {
3842 case IPT_BUTTON1: return BTN1 "Fire";
3843 case IPT_PADDLE: return "Aim Left";
3844 case (IPT_PADDLE + IPT_EXTENSION): return "Aim Right";
3845 } /* end of switch */
3846
3847 return joy4way_labels(type);
3848 }
3849
3850 const struct ControlInfo bosco_ctrl =
3851 {
3852 false, /* 45_degree_rotation for joystick(s) */
3853 true, /* alternating_controls */
3854 true, /* mirrored_controls */
3855 "", /* control_details */
3856 &bosco_get_ctrl_name
3857 };
3858
bosco_get_ctrl_name(int type)3859 const char *bosco_get_ctrl_name(int type)
3860 {
3861 switch(type)
3862 {
3863 case IPT_BUTTON1: return BTN1 "Fire";
3864 } /* end of switch */
3865
3866 return joy4way_labels(type);
3867 }
3868
3869 const struct ControlInfo bottom9_ctrl =
3870 {
3871 false, /* 45_degree_rotation for joystick(s) */
3872 false, /* alternating_controls */
3873 true, /* mirrored_controls */
3874 "Buttons A and B do various things. According to the manual, A= 'Throw/Swing/Go' and B = 'Select/Bunt/Back'", /* control_details */
3875 &bottom9_get_ctrl_name
3876 };
3877
bottom9_get_ctrl_name(int type)3878 const char *bottom9_get_ctrl_name(int type)
3879 {
3880 switch(type)
3881 {
3882 case IPT_BUTTON1: return BTN1 "A";
3883 case IPT_BUTTON2: return BTN2 "B";
3884 } /* end of switch */
3885
3886 return joy4way_labels(type);
3887 }
3888
3889 const struct ControlInfo bouldash_ctrl =
3890 {
3891 false, /* 45_degree_rotation for joystick(s) */
3892 true, /* alternating_controls */
3893 true, /* mirrored_controls */
3894 "", /* control_details */
3895 &bouldash_get_ctrl_name
3896 };
3897
bouldash_get_ctrl_name(int type)3898 const char *bouldash_get_ctrl_name(int type)
3899 {
3900 return joy4way_labels(type);
3901 }
3902
3903 const struct ControlInfo bowler_ctrl =
3904 {
3905 false, /* 45_degree_rotation for joystick(s) */
3906 true, /* alternating_controls */
3907 true, /* mirrored_controls */
3908 "4 players alternate with the same trackball in the upright cab. Mame doesn't have cocktail mode, but KLOV shows a two trackball cocktail.", /* control_details */
3909 &bowler_get_ctrl_name
3910 };
3911
bowler_get_ctrl_name(int type)3912 const char *bowler_get_ctrl_name(int type)
3913 {
3914 switch(type)
3915 {
3916 case IPT_BUTTON1: return BTN1 "Straight/Hook";
3917 case IPT_BUTTON2: return BTN2 "??";
3918 case IPT_TRACKBALL_Y: return "Up";
3919 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
3920 case IPT_TRACKBALL_X: return "Left";
3921 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
3922 } /* end of switch */
3923
3924 return "";
3925 }
3926
3927 const struct ControlInfo boxingb_ctrl =
3928 {
3929 false, /* 45_degree_rotation for joystick(s) */
3930 true, /* alternating_controls */
3931 true, /* mirrored_controls */
3932 "The dial is actually labeled rotation control. The buttons don't have labels, rather they have pictures of a rocket and a boxing glove respectively.", /* control_details */
3933 &boxingb_get_ctrl_name
3934 };
3935
boxingb_get_ctrl_name(int type)3936 const char *boxingb_get_ctrl_name(int type)
3937 {
3938 switch(type)
3939 {
3940 case IPT_BUTTON1: return BTN1 "Rocket";
3941 case IPT_BUTTON2: return BTN2 "Punch";
3942 case IPT_DIAL: return "Rotate Left";
3943 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
3944 } /* end of switch */
3945
3946 return "";
3947 }
3948
3949 const struct ControlInfo bradley_ctrl =
3950 {
3951 false, /* 45_degree_rotation for joystick(s) */
3952 false, /* alternating_controls */
3953 false, /* mirrored_controls */
3954 "I've made an executive decision on this one. Since it's a prototype and there aren't any good pics of the control panel, I've decided to list the labels given in mame (which are not correct) and describe how the actual machine worked. First off we have a yoke designed for this military conversion. If not for this game, there wouldn't be a star wars yoke. The range of the shot was controlled by an analog dial on the bezel. Next to that was a digital knob that controlled the magnification. The game originally had a toggle switch that doesn't seem to be included in mame. My guess is that it was never hooked up to anything (this prototype was a mess and was never finished). Please note that all buttons save the first hae hard-coded mappings.", /* control_details */
3955 &bradley_get_ctrl_name
3956 };
3957
bradley_get_ctrl_name(int type)3958 const char *bradley_get_ctrl_name(int type)
3959 {
3960 switch(type)
3961 {
3962 /* P1NumButtons=10 */
3963 case IPT_BUTTON1: return BTN1 "Fire";
3964 case IPT_BUTTON10: return "Magnification Toggle";
3965 case IPT_BUTTON2: return BTN2 "Armor Piercing (Single Shot)";
3966 case IPT_BUTTON3: return BTN3 "High Explosive (Single Shot)";
3967 case IPT_BUTTON4: return BTN4 "Armor Piercing (Low Rate)";
3968 case IPT_BUTTON5: return BTN5 "High Explosive (Low Rate)";
3969 case IPT_BUTTON6: return BTN6 "Armor Piercing (High Rate)";
3970 case IPT_BUTTON7: return BTN7 "High Explosive (High Rate)";
3971 case IPT_BUTTON8: return BTN7 "Select Tow Missiles";
3972 case IPT_BUTTON9: return "7.62 mm Machine Gun";
3973 case (IPT_AD_STICK_Z + IPT_EXTENSION): return "Decrease Range";
3974 case IPT_AD_STICK_Z: return "Increase Range";
3975 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Aim Right";
3976 case IPT_AD_STICK_X: return "Aim Left";
3977 case IPT_AD_STICK_Y: return "Aim Up";
3978 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Aim Down";
3979 } /* end of switch */
3980
3981 return "";
3982 }
3983
3984 const struct ControlInfo brkthru_ctrl =
3985 {
3986 false, /* 45_degree_rotation for joystick(s) */
3987 true, /* alternating_controls */
3988 true, /* mirrored_controls */
3989 "This game's official overlay didn't have any labels. These are labels.", /* control_details */
3990 &brkthru_get_ctrl_name
3991 };
3992
brkthru_get_ctrl_name(int type)3993 const char *brkthru_get_ctrl_name(int type)
3994 {
3995 switch(type)
3996 {
3997 case IPT_BUTTON1: return BTN1 "Attack";
3998 case IPT_BUTTON2: return BTN2 "Fire";
3999 } /* end of switch */
4000
4001 return joy4way_labels(type);
4002 }
4003
4004 const struct ControlInfo bublbobl_ctrl =
4005 {
4006 false, /* 45_degree_rotation for joystick(s) */
4007 false, /* alternating_controls */
4008 true, /* mirrored_controls */
4009 "", /* control_details */
4010 &bublbobl_get_ctrl_name
4011 };
4012
bublbobl_get_ctrl_name(int type)4013 const char *bublbobl_get_ctrl_name(int type)
4014 {
4015 switch(type)
4016 {
4017 case IPT_BUTTON1: return BTN1 "Bubble";
4018 case IPT_BUTTON2: return BTN2 "Jump";
4019 } /* end of switch */
4020
4021 return joy2way_labels(type);
4022 }
4023
4024 const struct ControlInfo bubbles_ctrl =
4025 {
4026 false, /* 45_degree_rotation for joystick(s) */
4027 true, /* alternating_controls */
4028 true, /* mirrored_controls */
4029 "", /* control_details */
4030 &bubbles_get_ctrl_name
4031 };
4032
bubbles_get_ctrl_name(int type)4033 const char *bubbles_get_ctrl_name(int type)
4034 {
4035 return joy4way_labels(type);
4036 }
4037
4038 const struct ControlInfo buckrog_ctrl =
4039 {
4040 false, /* 45_degree_rotation for joystick(s) */
4041 true, /* alternating_controls */
4042 true, /* mirrored_controls */
4043 "The trigger stick button is mirrored on the control panel.", /* control_details */
4044 &buckrog_get_ctrl_name
4045 };
4046
buckrog_get_ctrl_name(int type)4047 const char *buckrog_get_ctrl_name(int type)
4048 {
4049 switch(type)
4050 {
4051 case IPT_BUTTON1: return BTN1 "Fire";
4052 case IPT_BUTTON2: return BTN2 "Slow";
4053 case IPT_BUTTON3: return BTN3 "Fast";
4054 } /* end of switch */
4055
4056 return joy4way_labels(type);
4057 }
4058
4059 const struct ControlInfo buggychl_ctrl =
4060 {
4061 false, /* 45_degree_rotation for joystick(s) */
4062 false, /* alternating_controls */
4063 false, /* mirrored_controls */
4064 "As it's mapped in mame, holidng down the shifter button keeps the car in high gear.", /* control_details */
4065 &buggychl_get_ctrl_name
4066 };
4067
buggychl_get_ctrl_name(int type)4068 const char *buggychl_get_ctrl_name(int type)
4069 {
4070 switch(type)
4071 {
4072 case IPT_BUTTON1: return BTN1 "Accelerate";
4073 case IPT_BUTTON2: return BTN2 "H / L";
4074 case IPT_DIAL: return "Left";
4075 case (IPT_DIAL + IPT_EXTENSION): return "Right";
4076 } /* end of switch */
4077
4078 return "";
4079 }
4080
4081 const struct ControlInfo btime_ctrl =
4082 {
4083 false, /* 45_degree_rotation for joystick(s) */
4084 true, /* alternating_controls */
4085 true, /* mirrored_controls */
4086 "", /* control_details */
4087 &btime_get_ctrl_name
4088 };
4089
btime_get_ctrl_name(int type)4090 const char *btime_get_ctrl_name(int type)
4091 {
4092 switch(type)
4093 {
4094 case IPT_BUTTON1: return BTN1 "Pepper";
4095 } /* end of switch */
4096
4097 return joy4way_labels(type);
4098 }
4099
4100 const struct ControlInfo brubber_ctrl =
4101 {
4102 false, /* 45_degree_rotation for joystick(s) */
4103 true, /* alternating_controls */
4104 true, /* mirrored_controls */
4105 "Up and Down act essentially as a gear shift, you don\'t have to hold up or down to go fast or slow. Also note that you can only jump when going fast.", /* control_details */
4106 &brubber_get_ctrl_name
4107 };
4108
brubber_get_ctrl_name(int type)4109 const char *brubber_get_ctrl_name(int type)
4110 {
4111 switch(type)
4112 {
4113 case IPT_BUTTON1: return BTN1 "Jump";
4114 case IPT_JOYSTICK_UP: return "Fast";
4115 case IPT_JOYSTICK_DOWN: return "Slow";
4116 case IPT_JOYSTICK_LEFT: return "Left";
4117 case IPT_JOYSTICK_RIGHT: return "Right";
4118 } /* end of switch */
4119
4120 return "";
4121 }
4122
4123 const struct ControlInfo cabal_ctrl =
4124 {
4125 false, /* 45_degree_rotation for joystick(s) */
4126 false, /* alternating_controls */
4127 true, /* mirrored_controls */
4128 "There is a bootleg version that used 8-way sticks and 3 buttons instead of the official trackball and 2 buttons. The third button in the bootleg version is the roll button.", /* control_details */
4129 &cabal_get_ctrl_name
4130 };
4131
cabal_get_ctrl_name(int type)4132 const char *cabal_get_ctrl_name(int type)
4133 {
4134 switch(type)
4135 {
4136 case IPT_BUTTON1: return BTN1 "Fire";
4137 case IPT_BUTTON2: return BTN2 "Grenade";
4138 case IPT_TRACKBALL_X: return "Left";
4139 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
4140 case IPT_TRACKBALL_Y: return "Up";
4141 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
4142 } /* end of switch */
4143
4144 return "";
4145 }
4146
4147 const struct ControlInfo cadash_ctrl =
4148 {
4149 false, /* 45_degree_rotation for joystick(s) */
4150 false, /* alternating_controls */
4151 true, /* mirrored_controls */
4152 "", /* control_details */
4153 &cadash_get_ctrl_name
4154 };
4155
cadash_get_ctrl_name(int type)4156 const char *cadash_get_ctrl_name(int type)
4157 {
4158 switch(type)
4159 {
4160 case IPT_BUTTON1: return BTN1 "Attack";
4161 case IPT_BUTTON2: return BTN2 "Jump";
4162 } /* end of switch */
4163
4164 return joy4way_labels(type);
4165 }
4166
4167 const struct ControlInfo dino_ctrl =
4168 {
4169 false, /* 45_degree_rotation for joystick(s) */
4170 false, /* alternating_controls */
4171 true, /* mirrored_controls */
4172 "", /* control_details */
4173 &dino_get_ctrl_name
4174 };
4175
dino_get_ctrl_name(int type)4176 const char *dino_get_ctrl_name(int type)
4177 {
4178 switch(type)
4179 {
4180 case IPT_BUTTON1: return BTN1 "Attack";
4181 case IPT_BUTTON2: return BTN2 "Jump";
4182 } /* end of switch */
4183
4184 return joy4way_labels(type);
4185 }
4186
4187 const struct ControlInfo calibr50_ctrl =
4188 {
4189 false, /* 45_degree_rotation for joystick(s) */
4190 false, /* alternating_controls */
4191 true, /* mirrored_controls */
4192 "The joysticks were 'Loop 24' joysticks, which look like the yellow mechanical 'LS-30', except are optical instead of mechanical. They also had green handles and clicked 24 times to complete a full rotation, hence the 'Loop 24' name.", /* control_details */
4193 &calibr50_get_ctrl_name
4194 };
4195
calibr50_get_ctrl_name(int type)4196 const char *calibr50_get_ctrl_name(int type)
4197 {
4198 switch(type)
4199 {
4200 case IPT_BUTTON1: return BTN1 "Rapid Fire";
4201 case IPT_BUTTON2: return BTN2 "Grenade";
4202 case IPT_DIAL: return "Rotate Left";
4203 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
4204 } /* end of switch */
4205
4206 return joy4way_labels(type);
4207 }
4208
4209 const struct ControlInfo cameltry_ctrl =
4210 {
4211 false, /* 45_degree_rotation for joystick(s) */
4212 true, /* alternating_controls */
4213 true, /* mirrored_controls */
4214 "This game seems to use a tetris cpo. The button isn't actually labeled, and the labels it were given are explained during gameplay. Pressing the button jumps while holding it down speeds up your decent.", /* control_details */
4215 &cameltry_get_ctrl_name
4216 };
4217
cameltry_get_ctrl_name(int type)4218 const char *cameltry_get_ctrl_name(int type)
4219 {
4220 switch(type)
4221 {
4222 case IPT_BUTTON1: return BTN1 "Jump / Speedup";
4223 case IPT_DIAL: return "Rotate Left";
4224 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
4225 } /* end of switch */
4226
4227 return "";
4228 }
4229
4230 const struct ControlInfo canyon_ctrl =
4231 {
4232 false, /* 45_degree_rotation for joystick(s) */
4233 false, /* alternating_controls */
4234 true, /* mirrored_controls */
4235 "The panel had buttons labelled Black Start, Black Fire, White Start, White Fire. Black is the first player and White is the second, so we don't add that part onto the label here. It also had a button for Hi Score Reset (yes, on the panel itself), MAME oddly emulates this as p1 button 7, but the driver overrides the default key to an 'H' (for 'high' score reset). The driver will eventually be fixed to put this button in the service buttons, where it bleongs.", /* control_details */
4236 &canyon_get_ctrl_name
4237 };
4238
canyon_get_ctrl_name(int type)4239 const char *canyon_get_ctrl_name(int type)
4240 {
4241 switch(type)
4242 {
4243 case IPT_BUTTON1: return BTN1 "Fire";
4244 } /* end of switch */
4245
4246 return "";
4247 }
4248
4249 const struct ControlInfo capbowl_ctrl =
4250 {
4251 false, /* 45_degree_rotation for joystick(s) */
4252 true, /* alternating_controls */
4253 true, /* mirrored_controls */
4254 "", /* control_details */
4255 &capbowl_get_ctrl_name
4256 };
4257
capbowl_get_ctrl_name(int type)4258 const char *capbowl_get_ctrl_name(int type)
4259 {
4260 switch(type)
4261 {
4262 case IPT_BUTTON1: return BTN1 "Hook Left";
4263 case IPT_BUTTON2: return BTN2 "Hook Right";
4264 case IPT_TRACKBALL_X: return "Left";
4265 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
4266 case IPT_TRACKBALL_Y: return "Up";
4267 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
4268 } /* end of switch */
4269
4270 return "";
4271 }
4272
4273 const struct ControlInfo captaven_ctrl =
4274 {
4275 false, /* 45_degree_rotation for joystick(s) */
4276 false, /* alternating_controls */
4277 true, /* mirrored_controls */
4278 "", /* control_details */
4279 &captaven_get_ctrl_name
4280 };
4281
captaven_get_ctrl_name(int type)4282 const char *captaven_get_ctrl_name(int type)
4283 {
4284 switch(type)
4285 {
4286 case IPT_BUTTON1: return BTN1 "Start / Attack";
4287 case IPT_BUTTON2: return BTN2 "Jump";
4288 } /* end of switch */
4289
4290 return joy4way_labels(type);
4291 }
4292
4293 const struct ControlInfo captcomm_ctrl =
4294 {
4295 false, /* 45_degree_rotation for joystick(s) */
4296 false, /* alternating_controls */
4297 true, /* mirrored_controls */
4298 "Pressing attack and jump performs a special. This game is basically a capcom ripoff of tmnt and the controls are similar. The only difference is the use of a very rare two-sided, circular, 2-in-1 button (unlabeled btw) instead of two regular buttons. It should also be noted that this game can be changed from 2 player up to 4 player in the dipswitches and just like tmnt when you have it in 4 player mode players can't select their characters.", /* control_details */
4299 &captcomm_get_ctrl_name
4300 };
4301
captcomm_get_ctrl_name(int type)4302 const char *captcomm_get_ctrl_name(int type)
4303 {
4304 switch(type)
4305 {
4306 case IPT_BUTTON1: return BTN1 "Attack";
4307 case IPT_BUTTON2: return BTN2 "Jump";
4308 } /* end of switch */
4309
4310 return joy4way_labels(type);
4311 }
4312
4313 const struct ControlInfo carnevil_ctrl =
4314 {
4315 false, /* 45_degree_rotation for joystick(s) */
4316 false, /* alternating_controls */
4317 true, /* mirrored_controls */
4318 "The lightgun is shaped like a small, piston grip, pump action shotgun. You can also reload by shooting off screen.", /* control_details */
4319 &carnevil_get_ctrl_name
4320 };
4321
carnevil_get_ctrl_name(int type)4322 const char *carnevil_get_ctrl_name(int type)
4323 {
4324 switch(type)
4325 {
4326 case IPT_BUTTON1: return BTN1 "Trigger";
4327 case IPT_BUTTON2: return BTN2 "Reload";
4328 case IPT_LIGHTGUN_X: return "Left";
4329 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
4330 case IPT_LIGHTGUN_Y: return "Up";
4331 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
4332 } /* end of switch */
4333
4334 return "";
4335 }
4336
4337 const struct ControlInfo carnival_ctrl =
4338 {
4339 false, /* 45_degree_rotation for joystick(s) */
4340 true, /* alternating_controls */
4341 true, /* mirrored_controls */
4342 "", /* control_details */
4343 &carnival_get_ctrl_name
4344 };
4345
carnival_get_ctrl_name(int type)4346 const char *carnival_get_ctrl_name(int type)
4347 {
4348 switch(type)
4349 {
4350 case IPT_BUTTON1: return BTN1 "Shoot";
4351 } /* end of switch */
4352
4353 return joy2way_labels(type);
4354 }
4355
4356 const struct ControlInfo cawing_ctrl =
4357 {
4358 false, /* 45_degree_rotation for joystick(s) */
4359 false, /* alternating_controls */
4360 true, /* mirrored_controls */
4361 "", /* control_details */
4362 &cawing_get_ctrl_name
4363 };
4364
cawing_get_ctrl_name(int type)4365 const char *cawing_get_ctrl_name(int type)
4366 {
4367 switch(type)
4368 {
4369 case IPT_BUTTON1: return BTN1 "Fire";
4370 case IPT_BUTTON2: return BTN2 "Special Weapon";
4371 } /* end of switch */
4372
4373 return joy4way_labels(type);
4374 }
4375
4376 const struct ControlInfo cavelon_ctrl =
4377 {
4378 false, /* 45_degree_rotation for joystick(s) */
4379 true, /* alternating_controls */
4380 true, /* mirrored_controls */
4381 "", /* control_details */
4382 &cavelon_get_ctrl_name
4383 };
4384
cavelon_get_ctrl_name(int type)4385 const char *cavelon_get_ctrl_name(int type)
4386 {
4387 switch(type)
4388 {
4389 case IPT_BUTTON1: return BTN1 "Shoot";
4390 case IPT_BUTTON2: return BTN2 "Magic Sword";
4391 } /* end of switch */
4392
4393 return joy4way_labels(type);
4394 }
4395
4396 const struct ControlInfo cninja_ctrl =
4397 {
4398 false, /* 45_degree_rotation for joystick(s) */
4399 false, /* alternating_controls */
4400 true, /* mirrored_controls */
4401 "", /* control_details */
4402 &cninja_get_ctrl_name
4403 };
4404
cninja_get_ctrl_name(int type)4405 const char *cninja_get_ctrl_name(int type)
4406 {
4407 switch(type)
4408 {
4409 case IPT_BUTTON1: return BTN1 "Attack";
4410 case IPT_BUTTON2: return BTN2 "Jump";
4411 case IPT_JOYSTICK_UP: return "Aim Up";
4412 case IPT_JOYSTICK_DOWN: return "Duck";
4413 case IPT_JOYSTICK_LEFT: return "Left";
4414 case IPT_JOYSTICK_RIGHT: return "Right";
4415 } /* end of switch */
4416
4417 return "";
4418 }
4419
4420 const struct ControlInfo centiped_ctrl =
4421 {
4422 false, /* 45_degree_rotation for joystick(s) */
4423 true, /* alternating_controls */
4424 true, /* mirrored_controls */
4425 "", /* control_details */
4426 ¢iped_get_ctrl_name
4427 };
4428
centiped_get_ctrl_name(int type)4429 const char *centiped_get_ctrl_name(int type)
4430 {
4431 switch(type)
4432 {
4433 case IPT_BUTTON1: return BTN1 "Fire";
4434 case IPT_TRACKBALL_X: return "Left";
4435 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
4436 case IPT_TRACKBALL_Y: return "Up";
4437 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
4438 } /* end of switch */
4439
4440 return "";
4441 }
4442
4443 const struct ControlInfo challeng_ctrl =
4444 {
4445 false, /* 45_degree_rotation for joystick(s) */
4446 true, /* alternating_controls */
4447 true, /* mirrored_controls */
4448 "", /* control_details */
4449 &challeng_get_ctrl_name
4450 };
4451
challeng_get_ctrl_name(int type)4452 const char *challeng_get_ctrl_name(int type)
4453 {
4454 switch(type)
4455 {
4456 case IPT_BUTTON1: return BTN1 "Fire";
4457 case IPT_BUTTON2: return BTN2 "Bomb";
4458 case IPT_BUTTON3: return BTN3 "Warp";
4459 } /* end of switch */
4460
4461 return joy2way_labels(type);
4462 }
4463
4464 const struct ControlInfo champbas_ctrl =
4465 {
4466 false, /* 45_degree_rotation for joystick(s) */
4467 false, /* alternating_controls */
4468 false, /* mirrored_controls */
4469 "The actual cpo labels simply read A, B, and C respectively. The bezel, however, tells you the functions. Since part of this projects goal is to aid in figuring out how to play, I improvised and combined the two.", /* control_details */
4470 &champbas_get_ctrl_name
4471 };
4472
champbas_get_ctrl_name(int type)4473 const char *champbas_get_ctrl_name(int type)
4474 {
4475 switch(type)
4476 {
4477 case IPT_BUTTON1: return BTN1 "A: Change Batter, Pitcher";
4478 case IPT_BUTTON2: return BTN2 "B: Bat, Extra Bases - Pitch, Throw Ball";
4479 case IPT_BUTTON3: return BTN3 "C: Steal, Run Back";
4480 } /* end of switch */
4481
4482 return joy4way_labels(type);
4483 }
4484
4485 const struct ControlInfo csprint_ctrl =
4486 {
4487 false, /* 45_degree_rotation for joystick(s) */
4488 false, /* alternating_controls */
4489 true, /* mirrored_controls */
4490 "", /* control_details */
4491 &csprint_get_ctrl_name
4492 };
4493
csprint_get_ctrl_name(int type)4494 const char *csprint_get_ctrl_name(int type)
4495 {
4496 switch(type)
4497 {
4498 case IPT_DIAL: return "Left";
4499 case (IPT_DIAL + IPT_EXTENSION): return "Right";
4500 case IPT_PEDAL: return "Accelerate ";
4501 } /* end of switch */
4502
4503 return "";
4504 }
4505
4506 const struct ControlInfo checkman_ctrl =
4507 {
4508 false, /* 45_degree_rotation for joystick(s) */
4509 true, /* alternating_controls */
4510 true, /* mirrored_controls */
4511 "The original Japanese version of Check Man (checkmaj) uses two fire buttons to slide the rows of blocks left and right. The fire buttons were removed for the world release and the player select buttons are used to slide the blocks.", /* control_details */
4512 &checkman_get_ctrl_name
4513 };
4514
checkman_get_ctrl_name(int type)4515 const char *checkman_get_ctrl_name(int type)
4516 {
4517 switch(type)
4518 {
4519 case IPT_BUTTON1: return BTN1 "Slide left";
4520 case IPT_BUTTON2: return BTN2 "Slide right";
4521 } /* end of switch */
4522
4523 return joy4way_labels(type);
4524 }
4525
4526 const struct ControlInfo checkmat_ctrl =
4527 {
4528 false, /* 45_degree_rotation for joystick(s) */
4529 false, /* alternating_controls */
4530 true, /* mirrored_controls */
4531 "", /* control_details */
4532 &checkmat_get_ctrl_name
4533 };
4534
checkmat_get_ctrl_name(int type)4535 const char *checkmat_get_ctrl_name(int type)
4536 {
4537 return joy4way_labels(type);
4538 }
4539
4540 const struct ControlInfo cheekyms_ctrl =
4541 {
4542 false, /* 45_degree_rotation for joystick(s) */
4543 true, /* alternating_controls */
4544 true, /* mirrored_controls */
4545 "", /* control_details */
4546 &cheekyms_get_ctrl_name
4547 };
4548
cheekyms_get_ctrl_name(int type)4549 const char *cheekyms_get_ctrl_name(int type)
4550 {
4551 switch(type)
4552 {
4553 case IPT_BUTTON1: return BTN1 "Hammer";
4554 case IPT_JOYSTICK_LEFT: return "L";
4555 case IPT_JOYSTICK_RIGHT: return "R";
4556 } /* end of switch */
4557
4558 return "";
4559 }
4560
4561 const struct ControlInfo cheyenne_ctrl =
4562 {
4563 false, /* 45_degree_rotation for joystick(s) */
4564 false, /* alternating_controls */
4565 true, /* mirrored_controls */
4566 "Game used a rifle style lightgun on a pedestal mount.", /* control_details */
4567 &cheyenne_get_ctrl_name
4568 };
4569
cheyenne_get_ctrl_name(int type)4570 const char *cheyenne_get_ctrl_name(int type)
4571 {
4572 switch(type)
4573 {
4574 case IPT_BUTTON1: return BTN1 "Fire";
4575 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
4576 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
4577 case IPT_LIGHTGUN_Y: return "Up";
4578 case IPT_LIGHTGUN_X: return "Left";
4579 } /* end of switch */
4580
4581 return "";
4582 }
4583
4584 const struct ControlInfo cshift_ctrl =
4585 {
4586 false, /* 45_degree_rotation for joystick(s) */
4587 true, /* alternating_controls */
4588 true, /* mirrored_controls */
4589 "", /* control_details */
4590 &cshift_get_ctrl_name
4591 };
4592
cshift_get_ctrl_name(int type)4593 const char *cshift_get_ctrl_name(int type)
4594 {
4595 switch(type)
4596 {
4597 case IPT_BUTTON1: return BTN1 "Blue Things";
4598 case IPT_BUTTON2: return BTN2 "Red Things";
4599 } /* end of switch */
4600
4601 return "";
4602 }
4603
4604 const struct ControlInfo chiller_ctrl =
4605 {
4606 false, /* 45_degree_rotation for joystick(s) */
4607 true, /* alternating_controls */
4608 true, /* mirrored_controls */
4609 "This game is one of only a handful that uses a mounted lightgun instead of a regular analog mounted gun. You would think that mame-wize it would be more autehntic to use an analog gun, but as the game doesn't have any calibration (since it's optical) it is reccomended that you use a standard lightgun for this game.", /* control_details */
4610 &chiller_get_ctrl_name
4611 };
4612
chiller_get_ctrl_name(int type)4613 const char *chiller_get_ctrl_name(int type)
4614 {
4615 switch(type)
4616 {
4617 case IPT_BUTTON1: return BTN1 "Fire";
4618 case IPT_LIGHTGUN_X: return "Left";
4619 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
4620 case IPT_LIGHTGUN_Y: return "Up";
4621 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
4622 } /* end of switch */
4623
4624 return "";
4625 }
4626
4627 const struct ControlInfo ccasino_ctrl =
4628 {
4629 false, /* 45_degree_rotation for joystick(s) */
4630 true, /* alternating_controls */
4631 true, /* mirrored_controls */
4632 "Mahjong games are NOT compatable with ctrlr files. As a matter of fact they pretty much all have the same layout and all have the same controls. The controls are hardcoded, so remapping isn't reccomended, especially considering the fact that a full keyboard of buttons are required to play.", /* control_details */
4633 &ccasino_get_ctrl_name
4634 };
4635
ccasino_get_ctrl_name(int type)4636 const char *ccasino_get_ctrl_name(int type)
4637 {
4638 return "";
4639 }
4640
4641 const struct ControlInfo chopper_ctrl =
4642 {
4643 false, /* 45_degree_rotation for joystick(s) */
4644 true, /* alternating_controls */
4645 true, /* mirrored_controls */
4646 "This game's official cpo is unlabeled. If anyone has the manual to this game please feel free to verify these labels.", /* control_details */
4647 &chopper_get_ctrl_name
4648 };
4649
chopper_get_ctrl_name(int type)4650 const char *chopper_get_ctrl_name(int type)
4651 {
4652 switch(type)
4653 {
4654 case IPT_BUTTON1: return BTN1 "Shoot";
4655 case IPT_BUTTON2: return BTN2 "Special Weapon";
4656 } /* end of switch */
4657
4658 return joy4way_labels(type);
4659 }
4660
4661 const struct ControlInfo circus_ctrl =
4662 {
4663 false, /* 45_degree_rotation for joystick(s) */
4664 true, /* alternating_controls */
4665 true, /* mirrored_controls */
4666 "The original cpo didn't have any labels for the paddle, but rather the instructions: 'Bounce Man From Board. Pop Balloons For Points' The game also listed the scoring chart on the cpo.", /* control_details */
4667 &circus_get_ctrl_name
4668 };
4669
circus_get_ctrl_name(int type)4670 const char *circus_get_ctrl_name(int type)
4671 {
4672 switch(type)
4673 {
4674 case IPT_PADDLE: return "Left";
4675 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
4676 } /* end of switch */
4677
4678 return "";
4679 }
4680
4681 const struct ControlInfo circusc_ctrl =
4682 {
4683 false, /* 45_degree_rotation for joystick(s) */
4684 true, /* alternating_controls */
4685 true, /* mirrored_controls */
4686 "One neat feature of the game is that Player 1 and Player 2 can select different levels of difficulty.", /* control_details */
4687 &circusc_get_ctrl_name
4688 };
4689
circusc_get_ctrl_name(int type)4690 const char *circusc_get_ctrl_name(int type)
4691 {
4692 switch(type)
4693 {
4694 case IPT_BUTTON1: return BTN1 "Jump";
4695 } /* end of switch */
4696
4697 return joy2way_labels(type);
4698 }
4699
4700 const struct ControlInfo cischeat_ctrl =
4701 {
4702 false, /* 45_degree_rotation for joystick(s) */
4703 true, /* alternating_controls */
4704 true, /* mirrored_controls */
4705 "The 'Horn' button has a picture of a horn on it rather than actual text.", /* control_details */
4706 &cischeat_get_ctrl_name
4707 };
4708
cischeat_get_ctrl_name(int type)4709 const char *cischeat_get_ctrl_name(int type)
4710 {
4711 switch(type)
4712 {
4713 case IPT_BUTTON1: return BTN1 "Accelerate";
4714 case IPT_BUTTON2: return BTN2 "Brake";
4715 case IPT_BUTTON3: return BTN3 "Low";
4716 case IPT_BUTTON4: return BTN4 "Hi";
4717 case IPT_BUTTON5: return BTN5 "Horn";
4718 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
4719 case IPT_PADDLE: return "Left";
4720 } /* end of switch */
4721
4722 return "";
4723 }
4724
4725 const struct ControlInfo citycon_ctrl =
4726 {
4727 false, /* 45_degree_rotation for joystick(s) */
4728 true, /* alternating_controls */
4729 true, /* mirrored_controls */
4730 "", /* control_details */
4731 &citycon_get_ctrl_name
4732 };
4733
citycon_get_ctrl_name(int type)4734 const char *citycon_get_ctrl_name(int type)
4735 {
4736 switch(type)
4737 {
4738 case IPT_BUTTON1: return BTN1 "Shoot";
4739 case IPT_BUTTON2: return BTN2 "Jump";
4740 } /* end of switch */
4741
4742 return joy4way_labels(type);
4743 }
4744
4745 const struct ControlInfo citylove_ctrl =
4746 {
4747 false, /* 45_degree_rotation for joystick(s) */
4748 true, /* alternating_controls */
4749 true, /* mirrored_controls */
4750 "Mahjong games are NOT compatable with ctrlr files. As a matter of fact they pretty much all have the same layout and all have the same controls. The controls are hardcoded, so remapping isn't reccomended, especially considering the fact that a full keyboard of buttons are required to play.", /* control_details */
4751 &citylove_get_ctrl_name
4752 };
4753
citylove_get_ctrl_name(int type)4754 const char *citylove_get_ctrl_name(int type)
4755 {
4756 return "";
4757 }
4758
4759 const struct ControlInfo cloak_ctrl =
4760 {
4761 false, /* 45_degree_rotation for joystick(s) */
4762 true, /* alternating_controls */
4763 true, /* mirrored_controls */
4764 "", /* control_details */
4765 &cloak_get_ctrl_name
4766 };
4767
cloak_get_ctrl_name(int type)4768 const char *cloak_get_ctrl_name(int type)
4769 {
4770 switch(type)
4771 {
4772 case IPT_BUTTON1: return BTN1 "Light Fuse";
4773 case IPT_JOYSTICKLEFT_UP: return "Up";
4774 case IPT_JOYSTICKLEFT_DOWN: return "Down";
4775 case IPT_JOYSTICKLEFT_LEFT: return "Left";
4776 case IPT_JOYSTICKLEFT_RIGHT: return "Right";
4777 case IPT_JOYSTICKRIGHT_UP: return "Fire Up";
4778 case IPT_JOYSTICKRIGHT_DOWN: return "Fire Down";
4779 case IPT_JOYSTICKRIGHT_LEFT: return "Fire Left";
4780 case IPT_JOYSTICKRIGHT_RIGHT: return "Fire Right";
4781 } /* end of switch */
4782
4783 return "";
4784 }
4785
4786 const struct ControlInfo clowns_ctrl =
4787 {
4788 false, /* 45_degree_rotation for joystick(s) */
4789 true, /* alternating_controls */
4790 true, /* mirrored_controls */
4791 "This game definately has a unique layout. Although players take turns, each player has his own controls, even on the upright version. Even stranger is the fact that the second players controls are on the left and player one is on the right.", /* control_details */
4792 &clowns_get_ctrl_name
4793 };
4794
clowns_get_ctrl_name(int type)4795 const char *clowns_get_ctrl_name(int type)
4796 {
4797 switch(type)
4798 {
4799 case IPT_PADDLE: return "Move Left";
4800 case (IPT_PADDLE + IPT_EXTENSION): return "Move Right";
4801 } /* end of switch */
4802
4803 return "";
4804 }
4805
4806 const struct ControlInfo cltchitr_ctrl =
4807 {
4808 false, /* 45_degree_rotation for joystick(s) */
4809 false, /* alternating_controls */
4810 true, /* mirrored_controls */
4811 "The A, B, and C buttons actually have a series of actions listed for each one on the cpo, but it's far too long to document here.", /* control_details */
4812 &cltchitr_get_ctrl_name
4813 };
4814
cltchitr_get_ctrl_name(int type)4815 const char *cltchitr_get_ctrl_name(int type)
4816 {
4817 switch(type)
4818 {
4819 case IPT_BUTTON1: return BTN1 "A";
4820 case IPT_BUTTON2: return BTN2 "B";
4821 case IPT_BUTTON3: return BTN3 "C";
4822 } /* end of switch */
4823
4824 return joy4way_labels(type);
4825 }
4826
4827 const struct ControlInfo colony7_ctrl =
4828 {
4829 false, /* 45_degree_rotation for joystick(s) */
4830 true, /* alternating_controls */
4831 true, /* mirrored_controls */
4832 "", /* control_details */
4833 &colony7_get_ctrl_name
4834 };
4835
colony7_get_ctrl_name(int type)4836 const char *colony7_get_ctrl_name(int type)
4837 {
4838 switch(type)
4839 {
4840 case IPT_BUTTON1: return BTN1 "Fire";
4841 case IPT_BUTTON2: return BTN2 "Mega - Blaster";
4842 case IPT_BUTTON3: return BTN3 "Eradicator";
4843 case IPT_JOYSTICK_UP: return "Control Up";
4844 case IPT_JOYSTICK_DOWN: return "Control Down";
4845 case IPT_JOYSTICK_LEFT: return "Control Left";
4846 case IPT_JOYSTICK_RIGHT: return "Control Right";
4847 } /* end of switch */
4848
4849 return "";
4850 }
4851
4852 const struct ControlInfo columns_ctrl =
4853 {
4854 false, /* 45_degree_rotation for joystick(s) */
4855 false, /* alternating_controls */
4856 true, /* mirrored_controls */
4857 "The button is actually unlabed on the cpo and in the manual.", /* control_details */
4858 &columns_get_ctrl_name
4859 };
4860
columns_get_ctrl_name(int type)4861 const char *columns_get_ctrl_name(int type)
4862 {
4863 switch(type)
4864 {
4865 case IPT_BUTTON1: return BTN1 "Switch Pieces";
4866 case IPT_JOYSTICK_DOWN: return "Drop";
4867 case IPT_JOYSTICK_LEFT: return "Left";
4868 case IPT_JOYSTICK_RIGHT: return "Right";
4869 } /* end of switch */
4870
4871 return "";
4872 }
4873
4874 const struct ControlInfo combat_ctrl =
4875 {
4876 false, /* 45_degree_rotation for joystick(s) */
4877 false, /* alternating_controls */
4878 false, /* mirrored_controls */
4879 "This game uses a lightgun, but it's mounted to the control panel like an analog gun.", /* control_details */
4880 &combat_get_ctrl_name
4881 };
4882
combat_get_ctrl_name(int type)4883 const char *combat_get_ctrl_name(int type)
4884 {
4885 switch(type)
4886 {
4887 case IPT_BUTTON1: return BTN1 "Fire";
4888 case IPT_LIGHTGUN_X: return "Aim Left";
4889 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
4890 case IPT_LIGHTGUN_Y: return "Aim Up";
4891 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
4892 } /* end of switch */
4893
4894 return "";
4895 }
4896
4897 const struct ControlInfo commsega_ctrl =
4898 {
4899 false, /* 45_degree_rotation for joystick(s) */
4900 true, /* alternating_controls */
4901 true, /* mirrored_controls */
4902 "", /* control_details */
4903 &commsega_get_ctrl_name
4904 };
4905
commsega_get_ctrl_name(int type)4906 const char *commsega_get_ctrl_name(int type)
4907 {
4908 switch(type)
4909 {
4910 case IPT_BUTTON1: return BTN1 "Machine Gun";
4911 case IPT_BUTTON2: return BTN2 "Grenade";
4912 } /* end of switch */
4913
4914 return joy4way_labels(type);
4915 }
4916
4917 const struct ControlInfo commando_ctrl =
4918 {
4919 false, /* 45_degree_rotation for joystick(s) */
4920 true, /* alternating_controls */
4921 true, /* mirrored_controls */
4922 "", /* control_details */
4923 &commando_get_ctrl_name
4924 };
4925
commando_get_ctrl_name(int type)4926 const char *commando_get_ctrl_name(int type)
4927 {
4928 switch(type)
4929 {
4930 case IPT_BUTTON1: return BTN1 "Machine Gun";
4931 case IPT_BUTTON2: return BTN2 "Grenade";
4932 } /* end of switch */
4933
4934 return joy4way_labels(type);
4935 }
4936
4937 const struct ControlInfo comotion_ctrl =
4938 {
4939 false, /* 45_degree_rotation for joystick(s) */
4940 false, /* alternating_controls */
4941 true, /* mirrored_controls */
4942 "", /* control_details */
4943 &comotion_get_ctrl_name
4944 };
4945
comotion_get_ctrl_name(int type)4946 const char *comotion_get_ctrl_name(int type)
4947 {
4948 return joy4way_labels(type);
4949 }
4950
4951 const struct ControlInfo congo_ctrl =
4952 {
4953 true, /* 45_degree_rotation for joystick(s) */
4954 true, /* alternating_controls */
4955 true, /* mirrored_controls */
4956 "", /* control_details */
4957 &congo_get_ctrl_name
4958 };
4959
congo_get_ctrl_name(int type)4960 const char *congo_get_ctrl_name(int type)
4961 {
4962 switch(type)
4963 {
4964 case IPT_BUTTON1: return BTN1 "Jump";
4965 }
4966 if(!options.restrict_4_way)
4967 {
4968 switch(type)
4969 {
4970 case IPT_JOYSTICK_UP: return "Up-Right";
4971 case IPT_JOYSTICK_DOWN: return "Down-Left";
4972 case IPT_JOYSTICK_LEFT: return "Left-Up";
4973 case IPT_JOYSTICK_RIGHT: return "Right-Down";
4974 } /* end of switch */
4975 }
4976
4977 /* otherwise, controls are effectively rotated, so using the diagonal names would be confusing. */
4978 /* just use the generic function */
4979 return joy4way_labels(type);
4980 }
4981
4982 const struct ControlInfo contra_ctrl =
4983 {
4984 false, /* 45_degree_rotation for joystick(s) */
4985 false, /* alternating_controls */
4986 true, /* mirrored_controls */
4987 "", /* control_details */
4988 &contra_get_ctrl_name
4989 };
4990
contra_get_ctrl_name(int type)4991 const char *contra_get_ctrl_name(int type)
4992 {
4993 switch(type)
4994 {
4995 case IPT_BUTTON1: return BTN1 "Shoot";
4996 case IPT_BUTTON2: return BTN2 "Jump";
4997 } /* end of switch */
4998
4999 return joy4way_labels(type);
5000 }
5001
5002 const struct ControlInfo cosmica_ctrl =
5003 {
5004 false, /* 45_degree_rotation for joystick(s) */
5005 true, /* alternating_controls */
5006 true, /* mirrored_controls */
5007 "This game used odd buttons, that are essentially regular buttons with a translucent core.", /* control_details */
5008 &cosmica_get_ctrl_name
5009 };
5010
cosmica_get_ctrl_name(int type)5011 const char *cosmica_get_ctrl_name(int type)
5012 {
5013 switch(type)
5014 {
5015 case IPT_BUTTON1: return BTN1 "Fire";
5016 } /* end of switch */
5017
5018 return joy2way_labels(type);
5019 }
5020
5021 const struct ControlInfo cavenger_ctrl =
5022 {
5023 false, /* 45_degree_rotation for joystick(s) */
5024 true, /* alternating_controls */
5025 true, /* mirrored_controls */
5026 "", /* control_details */
5027 &cavenger_get_ctrl_name
5028 };
5029
cavenger_get_ctrl_name(int type)5030 const char *cavenger_get_ctrl_name(int type)
5031 {
5032 switch(type)
5033 {
5034 case IPT_BUTTON1: return BTN1 "Fire";
5035 case IPT_BUTTON2: return BTN2 "Bomb";
5036 } /* end of switch */
5037
5038 return joy4way_labels(type);
5039 }
5040
5041 const struct ControlInfo cchasm_ctrl =
5042 {
5043 false, /* 45_degree_rotation for joystick(s) */
5044 true, /* alternating_controls */
5045 true, /* mirrored_controls */
5046 "", /* control_details */
5047 &cchasm_get_ctrl_name
5048 };
5049
cchasm_get_ctrl_name(int type)5050 const char *cchasm_get_ctrl_name(int type)
5051 {
5052 switch(type)
5053 {
5054 case IPT_BUTTON1: return BTN1 "Fire";
5055 case IPT_BUTTON2: return BTN2 "Thrust";
5056 case IPT_BUTTON3: return BTN3 "Shields";
5057 case IPT_DIAL: return "Rotate Left";
5058 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
5059 } /* end of switch */
5060
5061 return "";
5062 }
5063
5064 const struct ControlInfo cosmicg_ctrl =
5065 {
5066 false, /* 45_degree_rotation for joystick(s) */
5067 true, /* alternating_controls */
5068 true, /* mirrored_controls */
5069 "", /* control_details */
5070 &cosmicg_get_ctrl_name
5071 };
5072
cosmicg_get_ctrl_name(int type)5073 const char *cosmicg_get_ctrl_name(int type)
5074 {
5075 switch(type)
5076 {
5077 case IPT_BUTTON1: return BTN1 "Fire";
5078 } /* end of switch */
5079
5080 return joy2way_labels(type);
5081 }
5082
5083 const struct ControlInfo cracksht_ctrl =
5084 {
5085 false, /* 45_degree_rotation for joystick(s) */
5086 true, /* alternating_controls */
5087 true, /* mirrored_controls */
5088 "This game used a mounted lightgun as opposed to a free one.", /* control_details */
5089 &cracksht_get_ctrl_name
5090 };
5091
cracksht_get_ctrl_name(int type)5092 const char *cracksht_get_ctrl_name(int type)
5093 {
5094 switch(type)
5095 {
5096 case IPT_BUTTON1: return BTN1 "Fire";
5097 case IPT_LIGHTGUN_X: return "Left";
5098 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
5099 case IPT_LIGHTGUN_Y: return "Up";
5100 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
5101 } /* end of switch */
5102
5103 return "";
5104 }
5105
5106 const struct ControlInfo crash_ctrl =
5107 {
5108 false, /* 45_degree_rotation for joystick(s) */
5109 true, /* alternating_controls */
5110 true, /* mirrored_controls */
5111 "", /* control_details */
5112 &crash_get_ctrl_name
5113 };
5114
crash_get_ctrl_name(int type)5115 const char *crash_get_ctrl_name(int type)
5116 {
5117 switch(type)
5118 {
5119 case IPT_BUTTON1: return BTN1 "Fast";
5120 } /* end of switch */
5121
5122 return joy4way_labels(type);
5123 }
5124
5125 const struct ControlInfo crater_ctrl =
5126 {
5127 false, /* 45_degree_rotation for joystick(s) */
5128 true, /* alternating_controls */
5129 true, /* mirrored_controls */
5130 "The shield button is the thumb button on the joystick.", /* control_details */
5131 &crater_get_ctrl_name
5132 };
5133
crater_get_ctrl_name(int type)5134 const char *crater_get_ctrl_name(int type)
5135 {
5136 switch(type)
5137 {
5138 case IPT_BUTTON1: return BTN1 "Fire (Trigger)";
5139 case IPT_BUTTON2: return BTN2 "Shield";
5140 case IPT_BUTTON3: return BTN3 "??";
5141 case IPT_JOYSTICK_DOWN: return "Reverse";
5142 case IPT_JOYSTICK_UP: return "Forward";
5143 case IPT_DIAL: return "Turn Left";
5144 case (IPT_DIAL + IPT_EXTENSION): return "Turn Right";
5145 } /* end of switch */
5146
5147 return "";
5148 }
5149
5150 const struct ControlInfo cclimber_ctrl =
5151 {
5152 false, /* 45_degree_rotation for joystick(s) */
5153 true, /* alternating_controls */
5154 true, /* mirrored_controls */
5155 "", /* control_details */
5156 &cclimber_get_ctrl_name
5157 };
5158
cclimber_get_ctrl_name(int type)5159 const char *cclimber_get_ctrl_name(int type)
5160 {
5161 switch(type)
5162 {
5163 case IPT_JOYSTICKLEFT_UP: return "Left Up";
5164 case IPT_JOYSTICKLEFT_DOWN: return "Left Down";
5165 case IPT_JOYSTICKLEFT_LEFT: return "Left Left";
5166 case IPT_JOYSTICKLEFT_RIGHT: return "Left Right";
5167 case IPT_JOYSTICKRIGHT_UP: return "Right Up";
5168 case IPT_JOYSTICKRIGHT_DOWN: return "Right Down";
5169 case IPT_JOYSTICKRIGHT_LEFT: return "Right Left";
5170 case IPT_JOYSTICKRIGHT_RIGHT: return "Right Right";
5171 } /* end of switch */
5172
5173 return "";
5174 }
5175
5176 const struct ControlInfo cclimbr2_ctrl =
5177 {
5178 false, /* 45_degree_rotation for joystick(s) */
5179 true, /* alternating_controls */
5180 true, /* mirrored_controls */
5181 "", /* control_details */
5182 &cclimbr2_get_ctrl_name
5183 };
5184
cclimbr2_get_ctrl_name(int type)5185 const char *cclimbr2_get_ctrl_name(int type)
5186 {
5187 switch(type)
5188 {
5189 case IPT_JOYSTICKLEFT_UP: return "Left Up";
5190 case IPT_JOYSTICKLEFT_DOWN: return "Left Down";
5191 case IPT_JOYSTICKLEFT_LEFT: return "Left Left";
5192 case IPT_JOYSTICKLEFT_RIGHT: return "Left Right";
5193 case IPT_JOYSTICKRIGHT_UP: return "Right Up";
5194 case IPT_JOYSTICKRIGHT_DOWN: return "Right Down";
5195 case IPT_JOYSTICKRIGHT_LEFT: return "Right Left";
5196 case IPT_JOYSTICKRIGHT_RIGHT: return "Right Right";
5197 } /* end of switch */
5198
5199 return "";
5200 }
5201
5202 const struct ControlInfo ckong_ctrl =
5203 {
5204 false, /* 45_degree_rotation for joystick(s) */
5205 true, /* alternating_controls */
5206 true, /* mirrored_controls */
5207 "", /* control_details */
5208 &ckong_get_ctrl_name
5209 };
5210
ckong_get_ctrl_name(int type)5211 const char *ckong_get_ctrl_name(int type)
5212 {
5213 switch(type)
5214 {
5215 case IPT_BUTTON1: return BTN1 "Jump";
5216 } /* end of switch */
5217
5218 return joy4way_labels(type);
5219 }
5220
5221 const struct ControlInfo crimec_ctrl =
5222 {
5223 false, /* 45_degree_rotation for joystick(s) */
5224 false, /* alternating_controls */
5225 true, /* mirrored_controls */
5226 "", /* control_details */
5227 &crimec_get_ctrl_name
5228 };
5229
crimec_get_ctrl_name(int type)5230 const char *crimec_get_ctrl_name(int type)
5231 {
5232 switch(type)
5233 {
5234 case IPT_BUTTON1: return BTN1 "Shoot";
5235 case IPT_BUTTON2: return BTN2 "Jump";
5236 } /* end of switch */
5237
5238 return joy4way_labels(type);
5239 }
5240
5241 const struct ControlInfo crimfght_ctrl =
5242 {
5243 false, /* 45_degree_rotation for joystick(s) */
5244 false, /* alternating_controls */
5245 true, /* mirrored_controls */
5246 "Even though the screen will tell you to press start, you press the punch button to start the game. Oddly enough, this beat-em-up doesn't have a jump button.", /* control_details */
5247 &crimfght_get_ctrl_name
5248 };
5249
crimfght_get_ctrl_name(int type)5250 const char *crimfght_get_ctrl_name(int type)
5251 {
5252 switch(type)
5253 {
5254 case IPT_BUTTON1: return BTN1 "Punch";
5255 case IPT_BUTTON2: return BTN2 "Kick ";
5256 } /* end of switch */
5257
5258 return joy4way_labels(type);
5259 }
5260
5261 const struct ControlInfo crossbow_ctrl =
5262 {
5263 false, /* 45_degree_rotation for joystick(s) */
5264 false, /* alternating_controls */
5265 false, /* mirrored_controls */
5266 "This game uses a mounted optical crossbow instead of a regular lightgun.", /* control_details */
5267 &crossbow_get_ctrl_name
5268 };
5269
crossbow_get_ctrl_name(int type)5270 const char *crossbow_get_ctrl_name(int type)
5271 {
5272 switch(type)
5273 {
5274 case IPT_BUTTON1: return BTN1 "Fire";
5275 case IPT_LIGHTGUN_X: return "Left";
5276 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
5277 case IPT_LIGHTGUN_Y: return "Up";
5278 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
5279 } /* end of switch */
5280
5281 return "";
5282 }
5283
5284 const struct ControlInfo crgolf_ctrl =
5285 {
5286 false, /* 45_degree_rotation for joystick(s) */
5287 true, /* alternating_controls */
5288 true, /* mirrored_controls */
5289 "This game used a slew of small, red, chicklet, looking buttons. Along with a strang lever for the swing. Oddly enough the lever only adjusted the angle, and a button has to be pressed to actually hit the ball.", /* control_details */
5290 &crgolf_get_ctrl_name
5291 };
5292
crgolf_get_ctrl_name(int type)5293 const char *crgolf_get_ctrl_name(int type)
5294 {
5295 switch(type)
5296 {
5297 case IPT_BUTTON1: return BTN1 "Swing";
5298 case IPT_BUTTON2: return BTN2 "Address Up";
5299 case IPT_BUTTON3: return BTN3 "Address Down";
5300 case IPT_BUTTON4: return BTN4 "Address Left";
5301 case IPT_BUTTON5: return BTN5 "Address Right";
5302 case IPT_BUTTON6: return BTN6 "Club Select";
5303 case IPT_AD_STICK_X: return "";
5304 case (IPT_AD_STICK_X + IPT_EXTENSION): return "";
5305 case IPT_AD_STICK_Y: return "Decrease Swing Angle";
5306 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Increase Swing Angle";
5307 } /* end of switch */
5308
5309 return joy2way_labels(type);
5310 }
5311
5312 const struct ControlInfo cbuster_ctrl =
5313 {
5314 false, /* 45_degree_rotation for joystick(s) */
5315 false, /* alternating_controls */
5316 true, /* mirrored_controls */
5317 "", /* control_details */
5318 &cbuster_get_ctrl_name
5319 };
5320
cbuster_get_ctrl_name(int type)5321 const char *cbuster_get_ctrl_name(int type)
5322 {
5323 switch(type)
5324 {
5325 case IPT_BUTTON1: return BTN1 "Fight";
5326 case IPT_BUTTON2: return BTN2 "Jump";
5327 case IPT_BUTTON3: return BTN3 "Pick Up";
5328 } /* end of switch */
5329
5330 return joy4way_labels(type);
5331 }
5332
5333 const struct ControlInfo crush_ctrl =
5334 {
5335 false, /* 45_degree_rotation for joystick(s) */
5336 true, /* alternating_controls */
5337 true, /* mirrored_controls */
5338 "", /* control_details */
5339 &crush_get_ctrl_name
5340 };
5341
crush_get_ctrl_name(int type)5342 const char *crush_get_ctrl_name(int type)
5343 {
5344 return joy4way_labels(type);
5345 }
5346
5347 const struct ControlInfo cryptklr_ctrl =
5348 {
5349 false, /* 45_degree_rotation for joystick(s) */
5350 false, /* alternating_controls */
5351 true, /* mirrored_controls */
5352 "Something of note is that this game uses a dedicated reload button that doesn't appear to be optional. The dedicated cabinet uses shotguns, in which the reload button is wired to the pump. Conversion kits often place the button on a control panel.", /* control_details */
5353 &cryptklr_get_ctrl_name
5354 };
5355
cryptklr_get_ctrl_name(int type)5356 const char *cryptklr_get_ctrl_name(int type)
5357 {
5358 switch(type)
5359 {
5360 case IPT_BUTTON1: return BTN1 "Fire";
5361 case IPT_BUTTON2: return BTN2 "Reload";
5362 case IPT_LIGHTGUN_X: return "Left";
5363 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
5364 case IPT_LIGHTGUN_Y: return "Up";
5365 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
5366 } /* end of switch */
5367
5368 return "";
5369 }
5370
5371 const struct ControlInfo ccastles_ctrl =
5372 {
5373 false, /* 45_degree_rotation for joystick(s) */
5374 true, /* alternating_controls */
5375 true, /* mirrored_controls */
5376 "The jump button is also the start button.", /* control_details */
5377 &ccastles_get_ctrl_name
5378 };
5379
ccastles_get_ctrl_name(int type)5380 const char *ccastles_get_ctrl_name(int type)
5381 {
5382 switch(type)
5383 {
5384 case IPT_BUTTON1: return BTN1 "Jump";
5385 case IPT_TRACKBALL_X: return "Left";
5386 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
5387 case IPT_TRACKBALL_Y: return "Up";
5388 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
5389 } /* end of switch */
5390
5391 return "";
5392 }
5393
5394 const struct ControlInfo curvebal_ctrl =
5395 {
5396 false, /* 45_degree_rotation for joystick(s) */
5397 false, /* alternating_controls */
5398 false, /* mirrored_controls */
5399 "Note that player 1 and player 2 share a set of controls. During an inning change, player 1 swaps places with player 2 and vice-versa. The batter buttons are globally labeled 'Bat Control and Runners Speed' and the pitch controls are labeled 'Speed of Pitch and Curve'.", /* control_details */
5400 &curvebal_get_ctrl_name
5401 };
5402
curvebal_get_ctrl_name(int type)5403 const char *curvebal_get_ctrl_name(int type)
5404 {
5405 switch(type)
5406 {
5407 case (IPT_BUTTON1 | IPF_PLAYER2): return "Left (Curve)";
5408 case (IPT_BUTTON2 | IPF_PLAYER2): return "Right (Curve)";
5409 case IPT_BUTTON1: return BTN1 "Swing";
5410 case IPT_BUTTON2: return BTN2 "Bunt";
5411 } /* end of switch */
5412
5413 return "";
5414 }
5415
5416 const struct ControlInfo cybsled_ctrl =
5417 {
5418 false, /* 45_degree_rotation for joystick(s) */
5419 false, /* alternating_controls */
5420 false, /* mirrored_controls */
5421 "This game used dual analog flight sticks. The Fire and Missile buttons are mirrored on both sticks, while the view point button is a lighted button on the control panel. It should be noted that this game was only sold as a dual cabinet with two boards linked together for head-2-head action, however due to limitations mame only emulates the first board and will probably never emulate the dual mode.", /* control_details */
5422 &cybsled_get_ctrl_name
5423 };
5424
cybsled_get_ctrl_name(int type)5425 const char *cybsled_get_ctrl_name(int type)
5426 {
5427 switch(type)
5428 {
5429 case IPT_BUTTON1: return BTN1 "Fire";
5430 case IPT_BUTTON2: return BTN2 "Missile";
5431 case IPT_BUTTON3: return BTN3 "View Point";
5432 case IPT_BUTTON4: return BTN4 "unknown";
5433 case IPT_AD_STICK_X: return "Left Tread Left";
5434 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Left Tread Right";
5435 case IPT_AD_STICK_Y: return "Left Tread Forward";
5436 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Left Tread Backward";
5437 } /* end of switch */
5438
5439 return "";
5440 }
5441
5442 const struct ControlInfo cyberbal_ctrl =
5443 {
5444 false, /* 45_degree_rotation for joystick(s) */
5445 false, /* alternating_controls */
5446 true, /* mirrored_controls */
5447 "I can't make out the fine print on the cpo image I used as a reference. If you know the real label for the button let me know.", /* control_details */
5448 &cyberbal_get_ctrl_name
5449 };
5450
cyberbal_get_ctrl_name(int type)5451 const char *cyberbal_get_ctrl_name(int type)
5452 {
5453 switch(type)
5454 {
5455 case IPT_BUTTON1: return BTN1 "Action";
5456 } /* end of switch */
5457
5458 return joy4way_labels(type);
5459 }
5460
5461 const struct ControlInfo cybots_ctrl =
5462 {
5463 false, /* 45_degree_rotation for joystick(s) */
5464 false, /* alternating_controls */
5465 false, /* mirrored_controls */
5466 "", /* control_details */
5467 &cybots_get_ctrl_name
5468 };
5469
cybots_get_ctrl_name(int type)5470 const char *cybots_get_ctrl_name(int type)
5471 {
5472 switch(type)
5473 {
5474 case (IPT_BUTTON1 | IPF_PLAYER2): return "Attack 1";
5475 case (IPT_BUTTON2 | IPF_PLAYER2): return "Attack 2";
5476 case (IPT_BUTTON3 | IPF_PLAYER2): return "Boost";
5477 case (IPT_BUTTON4 | IPF_PLAYER2): return "Weapons";
5478 case (IPT_JOYSTICK_RIGHT | IPF_PLAYER2): return "Back / Defense";
5479 case (IPT_JOYSTICK_LEFT | IPF_PLAYER2): return "Forward";
5480 case (IPT_JOYSTICK_DOWN | IPF_PLAYER2): return "Duck";
5481 case (IPT_JOYSTICK_UP | IPF_PLAYER2): return "Jump";
5482 case IPT_BUTTON1: return BTN1 "Attack 1";
5483 case IPT_BUTTON2: return BTN2 "Attack 2";
5484 case IPT_BUTTON3: return BTN3 "Boost";
5485 case IPT_BUTTON4: return BTN4 "Weapons";
5486 case IPT_JOYSTICK_LEFT: return "Back / Defense";
5487 case IPT_JOYSTICK_DOWN: return "Duck";
5488 case IPT_JOYSTICK_UP: return "Jump";
5489 case IPT_JOYSTICK_RIGHT: return "Forward";
5490 } /* end of switch */
5491
5492 return "";
5493 }
5494
5495 const struct ControlInfo daioh_ctrl =
5496 {
5497 false, /* 45_degree_rotation for joystick(s) */
5498 false, /* alternating_controls */
5499 true, /* mirrored_controls */
5500 "", /* control_details */
5501 &daioh_get_ctrl_name
5502 };
5503
daioh_get_ctrl_name(int type)5504 const char *daioh_get_ctrl_name(int type)
5505 {
5506 switch(type)
5507 {
5508 case IPT_BUTTON1: return BTN1 "Laser Shot";
5509 case IPT_BUTTON2: return BTN2 "Ion Shot";
5510 case IPT_BUTTON3: return BTN3 "Missile Shot";
5511 case IPT_BUTTON4: return BTN4 "Fire Bomb";
5512 case IPT_BUTTON5: return BTN5 "Mega Beam";
5513 case IPT_BUTTON6: return BTN6 "Atomic Bomb";
5514 } /* end of switch */
5515
5516 return joy4way_labels(type);
5517 }
5518
5519 const struct ControlInfo dangar_ctrl =
5520 {
5521 false, /* 45_degree_rotation for joystick(s) */
5522 true, /* alternating_controls */
5523 true, /* mirrored_controls */
5524 "The transform button allows you to split the main ship into several smaller ships.", /* control_details */
5525 &dangar_get_ctrl_name
5526 };
5527
dangar_get_ctrl_name(int type)5528 const char *dangar_get_ctrl_name(int type)
5529 {
5530 switch(type)
5531 {
5532 case IPT_BUTTON1: return BTN1 "Fire";
5533 case IPT_BUTTON2: return BTN2 "Transform";
5534 case IPT_BUTTON3: return BTN3 "??";
5535 } /* end of switch */
5536
5537 return joy4way_labels(type);
5538 }
5539
5540 const struct ControlInfo dangerz_ctrl =
5541 {
5542 false, /* 45_degree_rotation for joystick(s) */
5543 false, /* alternating_controls */
5544 false, /* mirrored_controls */
5545 "This game does NOT use a trackball in real life. Instead, it uses quite possibly the most unique control ever. Two immovable trigger sticks are mounted on a panel attached to the monitor. When you try to move the sticks, they remain rigid and actually tilt the monitor! The gameplay screen then scrolls depending upon where you tilt the monitor to. This gives the illusion of the player looking through a window onto the battle field.", /* control_details */
5546 &dangerz_get_ctrl_name
5547 };
5548
dangerz_get_ctrl_name(int type)5549 const char *dangerz_get_ctrl_name(int type)
5550 {
5551 switch(type)
5552 {
5553 case IPT_BUTTON1: return BTN1 "Machine Gun";
5554 case IPT_BUTTON2: return BTN2 "Heat - Seaking Missile";
5555 case IPT_TRACKBALL_X: return "Left";
5556 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
5557 case IPT_TRACKBALL_Y: return "Up";
5558 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
5559 } /* end of switch */
5560
5561 return "";
5562 }
5563
5564 const struct ControlInfo dbreed_ctrl =
5565 {
5566 false, /* 45_degree_rotation for joystick(s) */
5567 true, /* alternating_controls */
5568 true, /* mirrored_controls */
5569 "", /* control_details */
5570 &dbreed_get_ctrl_name
5571 };
5572
dbreed_get_ctrl_name(int type)5573 const char *dbreed_get_ctrl_name(int type)
5574 {
5575 switch(type)
5576 {
5577 case IPT_BUTTON1: return BTN1 "Attack";
5578 case IPT_BUTTON2: return BTN2 "Jump";
5579 } /* end of switch */
5580
5581 return joy4way_labels(type);
5582 }
5583
5584 const struct ControlInfo indyheat_ctrl =
5585 {
5586 false, /* 45_degree_rotation for joystick(s) */
5587 false, /* alternating_controls */
5588 true, /* mirrored_controls */
5589 "Player 1 is the Red car, Player 2 is the White car (light grey-ish), Player 3 is the Blue car. Mame by default maps the pedal and the turbo button to the same button input (button 1). If you leave it this way, to use turbo, release the button and press it again. To enter service mode, hold down the blue turbo button and then press the service key (F2).", /* control_details */
5590 &indyheat_get_ctrl_name
5591 };
5592
indyheat_get_ctrl_name(int type)5593 const char *indyheat_get_ctrl_name(int type)
5594 {
5595 switch(type)
5596 {
5597 case IPT_BUTTON1: return BTN1 "Turbo";
5598 case IPT_DIAL: return "Left";
5599 case (IPT_DIAL + IPT_EXTENSION): return "Right";
5600 case IPT_PEDAL: return "Gas";
5601 } /* end of switch */
5602
5603 return "";
5604 }
5605
5606 const struct ControlInfo darkplnt_ctrl =
5607 {
5608 false, /* 45_degree_rotation for joystick(s) */
5609 true, /* alternating_controls */
5610 true, /* mirrored_controls */
5611 "", /* control_details */
5612 &darkplnt_get_ctrl_name
5613 };
5614
darkplnt_get_ctrl_name(int type)5615 const char *darkplnt_get_ctrl_name(int type)
5616 {
5617 switch(type)
5618 {
5619 case IPT_BUTTON1: return BTN1 "Fire";
5620 case IPT_BUTTON2: return BTN2 "Thrust";
5621 case IPT_BUTTON3: return BTN3 "Laser";
5622 case IPT_DIAL: return "Rotate Left";
5623 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
5624 } /* end of switch */
5625
5626 return "";
5627 }
5628
5629 const struct ControlInfo darkseal_ctrl =
5630 {
5631 false, /* 45_degree_rotation for joystick(s) */
5632 false, /* alternating_controls */
5633 true, /* mirrored_controls */
5634 "", /* control_details */
5635 &darkseal_get_ctrl_name
5636 };
5637
darkseal_get_ctrl_name(int type)5638 const char *darkseal_get_ctrl_name(int type)
5639 {
5640 switch(type)
5641 {
5642 case IPT_BUTTON1: return BTN1 "Attack";
5643 case IPT_BUTTON2: return BTN2 "Magic";
5644 } /* end of switch */
5645
5646 return joy4way_labels(type);
5647 }
5648
5649 const struct ControlInfo dstlk_ctrl =
5650 {
5651 false, /* 45_degree_rotation for joystick(s) */
5652 false, /* alternating_controls */
5653 true, /* mirrored_controls */
5654 "", /* control_details */
5655 &dstlk_get_ctrl_name
5656 };
5657
dstlk_get_ctrl_name(int type)5658 const char *dstlk_get_ctrl_name(int type)
5659 {
5660 switch(type)
5661 {
5662 case IPT_BUTTON1: return BTN1 "Light Punch";
5663 case IPT_BUTTON2: return BTN2 "Middle Punch";
5664 case IPT_BUTTON3: return BTN3 "Heavy Punch";
5665 case IPT_BUTTON4: return BTN4 "Light Kick";
5666 case IPT_BUTTON5: return BTN5 "Middle Kick";
5667 case IPT_BUTTON6: return BTN6 "Heavy Kick";
5668 } /* end of switch */
5669
5670 return joy4way_labels(type);
5671 }
5672
5673 const struct ControlInfo deadang_ctrl =
5674 {
5675 false, /* 45_degree_rotation for joystick(s) */
5676 true, /* alternating_controls */
5677 true, /* mirrored_controls */
5678 "", /* control_details */
5679 &deadang_get_ctrl_name
5680 };
5681
deadang_get_ctrl_name(int type)5682 const char *deadang_get_ctrl_name(int type)
5683 {
5684 switch(type)
5685 {
5686 case IPT_BUTTON1: return BTN1 "Fire";
5687 case IPT_BUTTON2: return BTN2 "Grenade";
5688 case IPT_JOYSTICK_UP: return "Aim Up";
5689 case IPT_JOYSTICK_DOWN: return "Aim Down";
5690 case IPT_JOYSTICK_LEFT: return "Aim Left";
5691 case IPT_JOYSTICK_RIGHT: return "Aim Right";
5692 } /* end of switch */
5693
5694 return "";
5695 }
5696
5697 const struct ControlInfo redufo_ctrl =
5698 {
5699 false, /* 45_degree_rotation for joystick(s) */
5700 true, /* alternating_controls */
5701 true, /* mirrored_controls */
5702 "", /* control_details */
5703 &redufo_get_ctrl_name
5704 };
5705
redufo_get_ctrl_name(int type)5706 const char *redufo_get_ctrl_name(int type)
5707 {
5708 switch(type)
5709 {
5710 case IPT_BUTTON1: return BTN1 "Shoot";
5711 } /* end of switch */
5712
5713 return joy2way_labels(type);
5714 }
5715
5716 const struct ControlInfo defender_ctrl =
5717 {
5718 false, /* 45_degree_rotation for joystick(s) */
5719 true, /* alternating_controls */
5720 true, /* mirrored_controls */
5721 "Joystick is on left side of control panel with reverse button the the right of it so it can be hit with thumb. Fire and thrust are on right side of control panel with smart bomb, and hyperspace to the left in a 45 degree angle. In mame you can turn on cheat mode and the controls are automatically re-mapped so that the game is quite playable on a standard 8way joystick.", /* control_details */
5722 &defender_get_ctrl_name
5723 };
5724
defender_get_ctrl_name(int type)5725 const char *defender_get_ctrl_name(int type)
5726 {
5727 switch(type)
5728 {
5729 case IPT_BUTTON1: return BTN1 "FIRE";
5730 case IPT_BUTTON2: return BTN2 "THRUST";
5731 case IPT_BUTTON3: return BTN3 "SMART BOMB";
5732 case IPT_BUTTON4: return BTN4 "HYPERSPACE";
5733 case IPT_BUTTON5: return BTN5 "REVERSE";
5734 case IPT_JOYSTICK_DOWN: return "Down";
5735 case IPT_JOYSTICK_UP: return "Up";
5736 } /* end of switch */
5737
5738 return "";
5739 }
5740
5741 const struct ControlInfo demoderb_ctrl =
5742 {
5743 false, /* 45_degree_rotation for joystick(s) */
5744 false, /* alternating_controls */
5745 true, /* mirrored_controls */
5746 "OTHER: This game had a 2-way joystick as the forward/reverse shifter. Unlike Hi/Low shifters that have only two positions, the Demolition Derby shifter has a Forward, a Reverse, and a Neutral (centered, not labeled) like a 2-way (v) joystick. However, Mame emulates the shifter as buttons 1 & 2, and does not use the 2-way joystick. The start button is labeled 'Restart' on the CP. The game comes in 2 player standup and 4 player cocktail, and switches between the two with a dipswitch.", /* control_details */
5747 &demoderb_get_ctrl_name
5748 };
5749
demoderb_get_ctrl_name(int type)5750 const char *demoderb_get_ctrl_name(int type)
5751 {
5752 switch(type)
5753 {
5754 case IPT_BUTTON1: return BTN1 "Forward";
5755 case IPT_BUTTON2: return BTN2 "Reverse";
5756 case IPT_DIAL: return "Left";
5757 case (IPT_DIAL + IPT_EXTENSION): return "Right";
5758 } /* end of switch */
5759
5760 return "";
5761 }
5762
5763 const struct ControlInfo depthch_ctrl =
5764 {
5765 false, /* 45_degree_rotation for joystick(s) */
5766 false, /* alternating_controls */
5767 false, /* mirrored_controls */
5768 "", /* control_details */
5769 &depthch_get_ctrl_name
5770 };
5771
depthch_get_ctrl_name(int type)5772 const char *depthch_get_ctrl_name(int type)
5773 {
5774 switch(type)
5775 {
5776 case IPT_BUTTON1: return BTN1 "Fire Left Charge";
5777 case IPT_BUTTON2: return BTN2 "Fire Right Charge";
5778 case IPT_JOYSTICK_LEFT: return "Move Ship Left";
5779 case IPT_JOYSTICK_RIGHT: return "Move Ship Right";
5780 } /* end of switch */
5781
5782 return "";
5783 }
5784
5785 const struct ControlInfo desertgu_ctrl =
5786 {
5787 false, /* 45_degree_rotation for joystick(s) */
5788 true, /* alternating_controls */
5789 true, /* mirrored_controls */
5790 "It should be noted that this is the first game to my knowledge that uses an analog mounted gun. That would make it the great grandpa of future analog gun games like Terminator 2.", /* control_details */
5791 &desertgu_get_ctrl_name
5792 };
5793
desertgu_get_ctrl_name(int type)5794 const char *desertgu_get_ctrl_name(int type)
5795 {
5796 switch(type)
5797 {
5798 case IPT_BUTTON1: return BTN1 "Fire";
5799 case IPT_LIGHTGUN_X: return "Left";
5800 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
5801 case IPT_LIGHTGUN_Y: return "Up";
5802 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
5803 } /* end of switch */
5804
5805 return "";
5806 }
5807
5808 const struct ControlInfo destroyr_ctrl =
5809 {
5810 false, /* 45_degree_rotation for joystick(s) */
5811 false, /* alternating_controls */
5812 true, /* mirrored_controls */
5813 "This game uses a throttle control to control the speed of the ship (fast or slow) and a rotary paddle with 'push to release' to control the depth of the charge. The charge will explode at the depth setting that the Release button was pressed at, regardless of the current depth setting.", /* control_details */
5814 &destroyr_get_ctrl_name
5815 };
5816
destroyr_get_ctrl_name(int type)5817 const char *destroyr_get_ctrl_name(int type)
5818 {
5819 switch(type)
5820 {
5821 case IPT_BUTTON1: return BTN1 "Release Charge";
5822 case IPT_BUTTON2: return BTN2 "Slow";
5823 case (IPT_PADDLE_V + IPT_EXTENSION): return "Set Depth of Charge Down";
5824 case IPT_PADDLE_V: return "Set Depth of Charge Up";
5825 } /* end of switch */
5826
5827 return "";
5828 }
5829
5830 const struct ControlInfo devstors_ctrl =
5831 {
5832 false, /* 45_degree_rotation for joystick(s) */
5833 false, /* alternating_controls */
5834 true, /* mirrored_controls */
5835 "The men in tan uniforms leave guided missiles when shot. These can be picked up and when in range, a red crosshair will appear on a target and they will home on it.", /* control_details */
5836 &devstors_get_ctrl_name
5837 };
5838
devstors_get_ctrl_name(int type)5839 const char *devstors_get_ctrl_name(int type)
5840 {
5841 switch(type)
5842 {
5843 case IPT_BUTTON1: return BTN1 "Shoot";
5844 case IPT_BUTTON2: return BTN2 "Weapon";
5845 case IPT_JOYSTICK_RIGHT: return "Right";
5846 case IPT_JOYSTICK_LEFT: return "Left";
5847 case IPT_JOYSTICK_DOWN: return "Backward";
5848 case IPT_JOYSTICK_UP: return "Forward";
5849 } /* end of switch */
5850
5851 return "";
5852 }
5853
5854 const struct ControlInfo devilfsh_ctrl =
5855 {
5856 false, /* 45_degree_rotation for joystick(s) */
5857 true, /* alternating_controls */
5858 true, /* mirrored_controls */
5859 "", /* control_details */
5860 &devilfsh_get_ctrl_name
5861 };
5862
devilfsh_get_ctrl_name(int type)5863 const char *devilfsh_get_ctrl_name(int type)
5864 {
5865 switch(type)
5866 {
5867 case IPT_BUTTON1: return BTN1 "Drop bait";
5868 } /* end of switch */
5869
5870 return joy4way_labels(type);
5871 }
5872
5873 const struct ControlInfo devzone_ctrl =
5874 {
5875 false, /* 45_degree_rotation for joystick(s) */
5876 true, /* alternating_controls */
5877 true, /* mirrored_controls */
5878 "", /* control_details */
5879 &devzone_get_ctrl_name
5880 };
5881
devzone_get_ctrl_name(int type)5882 const char *devzone_get_ctrl_name(int type)
5883 {
5884 switch(type)
5885 {
5886 case IPT_BUTTON1: return BTN1 "Fire";
5887 case IPT_JOYSTICK_LEFT: return "Movement Left";
5888 case IPT_JOYSTICK_RIGHT: return "Movement Right";
5889 } /* end of switch */
5890
5891 return "";
5892 }
5893
5894 const struct ControlInfo digdug_ctrl =
5895 {
5896 false, /* 45_degree_rotation for joystick(s) */
5897 true, /* alternating_controls */
5898 true, /* mirrored_controls */
5899 "", /* control_details */
5900 &digdug_get_ctrl_name
5901 };
5902
digdug_get_ctrl_name(int type)5903 const char *digdug_get_ctrl_name(int type)
5904 {
5905 switch(type)
5906 {
5907 case IPT_BUTTON1: return BTN1 "Pump";
5908 } /* end of switch */
5909
5910 return joy4way_labels(type);
5911 }
5912
5913 const struct ControlInfo digdug2_ctrl =
5914 {
5915 false, /* 45_degree_rotation for joystick(s) */
5916 true, /* alternating_controls */
5917 true, /* mirrored_controls */
5918 "", /* control_details */
5919 &digdug2_get_ctrl_name
5920 };
5921
digdug2_get_ctrl_name(int type)5922 const char *digdug2_get_ctrl_name(int type)
5923 {
5924 switch(type)
5925 {
5926 case IPT_BUTTON1: return BTN1 "Pump";
5927 case IPT_BUTTON2: return BTN2 "Drill";
5928 } /* end of switch */
5929
5930 return joy4way_labels(type);
5931 }
5932
5933 const struct ControlInfo digger_ctrl =
5934 {
5935 false, /* 45_degree_rotation for joystick(s) */
5936 true, /* alternating_controls */
5937 true, /* mirrored_controls */
5938 "", /* control_details */
5939 &digger_get_ctrl_name
5940 };
5941
digger_get_ctrl_name(int type)5942 const char *digger_get_ctrl_name(int type)
5943 {
5944 switch(type)
5945 {
5946 case IPT_BUTTON1: return BTN1 "Dig";
5947 case IPT_BUTTON2: return BTN2 "Fill";
5948 } /* end of switch */
5949
5950 return joy4way_labels(type);
5951 }
5952
5953 const struct ControlInfo dimahoo_ctrl =
5954 {
5955 false, /* 45_degree_rotation for joystick(s) */
5956 false, /* alternating_controls */
5957 true, /* mirrored_controls */
5958 "Although in mame the game has three buttons, and all 3 work, button 3 is redundant and mirrors button 1. On the actual game (sold in kit form only) only two buttons are used and this is confirmed on the instruction card for the game.", /* control_details */
5959 &dimahoo_get_ctrl_name
5960 };
5961
dimahoo_get_ctrl_name(int type)5962 const char *dimahoo_get_ctrl_name(int type)
5963 {
5964 switch(type)
5965 {
5966 case IPT_BUTTON1: return BTN1 "Shoot";
5967 case IPT_BUTTON2: return BTN2 "Bomb";
5968 } /* end of switch */
5969
5970 return joy4way_labels(type);
5971 }
5972
5973 const struct ControlInfo dotron_ctrl =
5974 {
5975 false, /* 45_degree_rotation for joystick(s) */
5976 true, /* alternating_controls */
5977 true, /* mirrored_controls */
5978 "", /* control_details */
5979 &dotron_get_ctrl_name
5980 };
5981
dotron_get_ctrl_name(int type)5982 const char *dotron_get_ctrl_name(int type)
5983 {
5984 switch(type)
5985 {
5986 case IPT_BUTTON1: return BTN1 "Throw";
5987 case IPT_BUTTON2: return BTN2 "Deflect";
5988 case IPT_BUTTON3: return BTN3 "Aim Up";
5989 case IPT_BUTTON4: return BTN4 "Aim Down";
5990 case IPT_JOYSTICK_UP: return "Move Tron";
5991 case IPT_JOYSTICK_DOWN: return "Move Tron";
5992 case IPT_JOYSTICK_LEFT: return "Move Tron";
5993 case IPT_JOYSTICK_RIGHT: return "Move Tron";
5994 case IPT_DIAL: return "Aim";
5995 case (IPT_DIAL + IPT_EXTENSION): return "Aim";
5996 } /* end of switch */
5997
5998 return "";
5999 }
6000
6001 const struct ControlInfo dorunrun_ctrl =
6002 {
6003 false, /* 45_degree_rotation for joystick(s) */
6004 true, /* alternating_controls */
6005 true, /* mirrored_controls */
6006 "Something of note is that this game actually has a second button and this button is emulated in mame. The reason it isn't included here is because it was a dead button left-over from development of the game and isn't found on the control panel. The manual explains installing the controls, but neglects to mention this button, however it does show up in the service menu as 'p1 jump'.", /* control_details */
6007 &dorunrun_get_ctrl_name
6008 };
6009
dorunrun_get_ctrl_name(int type)6010 const char *dorunrun_get_ctrl_name(int type)
6011 {
6012 switch(type)
6013 {
6014 case IPT_BUTTON1: return BTN1 "Fire";
6015 } /* end of switch */
6016
6017 return joy4way_labels(type);
6018 }
6019
6020 const struct ControlInfo domino_ctrl =
6021 {
6022 false, /* 45_degree_rotation for joystick(s) */
6023 true, /* alternating_controls */
6024 true, /* mirrored_controls */
6025 "", /* control_details */
6026 &domino_get_ctrl_name
6027 };
6028
domino_get_ctrl_name(int type)6029 const char *domino_get_ctrl_name(int type)
6030 {
6031 switch(type)
6032 {
6033 case IPT_BUTTON1: return BTN1 "Swat";
6034 } /* end of switch */
6035
6036 return joy4way_labels(type);
6037 }
6038
6039 const struct ControlInfo dkong_ctrl =
6040 {
6041 false, /* 45_degree_rotation for joystick(s) */
6042 true, /* alternating_controls */
6043 true, /* mirrored_controls */
6044 "", /* control_details */
6045 &dkong_get_ctrl_name
6046 };
6047
dkong_get_ctrl_name(int type)6048 const char *dkong_get_ctrl_name(int type)
6049 {
6050 switch(type)
6051 {
6052 case IPT_BUTTON1: return BTN1 "Jump";
6053 case IPT_JOYSTICK_LEFT: return "Run Left";
6054 case IPT_JOYSTICK_DOWN: return "Climb Down Ladder";
6055 case IPT_JOYSTICK_UP: return "Climb Up Ladder";
6056 case IPT_JOYSTICK_RIGHT: return "Run Right";
6057 } /* end of switch */
6058
6059 return "";
6060 }
6061
6062 const struct ControlInfo dkong3_ctrl =
6063 {
6064 false, /* 45_degree_rotation for joystick(s) */
6065 true, /* alternating_controls */
6066 true, /* mirrored_controls */
6067 "", /* control_details */
6068 &dkong3_get_ctrl_name
6069 };
6070
dkong3_get_ctrl_name(int type)6071 const char *dkong3_get_ctrl_name(int type)
6072 {
6073 switch(type)
6074 {
6075 case IPT_BUTTON1: return BTN1 "SPRAY";
6076 } /* end of switch */
6077
6078 return joy4way_labels(type);
6079 }
6080
6081 const struct ControlInfo dkongjr_ctrl =
6082 {
6083 false, /* 45_degree_rotation for joystick(s) */
6084 true, /* alternating_controls */
6085 true, /* mirrored_controls */
6086 "", /* control_details */
6087 &dkongjr_get_ctrl_name
6088 };
6089
dkongjr_get_ctrl_name(int type)6090 const char *dkongjr_get_ctrl_name(int type)
6091 {
6092 switch(type)
6093 {
6094 case IPT_BUTTON1: return BTN1 "JUMP";
6095 } /* end of switch */
6096
6097 return joy4way_labels(type);
6098 }
6099
6100 const struct ControlInfo ddragon_ctrl =
6101 {
6102 false, /* 45_degree_rotation for joystick(s) */
6103 false, /* alternating_controls */
6104 true, /* mirrored_controls */
6105 "From manual: JUMP KICK: Joystick in the direction. Push jump then kick. ELBOW: Joystick in the direction. Push jump and punch buttons together. BACK KICK: Joystick in the direction. Push jump and kick buttons together. HEAD BUTT: Joystick in the direction. (TWICE) BODY THROW: Joystick in the direction. Push jump button after catching enemy. BREAK ENEMY'S HOLD: Push jump button only.", /* control_details */
6106 &ddragon_get_ctrl_name
6107 };
6108
ddragon_get_ctrl_name(int type)6109 const char *ddragon_get_ctrl_name(int type)
6110 {
6111 switch(type)
6112 {
6113 case IPT_BUTTON1: return BTN1 "Kick";
6114 case IPT_BUTTON2: return BTN2 "Jump";
6115 case IPT_BUTTON3: return BTN3 "Punch";
6116 } /* end of switch */
6117
6118 return joy4way_labels(type);
6119 }
6120
6121 const struct ControlInfo ddragon3_ctrl =
6122 {
6123 false, /* 45_degree_rotation for joystick(s) */
6124 false, /* alternating_controls */
6125 true, /* mirrored_controls */
6126 "", /* control_details */
6127 &ddragon3_get_ctrl_name
6128 };
6129
ddragon3_get_ctrl_name(int type)6130 const char *ddragon3_get_ctrl_name(int type)
6131 {
6132 switch(type)
6133 {
6134 case IPT_BUTTON1: return BTN1 "Punch";
6135 case IPT_BUTTON2: return BTN2 "Jump";
6136 case IPT_BUTTON3: return BTN3 "Kick";
6137 } /* end of switch */
6138
6139 return joy4way_labels(type);
6140 }
6141
6142 const struct ControlInfo ddragon2_ctrl =
6143 {
6144 false, /* 45_degree_rotation for joystick(s) */
6145 false, /* alternating_controls */
6146 true, /* mirrored_controls */
6147 "", /* control_details */
6148 &ddragon2_get_ctrl_name
6149 };
6150
ddragon2_get_ctrl_name(int type)6151 const char *ddragon2_get_ctrl_name(int type)
6152 {
6153 switch(type)
6154 {
6155 case IPT_BUTTON1: return BTN1 "Attack Left";
6156 case IPT_BUTTON2: return BTN2 "Jump";
6157 case IPT_BUTTON3: return BTN3 "Attack Right";
6158 } /* end of switch */
6159
6160 return joy4way_labels(type);
6161 }
6162
6163 const struct ControlInfo ddribble_ctrl =
6164 {
6165 false, /* 45_degree_rotation for joystick(s) */
6166 false, /* alternating_controls */
6167 true, /* mirrored_controls */
6168 "In order to move with the ball, you must hold down the dribble button.", /* control_details */
6169 &ddribble_get_ctrl_name
6170 };
6171
ddribble_get_ctrl_name(int type)6172 const char *ddribble_get_ctrl_name(int type)
6173 {
6174 switch(type)
6175 {
6176 case IPT_BUTTON1: return BTN1 "Dribble";
6177 case IPT_BUTTON2: return BTN2 "Shoot";
6178 case IPT_BUTTON3: return BTN3 "Pass";
6179 } /* end of switch */
6180
6181 return joy4way_labels(type);
6182 }
6183
6184 const struct ControlInfo downtown_ctrl =
6185 {
6186 false, /* 45_degree_rotation for joystick(s) */
6187 false, /* alternating_controls */
6188 true, /* mirrored_controls */
6189 "This game uses SNK LS-30 rotary joysticks. In standard MAME, rotation is controlled using the dial inputs.", /* control_details */
6190 &downtown_get_ctrl_name
6191 };
6192
downtown_get_ctrl_name(int type)6193 const char *downtown_get_ctrl_name(int type)
6194 {
6195 switch(type)
6196 {
6197 case IPT_BUTTON1: return BTN1 "Punch";
6198 case IPT_BUTTON2: return BTN2 "Kick";
6199 case IPT_DIAL: return "Rotate Left";
6200 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
6201 } /* end of switch */
6202
6203 return joy4way_labels(type);
6204 }
6205
6206 const struct ControlInfo dragrace_ctrl =
6207 {
6208 false, /* 45_degree_rotation for joystick(s) */
6209 false, /* alternating_controls */
6210 true, /* mirrored_controls */
6211 "The game actually uses a 360 degree steering wheel, but for obvious reasons, mame has mapped it to the vertical spinner. The numbers denote the gear position.", /* control_details */
6212 &dragrace_get_ctrl_name
6213 };
6214
dragrace_get_ctrl_name(int type)6215 const char *dragrace_get_ctrl_name(int type)
6216 {
6217 switch(type)
6218 {
6219 case IPT_BUTTON1: return BTN1 "Accelerate";
6220 case IPT_BUTTON2: return BTN2 "1";
6221 case IPT_BUTTON3: return BTN3 "2";
6222 case IPT_BUTTON4: return BTN4 "3";
6223 case IPT_BUTTON5: return BTN5 "4";
6224 case (IPT_DIAL_V + IPT_EXTENSION): return "Down";
6225 case IPT_DIAL_V: return "Up";
6226 } /* end of switch */
6227
6228 return "";
6229 }
6230
6231 const struct ControlInfo dragngun_ctrl =
6232 {
6233 false, /* 45_degree_rotation for joystick(s) */
6234 false, /* alternating_controls */
6235 true, /* mirrored_controls */
6236 "This game is probably the only game that features talking guns. You heard me right, the 'drag-guns' in this game had speakers that spouted out advice during gameplay.", /* control_details */
6237 &dragngun_get_ctrl_name
6238 };
6239
dragngun_get_ctrl_name(int type)6240 const char *dragngun_get_ctrl_name(int type)
6241 {
6242 switch(type)
6243 {
6244 case IPT_BUTTON1: return BTN1 "Fire";
6245 case IPT_BUTTON2: return BTN2 "Dragon Bomb";
6246 case IPT_LIGHTGUN_Y: return "Up";
6247 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
6248 case IPT_LIGHTGUN_X: return "Left";
6249 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
6250 } /* end of switch */
6251
6252 return "";
6253 }
6254
6255 const struct ControlInfo dspirit_ctrl =
6256 {
6257 false, /* 45_degree_rotation for joystick(s) */
6258 true, /* alternating_controls */
6259 true, /* mirrored_controls */
6260 "Shoot down flashing enemies and collect their eggs for mystery power (from the CP overlay).", /* control_details */
6261 &dspirit_get_ctrl_name
6262 };
6263
dspirit_get_ctrl_name(int type)6264 const char *dspirit_get_ctrl_name(int type)
6265 {
6266 switch(type)
6267 {
6268 case IPT_BUTTON1: return BTN1 "Fire";
6269 case IPT_BUTTON2: return BTN2 "Bomb";
6270 case IPT_BUTTON3: return BTN3 "Unknown";
6271 } /* end of switch */
6272
6273 return joy4way_labels(type);
6274 }
6275
6276 const struct ControlInfo drgnunit_ctrl =
6277 {
6278 false, /* 45_degree_rotation for joystick(s) */
6279 false, /* alternating_controls */
6280 true, /* mirrored_controls */
6281 "", /* control_details */
6282 &drgnunit_get_ctrl_name
6283 };
6284
drgnunit_get_ctrl_name(int type)6285 const char *drgnunit_get_ctrl_name(int type)
6286 {
6287 switch(type)
6288 {
6289 case IPT_BUTTON1: return BTN1 "Attack";
6290 case IPT_BUTTON2: return BTN2 "Jump";
6291 case IPT_BUTTON3: return BTN3 "Shield";
6292 } /* end of switch */
6293
6294 return joy4way_labels(type);
6295 }
6296
6297 const struct ControlInfo ddsom_ctrl =
6298 {
6299 false, /* 45_degree_rotation for joystick(s) */
6300 false, /* alternating_controls */
6301 true, /* mirrored_controls */
6302 "", /* control_details */
6303 &ddsom_get_ctrl_name
6304 };
6305
ddsom_get_ctrl_name(int type)6306 const char *ddsom_get_ctrl_name(int type)
6307 {
6308 switch(type)
6309 {
6310 case IPT_BUTTON1: return BTN1 "Attack";
6311 case IPT_BUTTON2: return BTN2 "Jump";
6312 case IPT_BUTTON3: return BTN3 "Select";
6313 case IPT_BUTTON4: return BTN4 "Magic";
6314 } /* end of switch */
6315
6316 return joy4way_labels(type);
6317 }
6318
6319 const struct ControlInfo ddtod_ctrl =
6320 {
6321 false, /* 45_degree_rotation for joystick(s) */
6322 false, /* alternating_controls */
6323 true, /* mirrored_controls */
6324 "", /* control_details */
6325 &ddtod_get_ctrl_name
6326 };
6327
ddtod_get_ctrl_name(int type)6328 const char *ddtod_get_ctrl_name(int type)
6329 {
6330 switch(type)
6331 {
6332 case IPT_BUTTON1: return BTN1 "Attack";
6333 case IPT_BUTTON2: return BTN2 "Jump";
6334 case IPT_BUTTON3: return BTN3 "Magic";
6335 case IPT_BUTTON4: return BTN4 "Select";
6336 } /* end of switch */
6337
6338 return joy4way_labels(type);
6339 }
6340
6341 const struct ControlInfo dynamcop_ctrl =
6342 {
6343 false, /* 45_degree_rotation for joystick(s) */
6344 false, /* alternating_controls */
6345 true, /* mirrored_controls */
6346 "Instruction panel has moves list", /* control_details */
6347 &dynamcop_get_ctrl_name
6348 };
6349
dynamcop_get_ctrl_name(int type)6350 const char *dynamcop_get_ctrl_name(int type)
6351 {
6352 switch(type)
6353 {
6354 case IPT_BUTTON1: return BTN1 "Punch";
6355 case IPT_BUTTON2: return BTN2 "Kick";
6356 case IPT_BUTTON3: return BTN3 "Jump";
6357 } /* end of switch */
6358
6359 return joy4way_labels(type);
6360 }
6361
6362 const struct ControlInfo eswat_ctrl =
6363 {
6364 false, /* 45_degree_rotation for joystick(s) */
6365 false, /* alternating_controls */
6366 true, /* mirrored_controls */
6367 "", /* control_details */
6368 &eswat_get_ctrl_name
6369 };
6370
eswat_get_ctrl_name(int type)6371 const char *eswat_get_ctrl_name(int type)
6372 {
6373 switch(type)
6374 {
6375 case IPT_BUTTON1: return BTN1 "Shoot";
6376 case IPT_BUTTON2: return BTN2 "Jump";
6377 case IPT_BUTTON3: return BTN3 "Special Weapons";
6378 case IPT_JOYSTICK_UP: return "Shoot Upward";
6379 case IPT_JOYSTICK_DOWN: return "Kneel";
6380 case IPT_JOYSTICK_LEFT: return "Left";
6381 case IPT_JOYSTICK_RIGHT: return "Right";
6382 } /* end of switch */
6383
6384 return "";
6385 }
6386
6387 const struct ControlInfo ecofghtr_ctrl =
6388 {
6389 false, /* 45_degree_rotation for joystick(s) */
6390 false, /* alternating_controls */
6391 true, /* mirrored_controls */
6392 "Button 1 and 3 rotate the gun around the craft so you can fire in any direction", /* control_details */
6393 &ecofghtr_get_ctrl_name
6394 };
6395
ecofghtr_get_ctrl_name(int type)6396 const char *ecofghtr_get_ctrl_name(int type)
6397 {
6398 switch(type)
6399 {
6400 case IPT_BUTTON1: return BTN1 "Rotate CCW";
6401 case IPT_BUTTON2: return BTN2 "Shot";
6402 case IPT_BUTTON3: return BTN3 "Rotate CW";
6403 } /* end of switch */
6404
6405 return joy4way_labels(type);
6406 }
6407
6408 const struct ControlInfo eggventr_ctrl =
6409 {
6410 false, /* 45_degree_rotation for joystick(s) */
6411 false, /* alternating_controls */
6412 true, /* mirrored_controls */
6413 "", /* control_details */
6414 &eggventr_get_ctrl_name
6415 };
6416
eggventr_get_ctrl_name(int type)6417 const char *eggventr_get_ctrl_name(int type)
6418 {
6419 switch(type)
6420 {
6421 case IPT_BUTTON1: return BTN1 "Fire";
6422 case IPT_LIGHTGUN_X: return "Left";
6423 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
6424 case IPT_LIGHTGUN_Y: return "Up";
6425 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
6426 } /* end of switch */
6427
6428 return "";
6429 }
6430
6431 const struct ControlInfo elevator_ctrl =
6432 {
6433 false, /* 45_degree_rotation for joystick(s) */
6434 true, /* alternating_controls */
6435 true, /* mirrored_controls */
6436 "", /* control_details */
6437 &elevator_get_ctrl_name
6438 };
6439
elevator_get_ctrl_name(int type)6440 const char *elevator_get_ctrl_name(int type)
6441 {
6442 switch(type)
6443 {
6444 case IPT_BUTTON1: return BTN1 "Fire";
6445 case IPT_BUTTON2: return BTN2 "Jump/Kick";
6446 case IPT_JOYSTICK_RIGHT: return "Right";
6447 case IPT_JOYSTICK_LEFT: return "Left";
6448 case IPT_JOYSTICK_DOWN: return "Kneel";
6449 case IPT_JOYSTICK_UP: return "";
6450 } /* end of switch */
6451
6452 return "";
6453 }
6454
6455 const struct ControlInfo elim2_ctrl =
6456 {
6457 false, /* 45_degree_rotation for joystick(s) */
6458 false, /* alternating_controls */
6459 true, /* mirrored_controls */
6460 "", /* control_details */
6461 &elim2_get_ctrl_name
6462 };
6463
elim2_get_ctrl_name(int type)6464 const char *elim2_get_ctrl_name(int type)
6465 {
6466 switch(type)
6467 {
6468 case IPT_BUTTON1: return BTN1 "Fire";
6469 case IPT_BUTTON2: return BTN2 "Thrust";
6470 case IPT_JOYSTICK_LEFT: return "Rotate Left";
6471 case IPT_JOYSTICK_RIGHT: return "Rotate Right";
6472 } /* end of switch */
6473
6474 return "";
6475 }
6476
6477 const struct ControlInfo enigma2_ctrl =
6478 {
6479 false, /* 45_degree_rotation for joystick(s) */
6480 true, /* alternating_controls */
6481 true, /* mirrored_controls */
6482 "", /* control_details */
6483 &enigma2_get_ctrl_name
6484 };
6485
enigma2_get_ctrl_name(int type)6486 const char *enigma2_get_ctrl_name(int type)
6487 {
6488 switch(type)
6489 {
6490 case IPT_BUTTON1: return BTN1 "Fire";
6491 case IPT_BUTTON2: return BTN2 "Thrust";
6492 } /* end of switch */
6493
6494 return joy2way_labels(type);
6495 }
6496
6497 const struct ControlInfo eprom_ctrl =
6498 {
6499 false, /* 45_degree_rotation for joystick(s) */
6500 false, /* alternating_controls */
6501 true, /* mirrored_controls */
6502 "The buttons are arranged in a triangle, with fire on the bottom left corner, duck on the bottom right, and jump/start on the middle top corner. The original analog stick used Hall Effect sensors instead of POTs. Due to the price (and now out of production) of the sensors, many arcade operators replaced the hall effect sensors with their equivalent POT. This game is very hard to control in mame with 8-ways or keyboards. An analog joystick, OTOH, gives the player control like the original joystick.", /* control_details */
6503 &eprom_get_ctrl_name
6504 };
6505
eprom_get_ctrl_name(int type)6506 const char *eprom_get_ctrl_name(int type)
6507 {
6508 switch(type)
6509 {
6510 case IPT_BUTTON1: return BTN1 "Fire";
6511 case IPT_BUTTON2: return BTN2 "Jump / Start";
6512 case IPT_BUTTON3: return BTN3 "Duck";
6513 case IPT_AD_STICK_X: return "Left";
6514 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
6515 case IPT_AD_STICK_Y: return "Up";
6516 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
6517 } /* end of switch */
6518
6519 return "";
6520 }
6521
6522 const struct ControlInfo exerion_ctrl =
6523 {
6524 false, /* 45_degree_rotation for joystick(s) */
6525 true, /* alternating_controls */
6526 true, /* mirrored_controls */
6527 "This game has two types of Cannon. Fast Fire shoots a limited number of rapid-fire shots from the ship's center. Fire shoots double forward shots for the ship's sides. The game uses standard controls, i.e., moving the stick up causes the ship to climb.", /* control_details */
6528 &exerion_get_ctrl_name
6529 };
6530
exerion_get_ctrl_name(int type)6531 const char *exerion_get_ctrl_name(int type)
6532 {
6533 switch(type)
6534 {
6535 case IPT_BUTTON1: return BTN1 "Fast Fire";
6536 case IPT_BUTTON2: return BTN2 "Fire";
6537 } /* end of switch */
6538
6539 return joy4way_labels(type);
6540 }
6541
6542 const struct ControlInfo exterm_ctrl =
6543 {
6544 false, /* 45_degree_rotation for joystick(s) */
6545 false, /* alternating_controls */
6546 true, /* mirrored_controls */
6547 "OTHER: The 8-way trigger stick also can be rotated left or right. (Label 'Rotate Left', and 'Rotate Right') The rotation is analog, while the rest of the stick is a digital 8-way trigger stick. Mame uses the DIAL type for this input. Mame by default maps the rotate left & right to the same inputs as move left and move right, and the game plays fairly well with this setup. To fire, you are supposed to move all the way to your side, press the fire button, and control the direction you shoot by rotating the trigger stick and moving it up and down. As long as you hold the fire button, you can't move away from the edge. NOTE: This entry has been modified to use a rotary optical joystick with a top fire button. This is the closest to the controls the game originally had, unfortunately a top fire rotary does not exist. You could, however, take a top fire handle and mount it into a rotary base, in theory at least. There is a cheat that lets you shoot all the time (making the 'fire/grab' button just a fire button).", /* control_details */
6548 &exterm_get_ctrl_name
6549 };
6550
exterm_get_ctrl_name(int type)6551 const char *exterm_get_ctrl_name(int type)
6552 {
6553 switch(type)
6554 {
6555 case IPT_BUTTON1: return BTN1 "Fire / Grap";
6556 case IPT_BUTTON2: return BTN2 "Pound";
6557 case IPT_JOYSTICK_RIGHT: return "Move Right";
6558 case IPT_JOYSTICK_LEFT: return "Move Left";
6559 case IPT_JOYSTICK_DOWN: return "Move Down";
6560 case IPT_JOYSTICK_UP: return "Move Up";
6561 case IPT_DIAL: return "Rotate Left";
6562 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
6563 } /* end of switch */
6564
6565 return "";
6566 }
6567
6568 const struct ControlInfo eyes_ctrl =
6569 {
6570 false, /* 45_degree_rotation for joystick(s) */
6571 true, /* alternating_controls */
6572 true, /* mirrored_controls */
6573 "", /* control_details */
6574 &eyes_get_ctrl_name
6575 };
6576
eyes_get_ctrl_name(int type)6577 const char *eyes_get_ctrl_name(int type)
6578 {
6579 switch(type)
6580 {
6581 case IPT_BUTTON1: return BTN1 "Fire";
6582 } /* end of switch */
6583
6584 return joy4way_labels(type);
6585 }
6586
6587 const struct ControlInfo f1dream_ctrl =
6588 {
6589 false, /* 45_degree_rotation for joystick(s) */
6590 true, /* alternating_controls */
6591 true, /* mirrored_controls */
6592 "The joystick is used to guide the car around the track. Holding both Gear buttons down activates Turbo mode. Note: Directions for turn are not included because which direction the stick makes you turn depends upon which way your car is facing. It is actually quite confusing to control your car.", /* control_details */
6593 &f1dream_get_ctrl_name
6594 };
6595
f1dream_get_ctrl_name(int type)6596 const char *f1dream_get_ctrl_name(int type)
6597 {
6598 switch(type)
6599 {
6600 case IPT_BUTTON1: return BTN1 "1st Gear";
6601 case IPT_BUTTON2: return BTN2 "2nd Gear";
6602 case IPT_JOYSTICK_RIGHT: return "Turn";
6603 case IPT_JOYSTICK_LEFT: return "Turn";
6604 case IPT_JOYSTICK_DOWN: return "Turn";
6605 case IPT_JOYSTICK_UP: return "Turn";
6606 } /* end of switch */
6607
6608 return "";
6609 }
6610
6611 const struct ControlInfo f1en_ctrl =
6612 {
6613 false, /* 45_degree_rotation for joystick(s) */
6614 false, /* alternating_controls */
6615 false, /* mirrored_controls */
6616 "This game uses formula one style shifter buttons, which are mounted behind the steering wheel.", /* control_details */
6617 &f1en_get_ctrl_name
6618 };
6619
f1en_get_ctrl_name(int type)6620 const char *f1en_get_ctrl_name(int type)
6621 {
6622 switch(type)
6623 {
6624 case IPT_BUTTON1: return BTN1 "Gear Down";
6625 case IPT_BUTTON2: return BTN2 "Gear Up";
6626 case IPT_PADDLE: return "Left";
6627 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
6628 case IPT_PEDAL: return "Accelerate";
6629 case IPT_PEDAL2: return "Brake";
6630 } /* end of switch */
6631
6632 return "";
6633 }
6634
6635 const struct ControlInfo fantasy_ctrl =
6636 {
6637 false, /* 45_degree_rotation for joystick(s) */
6638 true, /* alternating_controls */
6639 true, /* mirrored_controls */
6640 "", /* control_details */
6641 &fantasy_get_ctrl_name
6642 };
6643
fantasy_get_ctrl_name(int type)6644 const char *fantasy_get_ctrl_name(int type)
6645 {
6646 switch(type)
6647 {
6648 } /* end of switch */
6649
6650 return joy4way_labels(type);
6651 }
6652
6653 const struct ControlInfo qbert_ctrl =
6654 {
6655 true, /* 45_degree_rotation for joystick(s) */
6656 true, /* alternating_controls */
6657 true, /* mirrored_controls */
6658 "Uses a 4-way joystick rotated 45 degrees.", /* control_details */
6659 &qbert_get_ctrl_name
6660 };
6661
qbert_get_ctrl_name(int type)6662 const char *qbert_get_ctrl_name(int type)
6663 {
6664 if(!options.restrict_4_way)
6665 {
6666 switch(type)
6667 {
6668 case IPT_JOYSTICK_LEFT: return "Left+Up";
6669 case IPT_JOYSTICK_DOWN: return "Down+Left";
6670 case IPT_JOYSTICK_UP: return "Up+Right";
6671 case IPT_JOYSTICK_RIGHT: return "Down+Right";
6672 } /* end of switch */
6673 }
6674 /* otherwise, controls are effectively rotated, so using the diagonal names would be confusing. */
6675 /* just use the generic labels */
6676 return joy4way_labels(type);
6677 }
6678
6679 const struct ControlInfo fax_ctrl =
6680 {
6681 false, /* 45_degree_rotation for joystick(s) */
6682 false, /* alternating_controls */
6683 true, /* mirrored_controls */
6684 "In the mame driver, this game seems to have two sets of coin 1 and coin 2 buttons. It's unclear if this is a bug or intentional.", /* control_details */
6685 &fax_get_ctrl_name
6686 };
6687
fax_get_ctrl_name(int type)6688 const char *fax_get_ctrl_name(int type)
6689 {
6690 switch(type)
6691 {
6692 case IPT_BUTTON1: return BTN1 "A";
6693 case IPT_BUTTON2: return BTN2 "B";
6694 case IPT_BUTTON3: return BTN3 "C";
6695 case IPT_BUTTON4: return BTN4 "D";
6696 } /* end of switch */
6697
6698 return "";
6699 }
6700
6701 const struct ControlInfo fgoal_ctrl =
6702 {
6703 false, /* 45_degree_rotation for joystick(s) */
6704 true, /* alternating_controls */
6705 true, /* mirrored_controls */
6706 "", /* control_details */
6707 &fgoal_get_ctrl_name
6708 };
6709
fgoal_get_ctrl_name(int type)6710 const char *fgoal_get_ctrl_name(int type)
6711 {
6712 switch(type)
6713 {
6714 case IPT_PADDLE: return "Left";
6715 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
6716 } /* end of switch */
6717
6718 return "";
6719 }
6720
6721 const struct ControlInfo fghtatck_ctrl =
6722 {
6723 false, /* 45_degree_rotation for joystick(s) */
6724 false, /* alternating_controls */
6725 true, /* mirrored_controls */
6726 "It should be noted that mame includes a third button and rightly so, however, the button is an extra one not used in this game but in other games of the system. It does show up in the service menu, however.", /* control_details */
6727 &fghtatck_get_ctrl_name
6728 };
6729
fghtatck_get_ctrl_name(int type)6730 const char *fghtatck_get_ctrl_name(int type)
6731 {
6732 switch(type)
6733 {
6734 case IPT_BUTTON1: return BTN1 "Fire";
6735 case IPT_BUTTON2: return BTN2 "Bomb";
6736 } /* end of switch */
6737
6738 return joy4way_labels(type);
6739 }
6740
6741 const struct ControlInfo fvipers_ctrl =
6742 {
6743 false, /* 45_degree_rotation for joystick(s) */
6744 false, /* alternating_controls */
6745 true, /* mirrored_controls */
6746 "In mame you will notice a 4th button. This is because the game runs on the model-2b boardset, which is setup generically in mame with 4 inputs.", /* control_details */
6747 &fvipers_get_ctrl_name
6748 };
6749
fvipers_get_ctrl_name(int type)6750 const char *fvipers_get_ctrl_name(int type)
6751 {
6752 switch(type)
6753 {
6754 case IPT_BUTTON1: return BTN1 "Punch";
6755 case IPT_BUTTON2: return BTN2 "Kick";
6756 case IPT_BUTTON3: return BTN3 "Guard";
6757 } /* end of switch */
6758
6759 return joy4way_labels(type);
6760 }
6761
6762 const struct ControlInfo finalb_ctrl =
6763 {
6764 false, /* 45_degree_rotation for joystick(s) */
6765 false, /* alternating_controls */
6766 true, /* mirrored_controls */
6767 "Press the weak and medium buttons at the same time for a strong punch.", /* control_details */
6768 &finalb_get_ctrl_name
6769 };
6770
finalb_get_ctrl_name(int type)6771 const char *finalb_get_ctrl_name(int type)
6772 {
6773 switch(type)
6774 {
6775 case IPT_BUTTON1: return BTN1 "Weak";
6776 case IPT_BUTTON2: return BTN2 "Medium Strength";
6777 case IPT_BUTTON3: return BTN3 "Duck";
6778 } /* end of switch */
6779
6780 return joy4way_labels(type);
6781 }
6782
6783 const struct ControlInfo ffight_ctrl =
6784 {
6785 false, /* 45_degree_rotation for joystick(s) */
6786 false, /* alternating_controls */
6787 true, /* mirrored_controls */
6788 "If you press both buttons at the same time, your character does a special move or breaks out of a hold. Mame and some machines had a third cheat button /* control_details */ it basically presses both buttons for you. It is included since the timing of pressing both buttons at the same time can be tight, but is disabled in mame by default.", /* control_details */
6789 &ffight_get_ctrl_name
6790 };
6791
ffight_get_ctrl_name(int type)6792 const char *ffight_get_ctrl_name(int type)
6793 {
6794 switch(type)
6795 {
6796 case IPT_BUTTON1: return BTN1 "Attack";
6797 case IPT_BUTTON2: return BTN2 "Jump";
6798 case IPT_BUTTON3: return BTN3 "";
6799 } /* end of switch */
6800
6801 return joy4way_labels(type);
6802 }
6803
6804 const struct ControlInfo finalap2_ctrl =
6805 {
6806 false, /* 45_degree_rotation for joystick(s) */
6807 false, /* alternating_controls */
6808 false, /* mirrored_controls */
6809 "", /* control_details */
6810 &finalap2_get_ctrl_name
6811 };
6812
finalap2_get_ctrl_name(int type)6813 const char *finalap2_get_ctrl_name(int type)
6814 {
6815 switch(type)
6816 {
6817 case IPT_BUTTON1: return BTN1 "High / Low";
6818 case IPT_DIAL: return "Turn Left";
6819 case (IPT_DIAL + IPT_EXTENSION): return "Turn Right";
6820 case IPT_PEDAL: return "Accelerate";
6821 case IPT_PEDAL2: return "Brake";
6822 } /* end of switch */
6823
6824 return "";
6825 }
6826
6827 const struct ControlInfo firetrap_ctrl =
6828 {
6829 false, /* 45_degree_rotation for joystick(s) */
6830 true, /* alternating_controls */
6831 true, /* mirrored_controls */
6832 "This game works exactly like crazy climber except you can shoot by pressing right on the left joystick and left on the right joystick at the same time. Some conversion kits used top-fire joysticks as this is a rather un-natural movement for firing rapidly. Because of this an auxillary input for 'fire' is included. So you can play this game with two joysticks, a joystick and a top-fire, two top-fires or whatever floats your boat.", /* control_details */
6833 &firetrap_get_ctrl_name
6834 };
6835
firetrap_get_ctrl_name(int type)6836 const char *firetrap_get_ctrl_name(int type)
6837 {
6838 switch(type)
6839 {
6840 case IPT_BUTTON1: return BTN1 "Fire";
6841 case IPT_JOYSTICKLEFT_UP: return "Left Up";
6842 case IPT_JOYSTICKLEFT_DOWN: return "Left Down";
6843 case IPT_JOYSTICKLEFT_LEFT: return "Left Left";
6844 case IPT_JOYSTICKLEFT_RIGHT: return "Left Right";
6845 case IPT_JOYSTICKRIGHT_UP: return "Right Up";
6846 case IPT_JOYSTICKRIGHT_DOWN: return "Right Down";
6847 case IPT_JOYSTICKRIGHT_LEFT: return "Right Left";
6848 case IPT_JOYSTICKRIGHT_RIGHT: return "Right Right";
6849 } /* end of switch */
6850
6851 return "";
6852 }
6853
6854 #if 0
6855 const struct ControlInfo firetrk_ctrl =
6856 {
6857 false, /* 45_degree_rotation for joystick(s) */
6858 false, /* alternating_controls */
6859 false, /* mirrored_controls */
6860 "In this game the player 2 control panel is behind player 1. Yes I said behind. On a real fire truck there are two steering wheels. One is in the back of the truck and turns the read wheels independantly of the front, thus allowing for tight turns with such a long vehicle. This game is played exactly the same with player 2 controlling the rear wheel when two player mode is selected. When 1 player mode is selected, those rear controls are ignored and thus the game is much harder to play.", /* control_details */
6861 &firetrk_get_ctrl_name
6862 };
6863
6864 const char *firetrk_get_ctrl_name(int type)
6865 {
6866 switch(type)
6867 {
6868 case (IPT_BUTTON1 | IPF_PLAYER2): return "Bell";
6869 case IPT_DIAL: return "Left (Rear Wheels)";
6870 case (IPT_DIAL + IPT_EXTENSION): return "Right (Rear Wheels)";
6871 case IPT_BUTTON1: return BTN1 "Accelerate";
6872 case IPT_BUTTON2: return BTN2 "Horn";
6873 case IPT_BUTTON3: return BTN3 "Track Select";
6874 case IPT_DIAL: return "Left";
6875 case (IPT_DIAL + IPT_EXTENSION): return "Right";
6876 } /* end of switch */
6877
6878 return "";
6879 }
6880 #endif
6881
6882 const struct ControlInfo fshark_ctrl =
6883 {
6884 false, /* 45_degree_rotation for joystick(s) */
6885 true, /* alternating_controls */
6886 true, /* mirrored_controls */
6887 "", /* control_details */
6888 &fshark_get_ctrl_name
6889 };
6890
fshark_get_ctrl_name(int type)6891 const char *fshark_get_ctrl_name(int type)
6892 {
6893 switch(type)
6894 {
6895 case IPT_BUTTON1: return BTN1 "Fire";
6896 case IPT_BUTTON2: return BTN2 "Bomb";
6897 } /* end of switch */
6898
6899 return joy4way_labels(type);
6900 }
6901
6902 const struct ControlInfo foodf_ctrl =
6903 {
6904 false, /* 45_degree_rotation for joystick(s) */
6905 true, /* alternating_controls */
6906 true, /* mirrored_controls */
6907 "Uses a Gimbal stick.", /* control_details */
6908 &foodf_get_ctrl_name
6909 };
6910
foodf_get_ctrl_name(int type)6911 const char *foodf_get_ctrl_name(int type)
6912 {
6913 switch(type)
6914 {
6915 case IPT_BUTTON1: return BTN1 "Throw";
6916 case IPT_AD_STICK_Y: return "Up";
6917 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
6918 case IPT_AD_STICK_X: return "Left";
6919 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
6920 } /* end of switch */
6921
6922 return "";
6923 }
6924
6925 const struct ControlInfo forgottn_ctrl =
6926 {
6927 false, /* 45_degree_rotation for joystick(s) */
6928 false, /* alternating_controls */
6929 true, /* mirrored_controls */
6930 "The spinners also was the fire button. The spinner rotates the direction the character shoots. The players can buy power-ups /* control_details */ when they get a shooting power-up the character gets a floating shooting platform that rotates with the player. When the spinner is not pressed and is rotated, the platform rotates around the charcter, staying relative to the direction the character is facing. When the spinner is pressed and rotated, the platform and character rotate at their own centers.", /* control_details */
6931 &forgottn_get_ctrl_name
6932 };
6933
forgottn_get_ctrl_name(int type)6934 const char *forgottn_get_ctrl_name(int type)
6935 {
6936 switch(type)
6937 {
6938 case IPT_BUTTON1: return BTN1 "Push to Fire";
6939 case IPT_DIAL: return "Left";
6940 case (IPT_DIAL + IPT_EXTENSION): return "Right";
6941 } /* end of switch */
6942
6943 return joy4way_labels(type);
6944 }
6945
6946 const struct ControlInfo formatz_ctrl =
6947 {
6948 false, /* 45_degree_rotation for joystick(s) */
6949 true, /* alternating_controls */
6950 true, /* mirrored_controls */
6951 "In the kit, it was optional to have the buttons mirrored on both sides of the joystick. Used 8-way leaf joysticks Holding the laser button down gives the player one stronger shot. Holding the jump button down transforms the player between a robot and an airplane. Unlike most side-scroll shooters with only shoot straight sideways, you shoot diagonally when the joystick is pushed up or down.", /* control_details */
6952 &formatz_get_ctrl_name
6953 };
6954
formatz_get_ctrl_name(int type)6955 const char *formatz_get_ctrl_name(int type)
6956 {
6957 switch(type)
6958 {
6959 case IPT_BUTTON1: return BTN1 "Laser / Hold for Energy";
6960 case IPT_BUTTON2: return BTN2 "Jump Button / Hold to Transform";
6961 } /* end of switch */
6962
6963 return joy4way_labels(type);
6964 }
6965
6966 const struct ControlInfo frenzy_ctrl =
6967 {
6968 false, /* 45_degree_rotation for joystick(s) */
6969 true, /* alternating_controls */
6970 true, /* mirrored_controls */
6971 "Sequel to Berzerk. An interesting feature of the game is that the fire button only works when the player is moving. Also, this game allows you and enemies to shoot out wall segments and move/shoot through them.", /* control_details */
6972 &frenzy_get_ctrl_name
6973 };
6974
frenzy_get_ctrl_name(int type)6975 const char *frenzy_get_ctrl_name(int type)
6976 {
6977 switch(type)
6978 {
6979 case IPT_BUTTON1: return BTN1 "Fire";
6980 } /* end of switch */
6981
6982 return joy4way_labels(type);
6983 }
6984
6985 const struct ControlInfo frogger_ctrl =
6986 {
6987 false, /* 45_degree_rotation for joystick(s) */
6988 true, /* alternating_controls */
6989 true, /* mirrored_controls */
6990 "", /* control_details */
6991 &frogger_get_ctrl_name
6992 };
6993
frogger_get_ctrl_name(int type)6994 const char *frogger_get_ctrl_name(int type)
6995 {
6996 switch(type)
6997 {
6998 } /* end of switch */
6999
7000 return joy4way_labels(type);
7001 }
7002
7003 const struct ControlInfo frogs_ctrl =
7004 {
7005 false, /* 45_degree_rotation for joystick(s) */
7006 false, /* alternating_controls */
7007 false, /* mirrored_controls */
7008 "It really was a three way joystick, basically a 4-way stick without a down. The button flicked out your frog's tongue. *update* I looked into this. This game was generally hacked into an old frogger cab. The jump button was hacked into the 4way up and a tongue button was added. However mame uses a two way joystick and two buttons to emulate the hardware (which is correct input wise) so we reflect these constants in the database. As it's sorta a bootleg there isn't much point in worrying about control accuracy.", /* control_details */
7009 &frogs_get_ctrl_name
7010 };
7011
frogs_get_ctrl_name(int type)7012 const char *frogs_get_ctrl_name(int type)
7013 {
7014 switch(type)
7015 {
7016 case IPT_BUTTON1: return BTN1 "Tongue";
7017 case IPT_BUTTON2: return BTN2 "Jump";
7018 } /* end of switch */
7019
7020 return joy2way_labels(type);
7021 }
7022
7023 const struct ControlInfo frontlin_ctrl =
7024 {
7025 false, /* 45_degree_rotation for joystick(s) */
7026 true, /* alternating_controls */
7027 true, /* mirrored_controls */
7028 "This game, along with Wild Western and Tin Star, used a unique controller. The Actual game uses a '8 way push to fire' spinner. The 'spinner' actually used a cam to engage one or two of the 4 microswitches below the control panel. So if you have a real spinner then don't expect to use it with this game. MAME emulates this like a dual 8-way joystick game. This set-up works well for the original controls, but poorly for anything else. Note: Spinners and rotary joysticks can not be used in MAME for this game. In the tank stages, use grenades to enter the blue tank. Exit the tank when it is hit. Use the spinner to rotate and fire the tank turret.", /* control_details */
7029 &frontlin_get_ctrl_name
7030 };
7031
frontlin_get_ctrl_name(int type)7032 const char *frontlin_get_ctrl_name(int type)
7033 {
7034 switch(type)
7035 {
7036 case IPT_BUTTON1: return BTN1 "Fire";
7037 case IPT_BUTTON2: return BTN2 "Tank/Grenade";
7038 case IPT_JOYSTICKLEFT_DOWN: return "Aim Down";
7039 case IPT_JOYSTICKLEFT_UP: return "Aim Up";
7040 case IPT_JOYSTICKLEFT_LEFT: return "Aim Left";
7041 case IPT_JOYSTICKLEFT_RIGHT: return "Aim Right";
7042 case IPT_JOYSTICKRIGHT_UP: return "Up";
7043 case IPT_JOYSTICKRIGHT_DOWN: return "Down";
7044 case IPT_JOYSTICKRIGHT_LEFT: return "Left";
7045 case IPT_JOYSTICKRIGHT_RIGHT: return "Right";
7046 } /* end of switch */
7047
7048 return "";
7049 }
7050
7051 const struct ControlInfo futspy_ctrl =
7052 {
7053 false, /* 45_degree_rotation for joystick(s) */
7054 true, /* alternating_controls */
7055 true, /* mirrored_controls */
7056 "The control panel on this game improperly labeled the bomb button as fire since the top button is the primary weapon.", /* control_details */
7057 &futspy_get_ctrl_name
7058 };
7059
futspy_get_ctrl_name(int type)7060 const char *futspy_get_ctrl_name(int type)
7061 {
7062 switch(type)
7063 {
7064 case IPT_BUTTON1: return BTN1 "Fire";
7065 case IPT_BUTTON2: return BTN2 "Fire (Bomb)";
7066 } /* end of switch */
7067
7068 return joy4way_labels(type);
7069 }
7070
7071 const struct ControlInfo gloc_ctrl =
7072 {
7073 false, /* 45_degree_rotation for joystick(s) */
7074 false, /* alternating_controls */
7075 false, /* mirrored_controls */
7076 "", /* control_details */
7077 &gloc_get_ctrl_name
7078 };
7079
gloc_get_ctrl_name(int type)7080 const char *gloc_get_ctrl_name(int type)
7081 {
7082 switch(type)
7083 {
7084 case IPT_BUTTON1: return BTN1 "Vulcan - Gun";
7085 case IPT_BUTTON2: return BTN2 "Missile";
7086 case IPT_BUTTON3: return BTN3 "Afterburner";
7087 case IPT_AD_STICK_X: return "Left";
7088 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
7089 case IPT_AD_STICK_Y: return "Up";
7090 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
7091 case IPT_AD_STICK_Z: return "Speed Up";
7092 case (IPT_AD_STICK_Z + IPT_EXTENSION): return "Slow Down";
7093 } /* end of switch */
7094
7095 return "";
7096 }
7097
7098 const struct ControlInfo gijoe_ctrl =
7099 {
7100 false, /* 45_degree_rotation for joystick(s) */
7101 false, /* alternating_controls */
7102 true, /* mirrored_controls */
7103 "", /* control_details */
7104 &gijoe_get_ctrl_name
7105 };
7106
gijoe_get_ctrl_name(int type)7107 const char *gijoe_get_ctrl_name(int type)
7108 {
7109 switch(type)
7110 {
7111 case IPT_BUTTON1: return BTN1 "Shoot";
7112 case IPT_BUTTON2: return BTN2 "Super Weapon";
7113 } /* end of switch */
7114
7115 return joy4way_labels(type);
7116 }
7117
7118 const struct ControlInfo gground_ctrl =
7119 {
7120 false, /* 45_degree_rotation for joystick(s) */
7121 false, /* alternating_controls */
7122 true, /* mirrored_controls */
7123 "It should be noted that the joystick had the simple label of 'Select Warrior / Move Player'", /* control_details */
7124 &gground_get_ctrl_name
7125 };
7126
gground_get_ctrl_name(int type)7127 const char *gground_get_ctrl_name(int type)
7128 {
7129 switch(type)
7130 {
7131 case IPT_BUTTON1: return BTN1 "Magic Weapon";
7132 case IPT_BUTTON2: return BTN2 "special Weapon";
7133 } /* end of switch */
7134
7135 return joy4way_labels(type);
7136 }
7137
7138 const struct ControlInfo galaga88_ctrl =
7139 {
7140 false, /* 45_degree_rotation for joystick(s) */
7141 true, /* alternating_controls */
7142 true, /* mirrored_controls */
7143 "This game was marketed as a conversion for Dragon Spirit, so it used an 8-way joystick, but the vertical inputs were ignored. The game has one actual action button 'Fire' located on the left and right side of the joystick. However the PCB does have three button inputs.", /* control_details */
7144 &galaga88_get_ctrl_name
7145 };
7146
galaga88_get_ctrl_name(int type)7147 const char *galaga88_get_ctrl_name(int type)
7148 {
7149 switch(type)
7150 {
7151 case IPT_BUTTON1: return BTN1 "Fire";
7152 case IPT_BUTTON2: return BTN2 "Fire";
7153 case IPT_BUTTON3: return BTN3 "N/A";
7154 } /* end of switch */
7155
7156 return joy2way_labels(type); /* generic "Left" and "Right" labels */
7157 }
7158
7159 const struct ControlInfo galaga_ctrl =
7160 {
7161 false, /* 45_degree_rotation for joystick(s) */
7162 true, /* alternating_controls */
7163 true, /* mirrored_controls */
7164 "", /* control_details */
7165 &galaga_get_ctrl_name
7166 };
7167
galaga_get_ctrl_name(int type)7168 const char *galaga_get_ctrl_name(int type)
7169 {
7170 switch(type)
7171 {
7172 case IPT_BUTTON1: return BTN1 "Fire";
7173 } /* end of switch */
7174
7175 return joy2way_labels(type); /* generic "Left" and "Right" labels */
7176 }
7177
7178 const struct ControlInfo galaxian_ctrl =
7179 {
7180 false, /* 45_degree_rotation for joystick(s) */
7181 true, /* alternating_controls */
7182 true, /* mirrored_controls */
7183 "", /* control_details */
7184 &galaxian_get_ctrl_name
7185 };
7186
galaxian_get_ctrl_name(int type)7187 const char *galaxian_get_ctrl_name(int type)
7188 {
7189 switch(type)
7190 {
7191 case IPT_BUTTON1: return BTN1 "Fire";
7192 } /* end of switch */
7193
7194 return joy2way_labels(type); /* generic "Left" and "Right" labels */
7195 }
7196
7197 const struct ControlInfo gforce2_ctrl =
7198 {
7199 false, /* 45_degree_rotation for joystick(s) */
7200 false, /* alternating_controls */
7201 false, /* mirrored_controls */
7202 "Please note that none of the controls in this game have any labels. They are labeled by what they do.", /* control_details */
7203 &gforce2_get_ctrl_name
7204 };
7205
gforce2_get_ctrl_name(int type)7206 const char *gforce2_get_ctrl_name(int type)
7207 {
7208 switch(type)
7209 {
7210 case IPT_BUTTON1: return BTN1 "Fire";
7211 case IPT_BUTTON2: return BTN2 "Missile";
7212 case IPT_AD_STICK_X: return "Left";
7213 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
7214 case IPT_AD_STICK_Y: return "Up";
7215 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
7216 case IPT_AD_STICK_Z: return "Fast";
7217 case (IPT_AD_STICK_Z + IPT_EXTENSION): return "Slow";
7218 } /* end of switch */
7219
7220 return "";
7221 }
7222
7223 const struct ControlInfo galxwars_ctrl =
7224 {
7225 false, /* 45_degree_rotation for joystick(s) */
7226 true, /* alternating_controls */
7227 true, /* mirrored_controls */
7228 "", /* control_details */
7229 &galxwars_get_ctrl_name
7230 };
7231
galxwars_get_ctrl_name(int type)7232 const char *galxwars_get_ctrl_name(int type)
7233 {
7234 switch(type)
7235 {
7236 case IPT_BUTTON1: return BTN1 "Fire";
7237 case IPT_JOYSTICK_LEFT: return "L";
7238 case IPT_JOYSTICK_RIGHT: return "R";
7239 } /* end of switch */
7240
7241 return "";
7242 }
7243
7244 const struct ControlInfo galpanic_ctrl =
7245 {
7246 false, /* 45_degree_rotation for joystick(s) */
7247 false, /* alternating_controls */
7248 true, /* mirrored_controls */
7249 "", /* control_details */
7250 &galpanic_get_ctrl_name
7251 };
7252
galpanic_get_ctrl_name(int type)7253 const char *galpanic_get_ctrl_name(int type)
7254 {
7255 switch(type)
7256 {
7257 case IPT_BUTTON1: return BTN1 "Cut";
7258 } /* end of switch */
7259
7260 return joy4way_labels(type);
7261 }
7262
7263 const struct ControlInfo galpani2_ctrl =
7264 {
7265 false, /* 45_degree_rotation for joystick(s) */
7266 true, /* alternating_controls */
7267 true, /* mirrored_controls */
7268 "This game didn't actually label the button and in all the docs it's referred to as button 1, however it is clear what this button does. I labeled it 'cut' to avoid confusion as 'button 1' may seem like a parsing error to the average viewer. Also take note that the pcb has inputs for three physical buttons and they are emulated in mame, but only the first is used.", /* control_details */
7269 &galpani2_get_ctrl_name
7270 };
7271
galpani2_get_ctrl_name(int type)7272 const char *galpani2_get_ctrl_name(int type)
7273 {
7274 switch(type)
7275 {
7276 case IPT_BUTTON1: return BTN1 "Cut";
7277 } /* end of switch */
7278
7279 return joy4way_labels(type);
7280 }
7281
7282 const struct ControlInfo gaplus_ctrl =
7283 {
7284 false, /* 45_degree_rotation for joystick(s) */
7285 true, /* alternating_controls */
7286 true, /* mirrored_controls */
7287 "", /* control_details */
7288 &gaplus_get_ctrl_name
7289 };
7290
gaplus_get_ctrl_name(int type)7291 const char *gaplus_get_ctrl_name(int type)
7292 {
7293 switch(type)
7294 {
7295 case IPT_BUTTON1: return BTN1 "Fire";
7296 } /* end of switch */
7297
7298 return joy4way_labels(type);
7299 }
7300
7301 const struct ControlInfo gauntlet_ctrl =
7302 {
7303 false, /* 45_degree_rotation for joystick(s) */
7304 false, /* alternating_controls */
7305 true, /* mirrored_controls */
7306 "", /* control_details */
7307 &gauntlet_get_ctrl_name
7308 };
7309
gauntlet_get_ctrl_name(int type)7310 const char *gauntlet_get_ctrl_name(int type)
7311 {
7312 switch(type)
7313 {
7314 case IPT_BUTTON1: return BTN1 "Fire";
7315 case IPT_BUTTON2: return BTN2 "Magic / Start";
7316 } /* end of switch */
7317
7318 return joy4way_labels(type);
7319 }
7320
7321 const struct ControlInfo gaunt2_ctrl =
7322 {
7323 false, /* 45_degree_rotation for joystick(s) */
7324 false, /* alternating_controls */
7325 true, /* mirrored_controls */
7326 "", /* control_details */
7327 &gaunt2_get_ctrl_name
7328 };
7329
gaunt2_get_ctrl_name(int type)7330 const char *gaunt2_get_ctrl_name(int type)
7331 {
7332 switch(type)
7333 {
7334 case IPT_BUTTON1: return BTN1 "Fire";
7335 case IPT_BUTTON2: return BTN2 "Magic / Start";
7336 } /* end of switch */
7337
7338 return joy4way_labels(type);
7339 }
7340
7341 const struct ControlInfo geebee_ctrl =
7342 {
7343 false, /* 45_degree_rotation for joystick(s) */
7344 true, /* alternating_controls */
7345 true, /* mirrored_controls */
7346 "This is a blockout type game that is controlled by a paddle (limited turn with POT), instead of a spinner as in Arkanoid.", /* control_details */
7347 &geebee_get_ctrl_name
7348 };
7349
geebee_get_ctrl_name(int type)7350 const char *geebee_get_ctrl_name(int type)
7351 {
7352 switch(type)
7353 {
7354 case IPT_BUTTON1: return BTN1 "Serve";
7355 case IPT_PADDLE: return "Left";
7356 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
7357 } /* end of switch */
7358
7359 return "";
7360 }
7361
7362 const struct ControlInfo gng_ctrl =
7363 {
7364 false, /* 45_degree_rotation for joystick(s) */
7365 true, /* alternating_controls */
7366 true, /* mirrored_controls */
7367 "Buttons are mirrored on both sides of the joystick.", /* control_details */
7368 &gng_get_ctrl_name
7369 };
7370
gng_get_ctrl_name(int type)7371 const char *gng_get_ctrl_name(int type)
7372 {
7373 switch(type)
7374 {
7375 case IPT_BUTTON1: return BTN1 "Fire";
7376 case IPT_BUTTON2: return BTN2 "Jump";
7377 } /* end of switch */
7378
7379 return joy4way_labels(type);
7380 }
7381
7382 const struct ControlInfo ghouls_ctrl =
7383 {
7384 false, /* 45_degree_rotation for joystick(s) */
7385 true, /* alternating_controls */
7386 true, /* mirrored_controls */
7387 "", /* control_details */
7388 &ghouls_get_ctrl_name
7389 };
7390
ghouls_get_ctrl_name(int type)7391 const char *ghouls_get_ctrl_name(int type)
7392 {
7393 switch(type)
7394 {
7395 case IPT_BUTTON1: return BTN1 "Fire";
7396 case IPT_BUTTON2: return BTN2 "Jump";
7397 } /* end of switch */
7398
7399 return joy4way_labels(type);
7400 }
7401
7402 const struct ControlInfo gigawing_ctrl =
7403 {
7404 false, /* 45_degree_rotation for joystick(s) */
7405 false, /* alternating_controls */
7406 true, /* mirrored_controls */
7407 "Normal shots are made by tapping on the 'Shot' button. If you hold it down (and you are recharged), you get a temporary 'Reflect Barrier' that reflect all the ememies' shots back at them. You don't have a max number of times to use the reflect barrier, except there is a fairly short recharge time before you can use it again. The 'Force Bomb' button is like most shooter's bomb buttons (you have limited number bombs & one bomb is stronger than a normal shot).", /* control_details */
7408 &gigawing_get_ctrl_name
7409 };
7410
gigawing_get_ctrl_name(int type)7411 const char *gigawing_get_ctrl_name(int type)
7412 {
7413 switch(type)
7414 {
7415 case IPT_BUTTON1: return BTN1 "Shot / Hold for Reflect Barrier";
7416 case IPT_BUTTON2: return BTN2 "Force Bomb";
7417 } /* end of switch */
7418
7419 return joy4way_labels(type);
7420 }
7421
7422 const struct ControlInfo goldmedl_ctrl =
7423 {
7424 false, /* 45_degree_rotation for joystick(s) */
7425 false, /* alternating_controls */
7426 true, /* mirrored_controls */
7427 "The buttons on this game aren't labeled, which is a shame as it's quite difficult to figure out what they do. With over 20 events and each event using the buttons for a different thing, it may be impossible to play this game without an instruction card. During the attract mode, however, it shows which buttons you are supposed to press when going through an event.", /* control_details */
7428 &goldmedl_get_ctrl_name
7429 };
7430
goldmedl_get_ctrl_name(int type)7431 const char *goldmedl_get_ctrl_name(int type)
7432 {
7433 switch(type)
7434 {
7435 case IPT_BUTTON1: return BTN1 "Button A";
7436 case IPT_BUTTON2: return BTN2 "Button B";
7437 case IPT_BUTTON3: return BTN3 "Button C";
7438 } /* end of switch */
7439
7440 return "";
7441 }
7442
7443 const struct ControlInfo goldnaxe_ctrl =
7444 {
7445 false, /* 45_degree_rotation for joystick(s) */
7446 false, /* alternating_controls */
7447 true, /* mirrored_controls */
7448 "", /* control_details */
7449 &goldnaxe_get_ctrl_name
7450 };
7451
goldnaxe_get_ctrl_name(int type)7452 const char *goldnaxe_get_ctrl_name(int type)
7453 {
7454 switch(type)
7455 {
7456 case IPT_BUTTON1: return BTN1 "Attack";
7457 case IPT_BUTTON2: return BTN2 "Jump";
7458 case IPT_BUTTON3: return BTN3 "Magic";
7459 } /* end of switch */
7460
7461 return joy4way_labels(type);
7462 }
7463
7464 const struct ControlInfo ga2_ctrl =
7465 {
7466 false, /* 45_degree_rotation for joystick(s) */
7467 false, /* alternating_controls */
7468 true, /* mirrored_controls */
7469 "", /* control_details */
7470 &ga2_get_ctrl_name
7471 };
7472
ga2_get_ctrl_name(int type)7473 const char *ga2_get_ctrl_name(int type)
7474 {
7475 switch(type)
7476 {
7477 case IPT_BUTTON1: return BTN1 "Attack";
7478 case IPT_BUTTON2: return BTN2 "Jump";
7479 case IPT_BUTTON3: return BTN3 "Magic";
7480 } /* end of switch */
7481
7482 return joy4way_labels(type);
7483 }
7484
7485 const struct ControlInfo gt97_ctrl =
7486 {
7487 false, /* 45_degree_rotation for joystick(s) */
7488 true, /* alternating_controls */
7489 true, /* mirrored_controls */
7490 "1 = Up Left, 2 = Up, 3 = Up Right. A = Down Left, B = Down, C = Down Right. On the control panel overlay is instruction on how to swing using those numbers and letters.", /* control_details */
7491 >97_get_ctrl_name
7492 };
7493
gt97_get_ctrl_name(int type)7494 const char *gt97_get_ctrl_name(int type)
7495 {
7496 switch(type)
7497 {
7498 case IPT_BUTTON1: return BTN1 "Face Left";
7499 case IPT_BUTTON2: return BTN2 "Face Right";
7500 case IPT_TRACKBALL_Y: return "Forward Swing";
7501 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Choose Club";
7502 case IPT_TRACKBALL_X: return "Choose Club";
7503 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Back Swing";
7504 } /* end of switch */
7505
7506 return "";
7507 }
7508
7509 const struct ControlInfo gt98_ctrl =
7510 {
7511 false, /* 45_degree_rotation for joystick(s) */
7512 true, /* alternating_controls */
7513 true, /* mirrored_controls */
7514 "1 = Up Left, 2 = Up, 3 = Up Right. A = Down Left, B = Down, C = Down Right. On the control panel overlay is instruction on how to swing using those numbers and letters.", /* control_details */
7515 >98_get_ctrl_name
7516 };
7517
gt98_get_ctrl_name(int type)7518 const char *gt98_get_ctrl_name(int type)
7519 {
7520 switch(type)
7521 {
7522 case IPT_BUTTON1: return BTN1 "Face Left";
7523 case IPT_BUTTON2: return BTN2 "Face Right";
7524 case IPT_TRACKBALL_X: return "Choose Club";
7525 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Choose Club";
7526 case IPT_TRACKBALL_Y: return "Forward Swing";
7527 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Back Swing";
7528 } /* end of switch */
7529
7530 return "";
7531 }
7532
7533 const struct ControlInfo gt99_ctrl =
7534 {
7535 false, /* 45_degree_rotation for joystick(s) */
7536 true, /* alternating_controls */
7537 true, /* mirrored_controls */
7538 "1 = Up Left, 2 = Up, 3 = Up Right. A = Down Left, B = Down, C = Down Right. On the control panel overlay is instruction on how to swing using those numbers and letters.", /* control_details */
7539 >99_get_ctrl_name
7540 };
7541
gt99_get_ctrl_name(int type)7542 const char *gt99_get_ctrl_name(int type)
7543 {
7544 switch(type)
7545 {
7546 case IPT_BUTTON1: return BTN1 "Face Left";
7547 case IPT_BUTTON2: return BTN2 "Face Right";
7548 case IPT_TRACKBALL_X: return "Choose Club";
7549 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Choose Club";
7550 case IPT_TRACKBALL_Y: return "Forward Swing";
7551 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Back Swing";
7552 } /* end of switch */
7553
7554 return "";
7555 }
7556
7557 const struct ControlInfo gt2k_ctrl =
7558 {
7559 false, /* 45_degree_rotation for joystick(s) */
7560 true, /* alternating_controls */
7561 true, /* mirrored_controls */
7562 "1 = Up Left, 2 = Up, 3 = Up Right. A = Down Left, B = Down, C = Down Right. On the control panel overlay is instruction on how to swing using those numbers and letters.", /* control_details */
7563 >2k_get_ctrl_name
7564 };
7565
gt2k_get_ctrl_name(int type)7566 const char *gt2k_get_ctrl_name(int type)
7567 {
7568 switch(type)
7569 {
7570 case IPT_BUTTON1: return BTN1 "Face Left";
7571 case IPT_BUTTON2: return BTN2 "Face Right";
7572 case IPT_TRACKBALL_X: return "Choose Club";
7573 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Choose Club";
7574 case IPT_TRACKBALL_Y: return "Forward Swing";
7575 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Back Swing";
7576 } /* end of switch */
7577
7578 return "";
7579 }
7580
7581 const struct ControlInfo gt3d_ctrl =
7582 {
7583 false, /* 45_degree_rotation for joystick(s) */
7584 true, /* alternating_controls */
7585 true, /* mirrored_controls */
7586 "1 = Up Left, 2 = Up, 3 = Up Right. A = Down Left, B = Down, C = Down Right. On the control panel overlay is instruction on how to swing using those numbers and letters.", /* control_details */
7587 >3d_get_ctrl_name
7588 };
7589
gt3d_get_ctrl_name(int type)7590 const char *gt3d_get_ctrl_name(int type)
7591 {
7592 switch(type)
7593 {
7594 case IPT_BUTTON1: return BTN1 "Face Left";
7595 case IPT_BUTTON2: return BTN2 "Face Right";
7596 case IPT_TRACKBALL_Y: return "Forward Swing";
7597 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Choose Club";
7598 case IPT_TRACKBALL_X: return "Choose Club";
7599 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Back Swing";
7600 } /* end of switch */
7601
7602 return "";
7603 }
7604
7605 const struct ControlInfo gtg2_ctrl =
7606 {
7607 false, /* 45_degree_rotation for joystick(s) */
7608 true, /* alternating_controls */
7609 true, /* mirrored_controls */
7610 "1 = Up Left, 2 = Up, 3 = Up Right. A = Down Left, B = Down, C = Down Right. On the control panel overlay is instruction on how to swing using those numbers and letters.", /* control_details */
7611 >g2_get_ctrl_name
7612 };
7613
gtg2_get_ctrl_name(int type)7614 const char *gtg2_get_ctrl_name(int type)
7615 {
7616 switch(type)
7617 {
7618 case IPT_BUTTON1: return BTN1 "Face Left";
7619 case IPT_BUTTON2: return BTN2 "Face Right";
7620 case IPT_TRACKBALL_X: return "Choose Club";
7621 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Choose Club";
7622 case IPT_TRACKBALL_Y: return "Forward Swing";
7623 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Back Swing";
7624 } /* end of switch */
7625
7626 return "";
7627 }
7628
7629 const struct ControlInfo glfgreat_ctrl =
7630 {
7631 false, /* 45_degree_rotation for joystick(s) */
7632 true, /* alternating_controls */
7633 true, /* mirrored_controls */
7634 "MAME lists inputs for buttons 3 and 4 but they don't do anything. Use the Shot button to enter initials.", /* control_details */
7635 &glfgreat_get_ctrl_name
7636 };
7637
glfgreat_get_ctrl_name(int type)7638 const char *glfgreat_get_ctrl_name(int type)
7639 {
7640 switch(type)
7641 {
7642 case IPT_BUTTON1: return BTN1 "Stance";
7643 case IPT_BUTTON2: return BTN2 "Shot";
7644 case IPT_BUTTON3: return BTN3 "N/A";
7645 case IPT_BUTTON4: return BTN4 "N/A";
7646 case IPT_JOYSTICK_UP: return "Select longer distance club";
7647 case IPT_JOYSTICK_DOWN: return "Select shorter distance club";
7648 case IPT_JOYSTICK_LEFT: return "Rotate Left";
7649 case IPT_JOYSTICK_RIGHT: return "Rotate Right";
7650 } /* end of switch */
7651
7652 return "";
7653 }
7654
7655 const struct ControlInfo golgo13_ctrl =
7656 {
7657 false, /* 45_degree_rotation for joystick(s) */
7658 false, /* alternating_controls */
7659 false, /* mirrored_controls */
7660 "The select and enter buttons may very well be useless in the game itself. Everything is in Japanese it's generally hard to tell with what little is know with this game. On the original game there was a scope you looked through that contained a small lcd with a closer view. In mame a 'zoom button' was hacked in. There is no telling if that was an original option or not.", /* control_details */
7661 &golgo13_get_ctrl_name
7662 };
7663
golgo13_get_ctrl_name(int type)7664 const char *golgo13_get_ctrl_name(int type)
7665 {
7666 switch(type)
7667 {
7668 case IPT_BUTTON1: return BTN1 "Trigger";
7669 case IPT_BUTTON2: return BTN2 "Zoom In / Zoom Out";
7670 case IPT_BUTTON3: return BTN3 "Enter";
7671 case IPT_JOYSTICK_UP: return "Select Up";
7672 case IPT_JOYSTICK_DOWN: return "Select Down";
7673 case IPT_LIGHTGUN_X: return "Aim Left";
7674 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
7675 case IPT_LIGHTGUN_Y: return "Aim Up";
7676 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
7677 } /* end of switch */
7678
7679 return "";
7680 }
7681
7682 const struct ControlInfo gollygho_ctrl =
7683 {
7684 false, /* 45_degree_rotation for joystick(s) */
7685 false, /* alternating_controls */
7686 true, /* mirrored_controls */
7687 "", /* control_details */
7688 &gollygho_get_ctrl_name
7689 };
7690
gollygho_get_ctrl_name(int type)7691 const char *gollygho_get_ctrl_name(int type)
7692 {
7693 switch(type)
7694 {
7695 case IPT_BUTTON1: return BTN1 "1";
7696 case IPT_LIGHTGUN_X: return "Aim Left";
7697 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
7698 case IPT_LIGHTGUN_Y: return "Aim Up";
7699 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
7700 } /* end of switch */
7701
7702 return "";
7703 }
7704
7705 const struct ControlInfo gondo_ctrl =
7706 {
7707 false, /* 45_degree_rotation for joystick(s) */
7708 false, /* alternating_controls */
7709 true, /* mirrored_controls */
7710 "Used the yellow snk LS-30 mechcanical rotatry. Rotating the joystick changes the direction the Character Weapon shoots. The Airbike Weapon always shoots straight forward. This was usually released as a kit /* control_details */ the instructions suggested mirroring the buttons on both sides of each joystick, but not all arcade operaters did this. Player1 is the blue air bike, player2 is the grey air bike.", /* control_details */
7711 &gondo_get_ctrl_name
7712 };
7713
gondo_get_ctrl_name(int type)7714 const char *gondo_get_ctrl_name(int type)
7715 {
7716 switch(type)
7717 {
7718 case IPT_BUTTON1: return BTN1 "Character Weapon";
7719 case IPT_BUTTON2: return BTN2 "Airbike Weapon";
7720 case IPT_DIAL: return "Rotate Left";
7721 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
7722 } /* end of switch */
7723
7724 return joy4way_labels(type);
7725 }
7726
7727 const struct ControlInfo gorf_ctrl =
7728 {
7729 false, /* 45_degree_rotation for joystick(s) */
7730 true, /* alternating_controls */
7731 true, /* mirrored_controls */
7732 "The alternating play is not normal. Players alternate when a player passes a level or game over, not when a life is lost like most alternating games. If you press the button before the last shot gets off the screen or hits something, that shot will disappear and you shoot a new one.", /* control_details */
7733 &gorf_get_ctrl_name
7734 };
7735
gorf_get_ctrl_name(int type)7736 const char *gorf_get_ctrl_name(int type)
7737 {
7738 switch(type)
7739 {
7740 case IPT_BUTTON1: return BTN1 "Fire";
7741 } /* end of switch */
7742
7743 return joy4way_labels(type);
7744 }
7745
7746 const struct ControlInfo grchamp_ctrl =
7747 {
7748 false, /* 45_degree_rotation for joystick(s) */
7749 false, /* alternating_controls */
7750 false, /* mirrored_controls */
7751 "", /* control_details */
7752 &grchamp_get_ctrl_name
7753 };
7754
grchamp_get_ctrl_name(int type)7755 const char *grchamp_get_ctrl_name(int type)
7756 {
7757 switch(type)
7758 {
7759 case IPT_DIAL: return "Left";
7760 case (IPT_DIAL + IPT_EXTENSION): return "Right";
7761 case IPT_PEDAL: return "Accelerate";
7762 } /* end of switch */
7763
7764 return "";
7765 }
7766
7767 const struct ControlInfo f1gpstar_ctrl =
7768 {
7769 false, /* 45_degree_rotation for joystick(s) */
7770 true, /* alternating_controls */
7771 true, /* mirrored_controls */
7772 "", /* control_details */
7773 &f1gpstar_get_ctrl_name
7774 };
7775
f1gpstar_get_ctrl_name(int type)7776 const char *f1gpstar_get_ctrl_name(int type)
7777 {
7778 switch(type)
7779 {
7780 case IPT_BUTTON1: return BTN1 "Accelerate";
7781 case IPT_BUTTON2: return BTN2 "Brake";
7782 case IPT_BUTTON3: return BTN3 "Lo";
7783 case IPT_BUTTON4: return BTN4 "Hi";
7784 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
7785 case IPT_PADDLE: return "Left";
7786 } /* end of switch */
7787
7788 return "";
7789 }
7790
7791 const struct ControlInfo gravitar_ctrl =
7792 {
7793 false, /* 45_degree_rotation for joystick(s) */
7794 true, /* alternating_controls */
7795 true, /* mirrored_controls */
7796 "", /* control_details */
7797 &gravitar_get_ctrl_name
7798 };
7799
gravitar_get_ctrl_name(int type)7800 const char *gravitar_get_ctrl_name(int type)
7801 {
7802 switch(type)
7803 {
7804 case IPT_BUTTON1: return BTN1 "Fire";
7805 case IPT_BUTTON2: return BTN2 "Thurst";
7806 case IPT_BUTTON3: return BTN3 "Tractor/Shield";
7807 case IPT_JOYSTICK_LEFT: return "Rotate Left";
7808 case IPT_JOYSTICK_RIGHT: return "Rotate Right";
7809 } /* end of switch */
7810
7811 return "";
7812 }
7813
7814 const struct ControlInfo greatgun_ctrl =
7815 {
7816 false, /* 45_degree_rotation for joystick(s) */
7817 false, /* alternating_controls */
7818 true, /* mirrored_controls */
7819 "The guns on this game are indeed lightguns, but they were mounted to the cabinet as they were very heavy shotguns.", /* control_details */
7820 &greatgun_get_ctrl_name
7821 };
7822
greatgun_get_ctrl_name(int type)7823 const char *greatgun_get_ctrl_name(int type)
7824 {
7825 switch(type)
7826 {
7827 case IPT_BUTTON1: return BTN1 "Fire";
7828 case IPT_LIGHTGUN_X: return "Aim Left";
7829 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
7830 case IPT_LIGHTGUN_Y: return "Aim Up";
7831 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
7832 } /* end of switch */
7833
7834 return "";
7835 }
7836
7837 const struct ControlInfo gberet_ctrl =
7838 {
7839 false, /* 45_degree_rotation for joystick(s) */
7840 true, /* alternating_controls */
7841 true, /* mirrored_controls */
7842 "", /* control_details */
7843 &gberet_get_ctrl_name
7844 };
7845
gberet_get_ctrl_name(int type)7846 const char *gberet_get_ctrl_name(int type)
7847 {
7848 switch(type)
7849 {
7850 case IPT_BUTTON1: return BTN1 "Weapon";
7851 case IPT_BUTTON2: return BTN2 "Shoot";
7852 } /* end of switch */
7853
7854 return joy4way_labels(type);
7855 }
7856
7857 const struct ControlInfo gridiron_ctrl =
7858 {
7859 false, /* 45_degree_rotation for joystick(s) */
7860 true, /* alternating_controls */
7861 true, /* mirrored_controls */
7862 "The trackball itself is actually labeled 'Pass & Movement Control.' The original game had a led counter on the control panel that displayed the currently select play number. In mame this is simulated by a tiny, tiny little orange character on the bottom left of the screen. This really needs to be replaced by some artwork files to make it a little bigger and easier to understand.", /* control_details */
7863 &gridiron_get_ctrl_name
7864 };
7865
gridiron_get_ctrl_name(int type)7866 const char *gridiron_get_ctrl_name(int type)
7867 {
7868 switch(type)
7869 {
7870 case IPT_BUTTON1: return BTN1 "Pass & Formation Set";
7871 case IPT_TRACKBALL_X: return "Left";
7872 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
7873 case IPT_TRACKBALL_Y: return "Up";
7874 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
7875 } /* end of switch */
7876
7877 return "";
7878 }
7879
7880 const struct ControlInfo gridlee_ctrl =
7881 {
7882 false, /* 45_degree_rotation for joystick(s) */
7883 true, /* alternating_controls */
7884 true, /* mirrored_controls */
7885 "", /* control_details */
7886 &gridlee_get_ctrl_name
7887 };
7888
gridlee_get_ctrl_name(int type)7889 const char *gridlee_get_ctrl_name(int type)
7890 {
7891 switch(type)
7892 {
7893 case IPT_BUTTON1: return BTN1 "Fire";
7894 case IPT_TRACKBALL_X: return "Left";
7895 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
7896 case IPT_TRACKBALL_Y: return "Up";
7897 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
7898 } /* end of switch */
7899
7900 return "";
7901 }
7902
7903 const struct ControlInfo guardian_ctrl =
7904 {
7905 false, /* 45_degree_rotation for joystick(s) */
7906 false, /* alternating_controls */
7907 true, /* mirrored_controls */
7908 "Press both kicks or punches together to perform a power punch or kick respectively.", /* control_details */
7909 &guardian_get_ctrl_name
7910 };
7911
guardian_get_ctrl_name(int type)7912 const char *guardian_get_ctrl_name(int type)
7913 {
7914 switch(type)
7915 {
7916 case IPT_BUTTON1: return BTN1 "Fast Punch";
7917 case IPT_BUTTON2: return BTN2 "Fast Kick";
7918 case IPT_BUTTON3: return BTN3 "Defense";
7919 case IPT_BUTTON4: return BTN4 "Strong Punch";
7920 case IPT_BUTTON5: return BTN5 "Strong Kick";
7921 } /* end of switch */
7922
7923 return joy4way_labels(type);
7924 }
7925
7926 const struct ControlInfo gwar_ctrl =
7927 {
7928 false, /* 45_degree_rotation for joystick(s) */
7929 false, /* alternating_controls */
7930 true, /* mirrored_controls */
7931 "Grenade button also gets you into and out of the tank. Used the SNK LS-30, 12 direction rotary, but only faces 8 directions in the game. Usually the buttons were mirrored on both sides of the joystick for a total of four physical buttons per player, but both fire buttons and both grenade buttons are wired to the same PCB input. The recommended button colors are yellow for the fire button, and black for the grenade button. To enter test mode hold down the service key (F2) during boot or reboot until grid screen /* control_details */ press service button to go to next test screen; reboot to exit. Mame's driver has an extra 13th 'direction' between 5 & 6 because it 'avoids the 'joystick error' protection in Guerilla War which happens when direction changes directly from 0x50<->0x60 8 times.'", /* control_details */
7932 &gwar_get_ctrl_name
7933 };
7934
gwar_get_ctrl_name(int type)7935 const char *gwar_get_ctrl_name(int type)
7936 {
7937 switch(type)
7938 {
7939 case IPT_BUTTON1: return BTN1 "Fire";
7940 case IPT_BUTTON2: return BTN2 "Grenade";
7941 case IPT_DIAL: return "Rotate Left";
7942 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
7943 } /* end of switch */
7944
7945 return joy4way_labels(type);
7946 }
7947
7948 const struct ControlInfo gunsmoke_ctrl =
7949 {
7950 false, /* 45_degree_rotation for joystick(s) */
7951 true, /* alternating_controls */
7952 true, /* mirrored_controls */
7953 "Six shot directions are possible by pressing the buttons in combination - Besides the obvious primary directions, pressing Fire Right and Fire Straight would aim between Straight and Right, same for Straight and Left, and pressing Left and Right together would shoot in both directions.", /* control_details */
7954 &gunsmoke_get_ctrl_name
7955 };
7956
gunsmoke_get_ctrl_name(int type)7957 const char *gunsmoke_get_ctrl_name(int type)
7958 {
7959 switch(type)
7960 {
7961 case IPT_BUTTON1: return BTN1 "Fire - Left";
7962 case IPT_BUTTON2: return BTN2 "Fire - Center";
7963 case IPT_BUTTON3: return BTN3 "Fire - Right";
7964 } /* end of switch */
7965
7966 return joy4way_labels(type);
7967 }
7968
7969 const struct ControlInfo gunbird_ctrl =
7970 {
7971 false, /* 45_degree_rotation for joystick(s) */
7972 false, /* alternating_controls */
7973 true, /* mirrored_controls */
7974 "", /* control_details */
7975 &gunbird_get_ctrl_name
7976 };
7977
gunbird_get_ctrl_name(int type)7978 const char *gunbird_get_ctrl_name(int type)
7979 {
7980 switch(type)
7981 {
7982 case IPT_BUTTON1: return BTN1 "Fire";
7983 case IPT_BUTTON2: return BTN2 "Bomb";
7984 } /* end of switch */
7985
7986 return joy4way_labels(type);
7987 }
7988
7989 const struct ControlInfo gunbustr_ctrl =
7990 {
7991 false, /* 45_degree_rotation for joystick(s) */
7992 false, /* alternating_controls */
7993 true, /* mirrored_controls */
7994 "The game's descriptions are in japanese when you start the game and since the game's cpo doesn't have any labels, I did the best I could with the in-game input test.", /* control_details */
7995 &gunbustr_get_ctrl_name
7996 };
7997
gunbustr_get_ctrl_name(int type)7998 const char *gunbustr_get_ctrl_name(int type)
7999 {
8000 switch(type)
8001 {
8002 case IPT_BUTTON1: return BTN1 "Trigger";
8003 case IPT_BUTTON2: return BTN2 "Bomb";
8004 case IPT_JOYSTICK_UP: return "Move Forward";
8005 case IPT_JOYSTICK_DOWN: return "move Backward";
8006 case IPT_JOYSTICK_LEFT: return "Move Left";
8007 case IPT_JOYSTICK_RIGHT: return "Move Right";
8008 case IPT_LIGHTGUN_X: return "Aim Left";
8009 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
8010 case IPT_LIGHTGUN_Y: return "Aim Up";
8011 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
8012 } /* end of switch */
8013
8014 return "";
8015 }
8016
8017 const struct ControlInfo gyruss_ctrl =
8018 {
8019 false, /* 45_degree_rotation for joystick(s) */
8020 true, /* alternating_controls */
8021 true, /* mirrored_controls */
8022 "The joystick caused you to rotate around the exterior of the playfield.", /* control_details */
8023 &gyruss_get_ctrl_name
8024 };
8025
gyruss_get_ctrl_name(int type)8026 const char *gyruss_get_ctrl_name(int type)
8027 {
8028 switch(type)
8029 {
8030 case IPT_BUTTON1: return BTN1 "Fire";
8031 } /* end of switch */
8032
8033 return joy4way_labels(type);
8034 }
8035
8036 const struct ControlInfo halleys_ctrl =
8037 {
8038 false, /* 45_degree_rotation for joystick(s) */
8039 true, /* alternating_controls */
8040 true, /* mirrored_controls */
8041 "Note that the mame driver labels button 2 as 'hyperspace' but according to the mame cpo pack and a few others sources it is the 'warp' button. If evidence is found to the contrary please feel free to correct.", /* control_details */
8042 &halleys_get_ctrl_name
8043 };
8044
halleys_get_ctrl_name(int type)8045 const char *halleys_get_ctrl_name(int type)
8046 {
8047 switch(type)
8048 {
8049 case IPT_BUTTON1: return BTN1 "Fire";
8050 case IPT_BUTTON2: return BTN2 "Warp";
8051 } /* end of switch */
8052
8053 return joy4way_labels(type);
8054 }
8055
8056 const struct ControlInfo hardyard_ctrl =
8057 {
8058 false, /* 45_degree_rotation for joystick(s) */
8059 false, /* alternating_controls */
8060 true, /* mirrored_controls */
8061 "If dive is not the correct caption, please correct.", /* control_details */
8062 &hardyard_get_ctrl_name
8063 };
8064
hardyard_get_ctrl_name(int type)8065 const char *hardyard_get_ctrl_name(int type)
8066 {
8067 switch(type)
8068 {
8069 case IPT_BUTTON1: return BTN1 "Pass / Jump";
8070 case IPT_BUTTON2: return BTN2 "Dive";
8071 } /* end of switch */
8072
8073 return joy4way_labels(type);
8074 }
8075
8076 const struct ControlInfo hattrick_ctrl =
8077 {
8078 false, /* 45_degree_rotation for joystick(s) */
8079 false, /* alternating_controls */
8080 true, /* mirrored_controls */
8081 "", /* control_details */
8082 &hattrick_get_ctrl_name
8083 };
8084
hattrick_get_ctrl_name(int type)8085 const char *hattrick_get_ctrl_name(int type)
8086 {
8087 switch(type)
8088 {
8089 case IPT_BUTTON1: return BTN1 "Shoot";
8090 } /* end of switch */
8091
8092 return joy4way_labels(type);
8093 }
8094
8095 const struct ControlInfo hcastle_ctrl =
8096 {
8097 false, /* 45_degree_rotation for joystick(s) */
8098 true, /* alternating_controls */
8099 true, /* mirrored_controls */
8100 "", /* control_details */
8101 &hcastle_get_ctrl_name
8102 };
8103
hcastle_get_ctrl_name(int type)8104 const char *hcastle_get_ctrl_name(int type)
8105 {
8106 switch(type)
8107 {
8108 case IPT_BUTTON1: return BTN1 "Attack";
8109 case IPT_BUTTON2: return BTN2 "Jump";
8110 } /* end of switch */
8111
8112 return joy4way_labels(type);
8113 }
8114
8115 const struct ControlInfo hbarrel_ctrl =
8116 {
8117 false, /* 45_degree_rotation for joystick(s) */
8118 false, /* alternating_controls */
8119 true, /* mirrored_controls */
8120 "This cpo actually didn't have any labels. The labels were obtained by the serivce manual.", /* control_details */
8121 &hbarrel_get_ctrl_name
8122 };
8123
hbarrel_get_ctrl_name(int type)8124 const char *hbarrel_get_ctrl_name(int type)
8125 {
8126 switch(type)
8127 {
8128 case IPT_BUTTON1: return BTN1 "Shoot";
8129 case IPT_BUTTON2: return BTN2 "Grenade";
8130 case IPT_DIAL: return "Rotate Left";
8131 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
8132 } /* end of switch */
8133
8134 return joy4way_labels(type);
8135 }
8136
8137 const struct ControlInfo hiimpact_ctrl =
8138 {
8139 false, /* 45_degree_rotation for joystick(s) */
8140 false, /* alternating_controls */
8141 true, /* mirrored_controls */
8142 "1 & 2 are the red team, players 3 & 4 are the blue team. If one person plays per team, he calls all the plays. If two people team up and play on the same team: On the offense, players 2 & 3 call the play and control that team's quarterback. On the defense, players 1 & 4 call the play. The action button does everything: pass, handoff, kick, punt, jump, select play. To kick or punt farther, you have to hit the action button quickly. References: CPO http://www.klov.com/game_detail.php?letter=H&game_id=8111", /* control_details */
8143 &hiimpact_get_ctrl_name
8144 };
8145
hiimpact_get_ctrl_name(int type)8146 const char *hiimpact_get_ctrl_name(int type)
8147 {
8148 switch(type)
8149 {
8150 case IPT_BUTTON1: return BTN1 "Action";
8151 } /* end of switch */
8152
8153 return joy4way_labels(type);
8154 }
8155
8156 const struct ControlInfo hippodrm_ctrl =
8157 {
8158 false, /* 45_degree_rotation for joystick(s) */
8159 false, /* alternating_controls */
8160 true, /* mirrored_controls */
8161 "Like all Dataeast games of the day, this game's cpo didn't have any labels. Instead it had a gameplay insert for the bezel.", /* control_details */
8162 &hippodrm_get_ctrl_name
8163 };
8164
hippodrm_get_ctrl_name(int type)8165 const char *hippodrm_get_ctrl_name(int type)
8166 {
8167 switch(type)
8168 {
8169 case IPT_BUTTON1: return BTN1 "Attack";
8170 case IPT_BUTTON2: return BTN2 "Jump";
8171 } /* end of switch */
8172
8173 return joy4way_labels(type);
8174 }
8175
8176 const struct ControlInfo hitme_ctrl =
8177 {
8178 false, /* 45_degree_rotation for joystick(s) */
8179 false, /* alternating_controls */
8180 true, /* mirrored_controls */
8181 "This game uses rather odd, non-arcade buttons.", /* control_details */
8182 &hitme_get_ctrl_name
8183 };
8184
hitme_get_ctrl_name(int type)8185 const char *hitme_get_ctrl_name(int type)
8186 {
8187 switch(type)
8188 {
8189 case IPT_BUTTON1: return BTN1 "Stand";
8190 case IPT_BUTTON2: return BTN2 "Hit";
8191 case IPT_BUTTON3: return BTN3 "Ante";
8192 } /* end of switch */
8193
8194 return "";
8195 }
8196
8197 const struct ControlInfo hitice_ctrl =
8198 {
8199 false, /* 45_degree_rotation for joystick(s) */
8200 false, /* alternating_controls */
8201 true, /* mirrored_controls */
8202 "This game can be converted to 2 player via a dip swtich. This game has an unused button emulated in mame. The inputs actually exists, it just doesn't do anything.", /* control_details */
8203 &hitice_get_ctrl_name
8204 };
8205
hitice_get_ctrl_name(int type)8206 const char *hitice_get_ctrl_name(int type)
8207 {
8208 switch(type)
8209 {
8210 case IPT_BUTTON1: return BTN1 "Shoot / Check";
8211 case IPT_BUTTON2: return BTN2 "Pass / Save";
8212 } /* end of switch */
8213
8214 return joy4way_labels(type);
8215 }
8216
8217 const struct ControlInfo holo_ctrl =
8218 {
8219 false, /* 45_degree_rotation for joystick(s) */
8220 false, /* alternating_controls */
8221 false, /* mirrored_controls */
8222 "It should be noted that this game doesn\'t have labels, as it is a conversion kit for the hologram (time traveler) cabinet.", /* control_details */
8223 &holo_get_ctrl_name
8224 };
8225
holo_get_ctrl_name(int type)8226 const char *holo_get_ctrl_name(int type)
8227 {
8228 switch(type)
8229 {
8230 case (IPT_BUTTON1 | IPF_PLAYER2): return "Quick Tricks";
8231 case (IPT_BUTTON2 | IPF_PLAYER2): return "Fierce Tricks";
8232 case (IPT_JOYSTICK_UP | IPF_PLAYER2): return "Jump";
8233 case (IPT_JOYSTICK_DOWN | IPF_PLAYER2): return "Crouch";
8234 case (IPT_JOYSTICK_LEFT | IPF_PLAYER2): return "Forward";
8235 case (IPT_JOYSTICK_RIGHT | IPF_PLAYER2): return "Backward / Defense";
8236 case IPT_BUTTON1: return BTN1 "Quick Tricks";
8237 case IPT_BUTTON2: return BTN2 "Fierce Tricks";
8238 case IPT_JOYSTICK_UP: return "Jump";
8239 case IPT_JOYSTICK_DOWN: return "Crouch";
8240 case IPT_JOYSTICK_LEFT: return "Backward / Defend";
8241 case IPT_JOYSTICK_RIGHT: return "Forward";
8242 } /* end of switch */
8243
8244 return "";
8245 }
8246
8247 const struct ControlInfo hotrod_ctrl =
8248 {
8249 false, /* 45_degree_rotation for joystick(s) */
8250 false, /* alternating_controls */
8251 true, /* mirrored_controls */
8252 "", /* control_details */
8253 &hotrod_get_ctrl_name
8254 };
8255
hotrod_get_ctrl_name(int type)8256 const char *hotrod_get_ctrl_name(int type)
8257 {
8258 switch(type)
8259 {
8260 case IPT_DIAL: return "Left";
8261 case (IPT_DIAL + IPT_EXTENSION): return "Right";
8262 case IPT_PEDAL: return "Accelerate";
8263 } /* end of switch */
8264
8265 return "";
8266 }
8267
8268 const struct ControlInfo hstennis_ctrl =
8269 {
8270 false, /* 45_degree_rotation for joystick(s) */
8271 false, /* alternating_controls */
8272 true, /* mirrored_controls */
8273 "Press both buttons to lob.", /* control_details */
8274 &hstennis_get_ctrl_name
8275 };
8276
hstennis_get_ctrl_name(int type)8277 const char *hstennis_get_ctrl_name(int type)
8278 {
8279 switch(type)
8280 {
8281 case IPT_BUTTON1: return BTN1 "Hard";
8282 case IPT_BUTTON2: return BTN2 "Soft";
8283 } /* end of switch */
8284
8285 return joy4way_labels(type);
8286 }
8287
8288 const struct ControlInfo hng64_ctrl =
8289 {
8290 false, /* 45_degree_rotation for joystick(s) */
8291 false, /* alternating_controls */
8292 true, /* mirrored_controls */
8293 "The Hyper Neo Geo 64 system was the next generation of the classic Neo Geo mvs system. This new system wasn't as popular and only had a few games released on it. They all used the same control layout and relied upon inserts to explain to the consumer what button was what. Also 99% of the games started with a 'How to Play' screen upon starting the game. Although these games don't work yet in MAME 0.141, the inputs are already hooked up, just like the original Neo Geo. It would be silly to think that these would be altered after the driver is in working order.", /* control_details */
8294 &hng64_get_ctrl_name
8295 };
8296
hng64_get_ctrl_name(int type)8297 const char *hng64_get_ctrl_name(int type)
8298 {
8299 switch(type)
8300 {
8301 case IPT_BUTTON1: return BTN1 "A";
8302 case IPT_BUTTON2: return BTN2 "B";
8303 case IPT_BUTTON3: return BTN3 "C";
8304 case IPT_BUTTON4: return BTN4 "D";
8305 } /* end of switch */
8306
8307 return joy4way_labels(type);
8308 }
8309
8310 const struct ControlInfo hyperspt_ctrl =
8311 {
8312 false, /* 45_degree_rotation for joystick(s) */
8313 false, /* alternating_controls */
8314 true, /* mirrored_controls */
8315 "This game is actually 4 players, but you alternate in teams of two.", /* control_details */
8316 &hyperspt_get_ctrl_name
8317 };
8318
hyperspt_get_ctrl_name(int type)8319 const char *hyperspt_get_ctrl_name(int type)
8320 {
8321 switch(type)
8322 {
8323 case IPT_BUTTON1: return BTN1 "Go (Left)";
8324 case IPT_BUTTON2: return BTN2 "Up";
8325 case IPT_BUTTON3: return BTN3 "Go (Right)";
8326 } /* end of switch */
8327
8328 return "";
8329 }
8330
8331 const struct ControlInfo irobot_ctrl =
8332 {
8333 false, /* 45_degree_rotation for joystick(s) */
8334 true, /* alternating_controls */
8335 true, /* mirrored_controls */
8336 "This had a funny looking CP. The joystick sat on a small panel, sticking out toward the player at about 45 degrees toward the player. The two fire buttons were mirrored, one on each side of the small panel, one panels of there own, angled sideways at about 30 degrees from vertical. The two start buttons were the Atari cones on their own panel above the small panel of the joystick. Mame has two seperate buttons emulated, but the second does not do anything. The test screen only lists one fire button, so it looks like the two physical fire buttons were wired together in the original game, connected to the PCBs as one. The original joystick was a Hall Effect joystick: an analog joystick that used magnetics to vary the resistance instead of the usual POT.", /* control_details */
8337 &irobot_get_ctrl_name
8338 };
8339
irobot_get_ctrl_name(int type)8340 const char *irobot_get_ctrl_name(int type)
8341 {
8342 switch(type)
8343 {
8344 case IPT_BUTTON1: return BTN1 "Fire";
8345 case IPT_BUTTON2: return BTN2 "Not used";
8346 case IPT_AD_STICK_X: return "Left";
8347 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
8348 case IPT_AD_STICK_Y: return "Up";
8349 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
8350 } /* end of switch */
8351
8352 return "";
8353 }
8354
8355 const struct ControlInfo ikari3_ctrl =
8356 {
8357 false, /* 45_degree_rotation for joystick(s) */
8358 false, /* alternating_controls */
8359 true, /* mirrored_controls */
8360 "Uses an LS-30 joystick.", /* control_details */
8361 &ikari3_get_ctrl_name
8362 };
8363
ikari3_get_ctrl_name(int type)8364 const char *ikari3_get_ctrl_name(int type)
8365 {
8366 switch(type)
8367 {
8368 case IPT_BUTTON1: return BTN1 "Kick";
8369 case IPT_BUTTON2: return BTN2 "Punch";
8370 case IPT_BUTTON3: return BTN3 "Jump";
8371 case IPT_DIAL: return "Rotate Left";
8372 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
8373 } /* end of switch */
8374
8375 return joy4way_labels(type);
8376 }
8377
8378 const struct ControlInfo ikari_ctrl =
8379 {
8380 false, /* 45_degree_rotation for joystick(s) */
8381 false, /* alternating_controls */
8382 true, /* mirrored_controls */
8383 "Uses an LS-30 joystick.", /* control_details */
8384 &ikari_get_ctrl_name
8385 };
8386
ikari_get_ctrl_name(int type)8387 const char *ikari_get_ctrl_name(int type)
8388 {
8389 switch(type)
8390 {
8391 case IPT_BUTTON1: return BTN1 "Gun";
8392 case IPT_BUTTON2: return BTN2 "Grenade";
8393 case IPT_DIAL: return "Rotate Left";
8394 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
8395 } /* end of switch */
8396
8397 return joy4way_labels(type);
8398 }
8399
8400 const struct ControlInfo indytemp_ctrl =
8401 {
8402 false, /* 45_degree_rotation for joystick(s) */
8403 true, /* alternating_controls */
8404 true, /* mirrored_controls */
8405 "Like some other Atari games, such as Road Runner & Peter Packrat, the player start buttons double as the action buttons. The original game has the Whip button mirrored on both sides of the joystick. The left side Whip button is also 1 player start button /* control_details */ mame emulates this as two buttons, button1 and start1. The right side Whip button is also the 2 players start button; mame emulates this as only the 'start2' button, even though pressing mame's start2 button also whips the whip. Also, the buttons are used to select the number of lives the player has: the right selects the normal 3 lives (1 credit), the left selects 7 lives (for 2 credits).", /* control_details */
8406 &indytemp_get_ctrl_name
8407 };
8408
indytemp_get_ctrl_name(int type)8409 const char *indytemp_get_ctrl_name(int type)
8410 {
8411 switch(type)
8412 {
8413 case IPT_BUTTON1: return BTN1 "Whip";
8414 } /* end of switch */
8415
8416 return joy4way_labels(type);
8417 }
8418
8419 const struct ControlInfo inferno_ctrl =
8420 {
8421 true, /* 45_degree_rotation for joystick(s) */
8422 false, /* alternating_controls */
8423 true, /* mirrored_controls */
8424 "The game uses a 4 way ball-top and a 4-way trigger stick. Both are rotated on a 45 degree angle al-la Q*Bert. The 'fire' stick doesn't actually shoot, rather it aims your gun. The fire button must be used to actually fire.", /* control_details */
8425 &inferno_get_ctrl_name
8426 };
8427
inferno_get_ctrl_name(int type)8428 const char *inferno_get_ctrl_name(int type)
8429 {
8430 if(!options.restrict_4_way)
8431 {
8432 switch(type)
8433 {
8434 case IPT_JOYSTICKLEFT_UP: return "Move Up+Right";
8435 case IPT_JOYSTICKLEFT_DOWN: return "Move Down+Left";
8436 case IPT_JOYSTICKLEFT_LEFT: return "Move Left+Up";
8437 case IPT_JOYSTICKLEFT_RIGHT: return "Move Right+Down";
8438 case IPT_JOYSTICKRIGHT_UP: return "Fire Up+Right";
8439 case IPT_JOYSTICKRIGHT_DOWN: return "Fire Down+Left";
8440 case IPT_JOYSTICKRIGHT_LEFT: return "Fire Left+Up";
8441 case IPT_JOYSTICKRIGHT_RIGHT: return "Fire Right+Down";
8442 } /* end of switch */
8443 }
8444 else { /* controls are effectively rotated, so using the diagonal names would be confusing */
8445 switch(type)
8446 {
8447 case IPT_JOYSTICKLEFT_UP: return "Up";
8448 case IPT_JOYSTICKLEFT_DOWN: return "Down";
8449 case IPT_JOYSTICKLEFT_LEFT: return "Left";
8450 case IPT_JOYSTICKLEFT_RIGHT: return "Right";
8451 case IPT_JOYSTICKRIGHT_UP: return "Fire Up";
8452 case IPT_JOYSTICKRIGHT_DOWN: return "Fire Down";
8453 case IPT_JOYSTICKRIGHT_LEFT: return "Fire Left";
8454 case IPT_JOYSTICKRIGHT_RIGHT: return "Fire Right";
8455 }
8456 }
8457 switch(type)
8458 {
8459 case IPT_BUTTON1: return BTN1 "Fire";
8460 }
8461 return "";
8462 }
8463
8464 const struct ControlInfo invrvnge_ctrl =
8465 {
8466 false, /* 45_degree_rotation for joystick(s) */
8467 true, /* alternating_controls */
8468 true, /* mirrored_controls */
8469 "", /* control_details */
8470 &invrvnge_get_ctrl_name
8471 };
8472
invrvnge_get_ctrl_name(int type)8473 const char *invrvnge_get_ctrl_name(int type)
8474 {
8475 switch(type)
8476 {
8477 case IPT_BUTTON1: return BTN1 "Fire";
8478 case IPT_JOYSTICK_LEFT: return "Move Left";
8479 case IPT_JOYSTICK_RIGHT: return "Move Right";
8480 } /* end of switch */
8481
8482 return "";
8483 }
8484
8485 const struct ControlInfo invho2_ctrl =
8486 {
8487 false, /* 45_degree_rotation for joystick(s) */
8488 true, /* alternating_controls */
8489 true, /* mirrored_controls */
8490 "This is a two in one cabinet with two games in it. The control panel is split in half.... on the left is two directional buttons (Left,Right) and a button (Fire). These inputs are actually wired to the controls on the right side of the panel. These controls are a 4 way jostick and a button (gas). This seems like a huge waste of control space, but I suppose at the time, generic panels seemed silly.", /* control_details */
8491 &invho2_get_ctrl_name
8492 };
8493
invho2_get_ctrl_name(int type)8494 const char *invho2_get_ctrl_name(int type)
8495 {
8496 switch(type)
8497 {
8498 case IPT_BUTTON1: return BTN1 "Fire / Gas";
8499 } /* end of switch */
8500
8501 return joy4way_labels(type);
8502 }
8503
8504 const struct ControlInfo offroad_ctrl =
8505 {
8506 false, /* 45_degree_rotation for joystick(s) */
8507 false, /* alternating_controls */
8508 true, /* mirrored_controls */
8509 "There are no Start buttons /* control_details */ the Nitro buttons double as the Start buttons. You also use the the Nitro buttons to select improvements on your car. 'Player 1' is the Red car, 'Player 2' is the Yellow car, 'Player 3' is the Blue car. The game refers the players as 'Red Player', 'Yellow Player', 'Blue Player', not 'Player 1', etc. There are also two player cabs of this game, but all they did was remove the Yellow car's inputs, including the coin inputs. There are no dipswitches to change. So on these cabs, the 'second player' is the blue car, but all the inputs are connected to what is still 'Player 3' in mame. To eneter service mode, hold down Blue Nitro button and press service button. The menus are scrolled down by pressing the Red Nitro button, and selected by pressing the Blue Nitro button.", /* control_details */
8510 &offroad_get_ctrl_name
8511 };
8512
offroad_get_ctrl_name(int type)8513 const char *offroad_get_ctrl_name(int type)
8514 {
8515 switch(type)
8516 {
8517 case IPT_BUTTON1: return BTN1 "Nitro / Start";
8518 case (IPT_DIAL + IPT_EXTENSION): return "Right";
8519 case IPT_DIAL: return "Left";
8520 case IPT_PEDAL: return "Accelerate";
8521 } /* end of switch */
8522
8523 return "";
8524 }
8525
8526 const struct ControlInfo offroadt_ctrl =
8527 {
8528 false, /* 45_degree_rotation for joystick(s) */
8529 false, /* alternating_controls */
8530 true, /* mirrored_controls */
8531 "There are no Start buttons /* control_details */ the Nitro buttons double as the Start buttons. You also use the the Nitro buttons to select improvements on your car. There are two Nitro buttons for each player, mirrored on each side of the steering wheel, but they are wired together as one button in the harness. 'Player 1' is the Red car or 'Red Player', 'Player 2' is the Yellow car or 'Yellow Player', and 'Player 3' is the Blue car or 'Blue Player'. The game and manual refer to the players with their color, not a number. Might be because of next point. There are also two player cabs of this game, but all they did was remove the Yellow car's inputs, including the coin inputs. There are no dipswitches to change. So on these cabs, the 'second player' is the blue car, but all the inputs are connected to what is still 'Player 3' in mame. This was usually done not because of blue being a more popular color, but the arcade operators need the blue nitro button to change game settings. To eneter service mode, hold down Blue Nitro button and press service button. The menus are scrolled down by pressing the Red Nitro button, and selected by pressing the Blue Nitro button. This is basically the same as the original Ironman Ivan Stewart's Super Off Road. However, it has new tracks, and the players can choose between driving a dune buggy or the original truck. The control is exactly the same.", /* control_details */
8532 &offroadt_get_ctrl_name
8533 };
8534
offroadt_get_ctrl_name(int type)8535 const char *offroadt_get_ctrl_name(int type)
8536 {
8537 switch(type)
8538 {
8539 case IPT_BUTTON1: return BTN1 "Nitro / Start";
8540 case IPT_DIAL: return "Left";
8541 case (IPT_DIAL + IPT_EXTENSION): return "Right";
8542 case IPT_PEDAL: return "On";
8543 } /* end of switch */
8544
8545 return "";
8546 }
8547
8548 const struct ControlInfo jackal_ctrl =
8549 {
8550 false, /* 45_degree_rotation for joystick(s) */
8551 false, /* alternating_controls */
8552 true, /* mirrored_controls */
8553 "", /* control_details */
8554 &jackal_get_ctrl_name
8555 };
8556
jackal_get_ctrl_name(int type)8557 const char *jackal_get_ctrl_name(int type)
8558 {
8559 switch(type)
8560 {
8561 case IPT_BUTTON1: return BTN1 "Machine Gun";
8562 case IPT_BUTTON2: return BTN2 "Hand Grenade";
8563 } /* end of switch */
8564
8565 return joy4way_labels(type);
8566 }
8567
8568 const struct ControlInfo jailbrek_ctrl =
8569 {
8570 false, /* 45_degree_rotation for joystick(s) */
8571 true, /* alternating_controls */
8572 true, /* mirrored_controls */
8573 "", /* control_details */
8574 &jailbrek_get_ctrl_name
8575 };
8576
jailbrek_get_ctrl_name(int type)8577 const char *jailbrek_get_ctrl_name(int type)
8578 {
8579 switch(type)
8580 {
8581 case IPT_BUTTON1: return BTN1 "Shoot";
8582 case IPT_BUTTON2: return BTN2 "Select";
8583 } /* end of switch */
8584
8585 return joy4way_labels(type);
8586 }
8587
8588 #if 0
8589 const struct ControlInfo teamqb_ctrl =
8590 {
8591 false, /* 45_degree_rotation for joystick(s) */
8592 false, /* alternating_controls */
8593 false, /* mirrored_controls */
8594 "The start button is labeled 'Join'. Player 1 is 'left QB', player 2 is 'left HB', and are on the same team. Player 3 is 'right QB', player 4 is 'right HB', and are on the same team. The CP has the players from left to right: LHB, LQB, RQB, RHB, or if you go by numbers, 2, 1, 3, 4. Only the quarterbacks have springsticks (to control throwing & kicking), but all players have a normal 8-way stick to control the player's movements. The action button does different things, depending on what the 8 way stick is doing. Since the 2 & 4 players don't have a spring stick, they often have the action button mirrored on both sides of the joystick. The analog joystick 'springsticks' were held all the way up by the spring, with free movement sideways. The farther back you pulled the springstick, the farther/faster you would throw or kick the ball when you released the stick. The label 'short' is positioned just below the springstick, below which is 'long'. Along with the words, part of the label is a fat pointed line or arrow, pointing down away from the springstick.", /* control_details */
8595 &teamqb_get_ctrl_name
8596 };
8597
8598 const char *teamqb_get_ctrl_name(int type)
8599 {
8600 switch(type)
8601 {
8602 case (IPT_OSD_DESCRIPTION | IPF_PLAYER4): return "8-way Joystick+joy8way";
8603 case (IPT_BUTTON1 | IPF_PLAYER4): return "Action";
8604 case (IPT_BUTTON1 | IPF_PLAYER3): return "Action";
8605 case (IPT_JOYSTICK_UP | IPF_PLAYER3): return "Up";
8606 case (IPT_JOYSTICK_DOWN | IPF_PLAYER3): return "Down";
8607 case (IPT_JOYSTICK_LEFT | IPF_PLAYER3): return "Left";
8608 case (IPT_JOYSTICK_RIGHT | IPF_PLAYER3): return "Right";
8609 case (IPT_AD_STICK_X | IPF_PLAYER3): return "Aim Left";
8610 case ((IPT_AD_STICK_X + IPT_EXTENSION) | IPF_PLAYER3): return "Aim Right"
8611 case (IPT_AD_STICK_Y | IPF_PLAYER3): return "Throw / Kick"
8612 case ((IPT_AD_STICK_Y + IPT_EXTENSION) | IPF_PLAYER3): return "Short / Long";
8613 case (IPT_BUTTON1 | IPF_PLAYER2): return "Action";
8614 case (IPT_JOYSTICK_UP | IPF_PLAYER2): return "Up";
8615 case (IPT_JOYSTICK_DOWN | IPF_PLAYER2): return "Down";
8616 case (IPT_JOYSTICK_LEFT | IPF_PLAYER2): return "Left";
8617 case (IPT_JOYSTICK_RIGHT | IPF_PLAYER2): return "Right";
8618 case IPT_BUTTON1: return BTN1 "Action";
8619 case IPT_JOYSTICK_UP: return "Up";
8620 case IPT_JOYSTICK_DOWN: return "Down";
8621 case IPT_JOYSTICK_LEFT: return "Left";
8622 case IPT_JOYSTICK_RIGHT: return "Right";
8623 case IPT_AD_STICK_X: return "Aim Left";
8624 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Aim Right";
8625 case IPT_AD_STICK_Y: return "Throw / Kick";
8626 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Short / Long";
8627 /* case (IPT_JOYSTICK_UP | IPF_PLAYER0): return "Up";
8628 case (IPT_JOYSTICK_DOWN | IPF_PLAYER0): return "Down";
8629 case (IPT_JOYSTICK_LEFT | IPF_PLAYER0): return "Left";
8630 case (IPT_JOYSTICK_RIGHT | IPF_PLAYER0): return "Right";*/
8631 } /* end of switch */
8632
8633 return "";
8634 }
8635 #endif
8636
8637 const struct ControlInfo journey_ctrl =
8638 {
8639 false, /* 45_degree_rotation for joystick(s) */
8640 true, /* alternating_controls */
8641 true, /* mirrored_controls */
8642 "This is five games in one, plus a bonus level. The five games all center around a musician (from the band Journey) getting to his instrument, and then getting back to the spaceship. The blast button is not used until the player retrieves his musical instrument. The blast button is mirrored on both sides of the centered joystick.", /* control_details */
8643 &journey_get_ctrl_name
8644 };
8645
journey_get_ctrl_name(int type)8646 const char *journey_get_ctrl_name(int type)
8647 {
8648 switch(type)
8649 {
8650 case IPT_BUTTON1: return BTN1 "Blast";
8651 } /* end of switch */
8652
8653 return joy4way_labels(type);
8654 }
8655
8656 const struct ControlInfo joust_ctrl =
8657 {
8658 false, /* 45_degree_rotation for joystick(s) */
8659 false, /* alternating_controls */
8660 true, /* mirrored_controls */
8661 "", /* control_details */
8662 &joust_get_ctrl_name
8663 };
8664
joust_get_ctrl_name(int type)8665 const char *joust_get_ctrl_name(int type)
8666 {
8667 switch(type)
8668 {
8669 case IPT_BUTTON1: return BTN1 "Flap";
8670 } /* end of switch */
8671
8672 return joy2way_labels(type);
8673 }
8674
8675 const struct ControlInfo joust2_ctrl =
8676 {
8677 false, /* 45_degree_rotation for joystick(s) */
8678 false, /* alternating_controls */
8679 false, /* mirrored_controls */
8680 "", /* control_details */
8681 &joust2_get_ctrl_name
8682 };
8683
joust2_get_ctrl_name(int type)8684 const char *joust2_get_ctrl_name(int type)
8685 {
8686 switch(type)
8687 {
8688 case (IPT_BUTTON1 | IPF_PLAYER2): return "Flap";
8689 case (IPT_BUTTON2 | IPF_PLAYER2): return "Start Player 2 / Transform";
8690 case (IPT_JOYSTICK_LEFT | IPF_PLAYER2): return "Left";
8691 case (IPT_JOYSTICK_RIGHT | IPF_PLAYER2): return "Right";
8692 case IPT_BUTTON1: return BTN1 "Flap";
8693 case IPT_BUTTON2: return BTN2 "Start Player 1 / Transform";
8694 } /* end of switch */
8695
8696 return joy2way_labels(type);
8697 }
8698
8699 const struct ControlInfo joyfulr_ctrl =
8700 {
8701 false, /* 45_degree_rotation for joystick(s) */
8702 true, /* alternating_controls */
8703 true, /* mirrored_controls */
8704 "The original cpo simply had the two joysticks labeled 'car control' and 'hand control' respectively. It may not be apparent from playing, but the goal of this game is to navigate the car with the left stick, while grabbing things with the right.", /* control_details */
8705 &joyfulr_get_ctrl_name
8706 };
8707
joyfulr_get_ctrl_name(int type)8708 const char *joyfulr_get_ctrl_name(int type)
8709 {
8710 switch(type)
8711 {
8712 case IPT_JOYSTICKLEFT_UP: return "Car Up";
8713 case IPT_JOYSTICKLEFT_DOWN: return "Car Down";
8714 case IPT_JOYSTICKLEFT_LEFT: return "Car Left";
8715 case IPT_JOYSTICKLEFT_RIGHT: return "Car Right";
8716 case IPT_JOYSTICKRIGHT_UP: return "Hand Up";
8717 case IPT_JOYSTICKRIGHT_DOWN: return "Hand Down";
8718 case IPT_JOYSTICKRIGHT_LEFT: return "Hand Left";
8719 case IPT_JOYSTICKRIGHT_RIGHT: return "Hand Right";
8720 } /* end of switch */
8721
8722 return "";
8723 }
8724
8725 const struct ControlInfo jrpacman_ctrl =
8726 {
8727 false, /* 45_degree_rotation for joystick(s) */
8728 true, /* alternating_controls */
8729 true, /* mirrored_controls */
8730 "", /* control_details */
8731 &jrpacman_get_ctrl_name
8732 };
8733
jrpacman_get_ctrl_name(int type)8734 const char *jrpacman_get_ctrl_name(int type)
8735 {
8736 return joy4way_labels(type);
8737 }
8738
8739 const struct ControlInfo jumpbug_ctrl =
8740 {
8741 false, /* 45_degree_rotation for joystick(s) */
8742 true, /* alternating_controls */
8743 true, /* mirrored_controls */
8744 "", /* control_details */
8745 &jumpbug_get_ctrl_name
8746 };
8747
jumpbug_get_ctrl_name(int type)8748 const char *jumpbug_get_ctrl_name(int type)
8749 {
8750 switch(type)
8751 {
8752 case IPT_BUTTON1: return BTN1 "Fire";
8753 } /* end of switch */
8754
8755 return joy4way_labels(type);
8756 }
8757
8758 const struct ControlInfo junglek_ctrl =
8759 {
8760 false, /* 45_degree_rotation for joystick(s) */
8761 true, /* alternating_controls */
8762 true, /* mirrored_controls */
8763 "", /* control_details */
8764 &junglek_get_ctrl_name
8765 };
8766
junglek_get_ctrl_name(int type)8767 const char *junglek_get_ctrl_name(int type)
8768 {
8769 switch(type)
8770 {
8771 case IPT_BUTTON1: return BTN1 "Jump / Knife";
8772 } /* end of switch */
8773
8774 return joy4way_labels(type);
8775 }
8776
8777 const struct ControlInfo jungler_ctrl =
8778 {
8779 false, /* 45_degree_rotation for joystick(s) */
8780 true, /* alternating_controls */
8781 true, /* mirrored_controls */
8782 "", /* control_details */
8783 &jungler_get_ctrl_name
8784 };
8785
jungler_get_ctrl_name(int type)8786 const char *jungler_get_ctrl_name(int type)
8787 {
8788 switch(type)
8789 {
8790 case IPT_BUTTON1: return BTN1 "Fire";
8791 } /* end of switch */
8792
8793 return joy4way_labels(type);
8794 }
8795
8796 const struct ControlInfo jpark_ctrl =
8797 {
8798 false, /* 45_degree_rotation for joystick(s) */
8799 false, /* alternating_controls */
8800 true, /* mirrored_controls */
8801 "Although the control is definately a gun, the physical control looks nothing like a gun. It looks like a pistol-grip analog stick.", /* control_details */
8802 &jpark_get_ctrl_name
8803 };
8804
jpark_get_ctrl_name(int type)8805 const char *jpark_get_ctrl_name(int type)
8806 {
8807 switch(type)
8808 {
8809 case IPT_BUTTON1: return BTN1 "Fire";
8810 case IPT_LIGHTGUN_X: return "Left";
8811 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
8812 case IPT_LIGHTGUN_Y: return "Up";
8813 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
8814 } /* end of switch */
8815
8816 return "";
8817 }
8818
8819 const struct ControlInfo kageki_ctrl =
8820 {
8821 false, /* 45_degree_rotation for joystick(s) */
8822 false, /* alternating_controls */
8823 true, /* mirrored_controls */
8824 "", /* control_details */
8825 &kageki_get_ctrl_name
8826 };
8827
kageki_get_ctrl_name(int type)8828 const char *kageki_get_ctrl_name(int type)
8829 {
8830 switch(type)
8831 {
8832 case IPT_BUTTON1: return BTN1 "Jab";
8833 case IPT_BUTTON2: return BTN2 "Punch";
8834 } /* end of switch */
8835
8836 return joy4way_labels(type);
8837 }
8838
8839 const struct ControlInfo kangaroo_ctrl =
8840 {
8841 false, /* 45_degree_rotation for joystick(s) */
8842 true, /* alternating_controls */
8843 true, /* mirrored_controls */
8844 "Diagonals were labelled 'Super Leap'.", /* control_details */
8845 &kangaroo_get_ctrl_name
8846 };
8847
kangaroo_get_ctrl_name(int type)8848 const char *kangaroo_get_ctrl_name(int type)
8849 {
8850 switch(type)
8851 {
8852 case IPT_BUTTON1: return BTN1 "Punch";
8853 } /* end of switch */
8854
8855 return joy4way_labels(type);
8856 }
8857
8858 const struct ControlInfo kaos_ctrl =
8859 {
8860 false, /* 45_degree_rotation for joystick(s) */
8861 true, /* alternating_controls */
8862 true, /* mirrored_controls */
8863 "Panel had symmetric layout with a jump button either side of the joy, but wired back to the same input.", /* control_details */
8864 &kaos_get_ctrl_name
8865 };
8866
kaos_get_ctrl_name(int type)8867 const char *kaos_get_ctrl_name(int type)
8868 {
8869 switch(type)
8870 {
8871 case IPT_BUTTON1: return BTN1 "Jump";
8872 case IPT_BUTTON2: return BTN2 "??";
8873 case IPT_BUTTON3: return BTN3 "??";
8874 } /* end of switch */
8875
8876 return joy2way_labels(type);
8877 }
8878
8879 const struct ControlInfo kchamp_ctrl =
8880 {
8881 false, /* 45_degree_rotation for joystick(s) */
8882 false, /* alternating_controls */
8883 true, /* mirrored_controls */
8884 "This game is the very first \'street fighter\' style game. The controls on it are a tad odd. Instead of a joystick and an array of buttons, you have two joysticks. These joysticks don\'t have any labels and merely have arrow directions printed on the overlay. The left joystick controls movement while the right determines the type of attack. Different attack directions while in different positions perform different moves. Luckily, the game tutors you on moves during the first round. It should be noted that this game comes in one and two player versions.", /* control_details */
8885 &kchamp_get_ctrl_name
8886 };
8887
kchamp_get_ctrl_name(int type)8888 const char *kchamp_get_ctrl_name(int type)
8889 {
8890 switch(type)
8891 {
8892 case IPT_JOYSTICKLEFT_UP: return "Up";
8893 case IPT_JOYSTICKLEFT_DOWN: return "Down";
8894 case IPT_JOYSTICKLEFT_LEFT: return "Left";
8895 case IPT_JOYSTICKLEFT_RIGHT: return "Right";
8896 case IPT_JOYSTICKRIGHT_UP: return "Attack Up";
8897 case IPT_JOYSTICKRIGHT_DOWN: return "Attack Down";
8898 case IPT_JOYSTICKRIGHT_LEFT: return "Attack Left";
8899 case IPT_JOYSTICKRIGHT_RIGHT: return "Attack Right";
8900 } /* end of switch */
8901
8902 return "";
8903 }
8904
8905 const struct ControlInfo karnov_ctrl =
8906 {
8907 false, /* 45_degree_rotation for joystick(s) */
8908 true, /* alternating_controls */
8909 true, /* mirrored_controls */
8910 "The option button actives whatever items you have collected.", /* control_details */
8911 &karnov_get_ctrl_name
8912 };
8913
karnov_get_ctrl_name(int type)8914 const char *karnov_get_ctrl_name(int type)
8915 {
8916 switch(type)
8917 {
8918 case IPT_BUTTON1: return BTN1 "Fire";
8919 case IPT_BUTTON2: return BTN2 "Jump";
8920 case IPT_BUTTON3: return BTN3 "Option";
8921 } /* end of switch */
8922
8923 return joy4way_labels(type);
8924 }
8925
8926 const struct ControlInfo kick_ctrl =
8927 {
8928 false, /* 45_degree_rotation for joystick(s) */
8929 true, /* alternating_controls */
8930 true, /* mirrored_controls */
8931 "Teh roller on this game is made from a trackball ball, but this is not uncommon.", /* control_details */
8932 &kick_get_ctrl_name
8933 };
8934
kick_get_ctrl_name(int type)8935 const char *kick_get_ctrl_name(int type)
8936 {
8937 switch(type)
8938 {
8939 case IPT_BUTTON1: return BTN1 "Press to Kick";
8940 case IPT_DIAL: return "Left";
8941 case (IPT_DIAL + IPT_EXTENSION): return "Right";
8942 } /* end of switch */
8943
8944 return "";
8945 }
8946
8947 const struct ControlInfo kicker_ctrl =
8948 {
8949 false, /* 45_degree_rotation for joystick(s) */
8950 true, /* alternating_controls */
8951 true, /* mirrored_controls */
8952 "Game used dipswitch for single or dual control layout, still alternating play. Mame uses single control layout.", /* control_details */
8953 &kicker_get_ctrl_name
8954 };
8955
kicker_get_ctrl_name(int type)8956 const char *kicker_get_ctrl_name(int type)
8957 {
8958 switch(type)
8959 {
8960 case IPT_BUTTON1: return BTN1 "Kick";
8961 case IPT_BUTTON2: return BTN2 "Jump";
8962 } /* end of switch */
8963
8964 return joy4way_labels(type);
8965 }
8966
8967 const struct ControlInfo killcom_ctrl =
8968 {
8969 false, /* 45_degree_rotation for joystick(s) */
8970 true, /* alternating_controls */
8971 true, /* mirrored_controls */
8972 "The buttons actually have a global label 'laser fire' and each individual button has a sub label of 'up,' 'down,' and 'left.'", /* control_details */
8973 &killcom_get_ctrl_name
8974 };
8975
killcom_get_ctrl_name(int type)8976 const char *killcom_get_ctrl_name(int type)
8977 {
8978 switch(type)
8979 {
8980 case IPT_BUTTON1: return BTN1 "Fire Left";
8981 case IPT_BUTTON2: return BTN2 "Fire Up";
8982 case IPT_BUTTON3: return BTN3 "Fire Right";
8983 case IPT_BUTTON4: return BTN4 "Hyperspace";
8984 } /* end of switch */
8985
8986 return joy4way_labels(type);
8987 }
8988
8989 const struct ControlInfo kinst_ctrl =
8990 {
8991 false, /* 45_degree_rotation for joystick(s) */
8992 false, /* alternating_controls */
8993 true, /* mirrored_controls */
8994 "", /* control_details */
8995 &kinst_get_ctrl_name
8996 };
8997
kinst_get_ctrl_name(int type)8998 const char *kinst_get_ctrl_name(int type)
8999 {
9000 switch(type)
9001 {
9002 case IPT_BUTTON1: return BTN1 "Quick (High Attack)";
9003 case IPT_BUTTON2: return BTN2 "Medium (High Attack)";
9004 case IPT_BUTTON3: return BTN3 "Fierce (High Attack)";
9005 case IPT_BUTTON4: return BTN4 "Quick (Low Attack)";
9006 case IPT_BUTTON5: return BTN5 "Medium (Low Attack)";
9007 case IPT_BUTTON6: return BTN6 "Fierce (Low Attack)";
9008 case IPT_JOYSTICK_UP: return "Jump";
9009 case IPT_JOYSTICK_DOWN: return "Duck";
9010 case IPT_JOYSTICK_LEFT: return "Move Left";
9011 case IPT_JOYSTICK_RIGHT: return "Move Right";
9012 } /* end of switch */
9013
9014 return "";
9015 }
9016
9017 const struct ControlInfo kinst2_ctrl =
9018 {
9019 false, /* 45_degree_rotation for joystick(s) */
9020 false, /* alternating_controls */
9021 true, /* mirrored_controls */
9022 "", /* control_details */
9023 &kinst2_get_ctrl_name
9024 };
9025
kinst2_get_ctrl_name(int type)9026 const char *kinst2_get_ctrl_name(int type)
9027 {
9028 switch(type)
9029 {
9030 case IPT_BUTTON1: return BTN1 "Quick (High Attack)";
9031 case IPT_BUTTON2: return BTN2 "Medium (High Attack)";
9032 case IPT_BUTTON3: return BTN3 "Fierce (High Attack)";
9033 case IPT_BUTTON4: return BTN4 "Quick (Low Attack)";
9034 case IPT_BUTTON5: return BTN5 "Medium (Low Attack)";
9035 case IPT_BUTTON6: return BTN6 "Fierce (Low Attack)";
9036 case IPT_JOYSTICK_UP: return "Jump";
9037 case IPT_JOYSTICK_DOWN: return "Duck";
9038 case IPT_JOYSTICK_LEFT: return "Move Left";
9039 case IPT_JOYSTICK_RIGHT: return "Move Right";
9040 } /* end of switch */
9041
9042 return "";
9043 }
9044
9045 const struct ControlInfo kingball_ctrl =
9046 {
9047 false, /* 45_degree_rotation for joystick(s) */
9048 true, /* alternating_controls */
9049 true, /* mirrored_controls */
9050 "Galaga-like game, except you can be hit without lose a life! Instead, you lose a life when the king you\'re protecting is lifted all the way to the top.", /* control_details */
9051 &kingball_get_ctrl_name
9052 };
9053
kingball_get_ctrl_name(int type)9054 const char *kingball_get_ctrl_name(int type)
9055 {
9056 switch(type)
9057 {
9058 case IPT_BUTTON1: return BTN1 "Fire";
9059 } /* end of switch */
9060
9061 return joy2way_labels(type);
9062 }
9063
9064 const struct ControlInfo kingofb_ctrl =
9065 {
9066 false, /* 45_degree_rotation for joystick(s) */
9067 false, /* alternating_controls */
9068 true, /* mirrored_controls */
9069 "This game lacks any labels, even in the manual. The labels reflect the function.", /* control_details */
9070 &kingofb_get_ctrl_name
9071 };
9072
kingofb_get_ctrl_name(int type)9073 const char *kingofb_get_ctrl_name(int type)
9074 {
9075 switch(type)
9076 {
9077 case IPT_BUTTON1: return BTN1 "Punch";
9078 case IPT_BUTTON2: return BTN2 "Uppercut";
9079 } /* end of switch */
9080
9081 return joy4way_labels(type);
9082 }
9083
9084 const struct ControlInfo klax_ctrl =
9085 {
9086 false, /* 45_degree_rotation for joystick(s) */
9087 false, /* alternating_controls */
9088 true, /* mirrored_controls */
9089 "", /* control_details */
9090 &klax_get_ctrl_name
9091 };
9092
klax_get_ctrl_name(int type)9093 const char *klax_get_ctrl_name(int type)
9094 {
9095 switch(type)
9096 {
9097 case IPT_BUTTON1: return BTN1 "Start / Flip";
9098 } /* end of switch */
9099
9100 return joy4way_labels(type);
9101 }
9102
9103 const struct ControlInfo knights_ctrl =
9104 {
9105 false, /* 45_degree_rotation for joystick(s) */
9106 false, /* alternating_controls */
9107 true, /* mirrored_controls */
9108 "", /* control_details */
9109 &knights_get_ctrl_name
9110 };
9111
knights_get_ctrl_name(int type)9112 const char *knights_get_ctrl_name(int type)
9113 {
9114 switch(type)
9115 {
9116 case IPT_BUTTON1: return BTN1 "Attack";
9117 case IPT_BUTTON2: return BTN2 "Jump";
9118 } /* end of switch */
9119
9120 return joy4way_labels(type);
9121 }
9122
9123 const struct ControlInfo konamigt_ctrl =
9124 {
9125 false, /* 45_degree_rotation for joystick(s) */
9126 false, /* alternating_controls */
9127 false, /* mirrored_controls */
9128 "", /* control_details */
9129 &konamigt_get_ctrl_name
9130 };
9131
konamigt_get_ctrl_name(int type)9132 const char *konamigt_get_ctrl_name(int type)
9133 {
9134 switch(type)
9135 {
9136 case IPT_BUTTON1: return BTN1 "Accelerate";
9137 case IPT_BUTTON2: return BTN2 "Brake";
9138 case IPT_BUTTON3: return BTN3 "High / Low";
9139 case IPT_DIAL: return "Left";
9140 case (IPT_DIAL + IPT_EXTENSION): return "Right";
9141 } /* end of switch */
9142
9143 return "";
9144 }
9145
9146 const struct ControlInfo kroozr_ctrl =
9147 {
9148 false, /* 45_degree_rotation for joystick(s) */
9149 true, /* alternating_controls */
9150 true, /* mirrored_controls */
9151 "OTHER: Mame's driver (incorrectly) emulates this as an 8way trigger stick (so I included that). However, the real game used an analog trigger joystick (so I put other). The A/D circuit in part of the joystick assembly, instead of on the main PCB or daughter board like most analog joysticks /* control_details */ and the connection had 8 pins per axis. The joystick handle looked a lot like (if not exactly the same as) a tron handle. The spinner was also a push down button, much like a Forgotten Worlds spinner.", /* control_details */
9152 &kroozr_get_ctrl_name
9153 };
9154
kroozr_get_ctrl_name(int type)9155 const char *kroozr_get_ctrl_name(int type)
9156 {
9157 switch(type)
9158 {
9159 case IPT_BUTTON1: return BTN1 "Zap!";
9160 case IPT_BUTTON2: return BTN2 "Shield";
9161 case IPT_JOYSTICK_UP: return "Krooz Up";
9162 case IPT_JOYSTICK_DOWN: return "Krooz Down";
9163 case IPT_JOYSTICK_LEFT: return "Krooz Left";
9164 case IPT_JOYSTICK_RIGHT: return "Krooz Right";
9165 case IPT_DIAL: return "Aim Left";
9166 case (IPT_DIAL + IPT_EXTENSION): return "Aim Right";
9167 } /* end of switch */
9168
9169 return "";
9170 }
9171
9172 const struct ControlInfo kram_ctrl =
9173 {
9174 false, /* 45_degree_rotation for joystick(s) */
9175 true, /* alternating_controls */
9176 true, /* mirrored_controls */
9177 "The joystick is labeled 'Kram Kontrol'", /* control_details */
9178 &kram_get_ctrl_name
9179 };
9180
kram_get_ctrl_name(int type)9181 const char *kram_get_ctrl_name(int type)
9182 {
9183 switch(type)
9184 {
9185 case IPT_BUTTON1: return BTN1 "Wall";
9186 case IPT_BUTTON2: return BTN2 "Breakout";
9187 } /* end of switch */
9188
9189 return joy4way_labels(type);
9190 }
9191
9192 const struct ControlInfo krull_ctrl =
9193 {
9194 false, /* 45_degree_rotation for joystick(s) */
9195 true, /* alternating_controls */
9196 true, /* mirrored_controls */
9197 "The game actually uses icons and doesn't have any labels.", /* control_details */
9198 &krull_get_ctrl_name
9199 };
9200
krull_get_ctrl_name(int type)9201 const char *krull_get_ctrl_name(int type)
9202 {
9203 switch(type)
9204 {
9205 case IPT_JOYSTICKLEFT_UP: return "Up";
9206 case IPT_JOYSTICKLEFT_DOWN: return "Down";
9207 case IPT_JOYSTICKLEFT_LEFT: return "Left";
9208 case IPT_JOYSTICKLEFT_RIGHT: return "Right";
9209 case IPT_JOYSTICKRIGHT_UP: return "Fire Up";
9210 case IPT_JOYSTICKRIGHT_DOWN: return "Fire Down";
9211 case IPT_JOYSTICKRIGHT_LEFT: return "Fire Left";
9212 case IPT_JOYSTICKRIGHT_RIGHT: return "Fire Right";
9213 } /* end of switch */
9214
9215 return "";
9216 }
9217
9218 const struct ControlInfo kungfum_ctrl =
9219 {
9220 false, /* 45_degree_rotation for joystick(s) */
9221 true, /* alternating_controls */
9222 true, /* mirrored_controls */
9223 "", /* control_details */
9224 &kungfum_get_ctrl_name
9225 };
9226
kungfum_get_ctrl_name(int type)9227 const char *kungfum_get_ctrl_name(int type)
9228 {
9229 switch(type)
9230 {
9231 case IPT_BUTTON1: return BTN1 "Kick";
9232 case IPT_BUTTON2: return BTN2 "Punch";
9233 case IPT_JOYSTICK_UP: return "Jump";
9234 case IPT_JOYSTICK_DOWN: return "Stoop Down";
9235 case IPT_JOYSTICK_LEFT: return "Left";
9236 case IPT_JOYSTICK_RIGHT: return "Right";
9237 } /* end of switch */
9238
9239 return "";
9240 }
9241
9242 const struct ControlInfo kurikint_ctrl =
9243 {
9244 false, /* 45_degree_rotation for joystick(s) */
9245 false, /* alternating_controls */
9246 true, /* mirrored_controls */
9247 "Note that the original cpo doesn't have labels for the joystick, this is simply what it does. Also not there are two jumps. Pressing up is NOT the same as pressing the dedicated jump button.", /* control_details */
9248 &kurikint_get_ctrl_name
9249 };
9250
kurikint_get_ctrl_name(int type)9251 const char *kurikint_get_ctrl_name(int type)
9252 {
9253 switch(type)
9254 {
9255 case IPT_BUTTON1: return BTN1 "Punch / Kick";
9256 case IPT_BUTTON2: return BTN2 "Jump (higher)";
9257 case IPT_JOYSTICK_UP: return "Jump";
9258 case IPT_JOYSTICK_DOWN: return "Duck";
9259 case IPT_JOYSTICK_LEFT: return "Left";
9260 case IPT_JOYSTICK_RIGHT: return "Right";
9261 } /* end of switch */
9262
9263 return "";
9264 }
9265
9266 const struct ControlInfo ladybug_ctrl =
9267 {
9268 false, /* 45_degree_rotation for joystick(s) */
9269 true, /* alternating_controls */
9270 true, /* mirrored_controls */
9271 "Although mame has 2 buttons mapped, it's merely a glitch caused by using the input template of a similar game. The actual game only has a joystick.", /* control_details */
9272 &ladybug_get_ctrl_name
9273 };
9274
ladybug_get_ctrl_name(int type)9275 const char *ladybug_get_ctrl_name(int type)
9276 {
9277 return joy4way_labels(type);
9278 }
9279
9280 const struct ControlInfo lagunar_ctrl =
9281 {
9282 false, /* 45_degree_rotation for joystick(s) */
9283 false, /* alternating_controls */
9284 false, /* mirrored_controls */
9285 "Note that the shifter button is mapped to button 1 in Mame, which could cause conflicts with the pedal.", /* control_details */
9286 &lagunar_get_ctrl_name
9287 };
9288
lagunar_get_ctrl_name(int type)9289 const char *lagunar_get_ctrl_name(int type)
9290 {
9291 switch(type)
9292 {
9293 case IPT_BUTTON1: return BTN1 "High / Low";
9294 case IPT_PADDLE: return "Left";
9295 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
9296 case IPT_PEDAL: return "Accelerate";
9297 } /* end of switch */
9298
9299 return "";
9300 }
9301
9302 const struct ControlInfo lghost_ctrl =
9303 {
9304 false, /* 45_degree_rotation for joystick(s) */
9305 false, /* alternating_controls */
9306 true, /* mirrored_controls */
9307 "Player 3 seems to have an extra input in mame. It won't hurt anything though.", /* control_details */
9308 &lghost_get_ctrl_name
9309 };
9310
lghost_get_ctrl_name(int type)9311 const char *lghost_get_ctrl_name(int type)
9312 {
9313 switch(type)
9314 {
9315 case IPT_BUTTON1: return BTN1 "Laser Gun";
9316 case IPT_BUTTON2: return BTN2 "Special Weapon";
9317 case IPT_LIGHTGUN_X: return "Aim Left";
9318 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
9319 case IPT_LIGHTGUN_Y: return "Aim Up";
9320 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
9321 } /* end of switch */
9322
9323 return "";
9324 }
9325
9326 const struct ControlInfo lastduel_ctrl =
9327 {
9328 false, /* 45_degree_rotation for joystick(s) */
9329 false, /* alternating_controls */
9330 true, /* mirrored_controls */
9331 "Button 1: Attack Button 2: Rolling Attack (Stages 1, 3, and 6 when airplane), Jump (Stages 2, 4, and 5 when car), Surface Attack (Stages 2, 4, and 5 when 2 player mode and both players in airplanes). 2nd player can join during single player game.", /* control_details */
9332 &lastduel_get_ctrl_name
9333 };
9334
lastduel_get_ctrl_name(int type)9335 const char *lastduel_get_ctrl_name(int type)
9336 {
9337 switch(type)
9338 {
9339 case IPT_BUTTON1: return BTN1 "Button 1";
9340 case IPT_BUTTON2: return BTN2 "Button 2";
9341 } /* end of switch */
9342
9343 return joy4way_labels(type);
9344 }
9345
9346 const struct ControlInfo lethalen_ctrl =
9347 {
9348 false, /* 45_degree_rotation for joystick(s) */
9349 false, /* alternating_controls */
9350 true, /* mirrored_controls */
9351 "", /* control_details */
9352 &lethalen_get_ctrl_name
9353 };
9354
lethalen_get_ctrl_name(int type)9355 const char *lethalen_get_ctrl_name(int type)
9356 {
9357 switch(type)
9358 {
9359 case IPT_BUTTON1: return BTN1 "Fire";
9360 case IPT_LIGHTGUN_X: return "Aim Left";
9361 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
9362 case IPT_LIGHTGUN_Y: return "Aim Up";
9363 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
9364 } /* end of switch */
9365
9366 return "";
9367 }
9368
9369 const struct ControlInfo lethalj_ctrl =
9370 {
9371 false, /* 45_degree_rotation for joystick(s) */
9372 false, /* alternating_controls */
9373 true, /* mirrored_controls */
9374 "", /* control_details */
9375 &lethalj_get_ctrl_name
9376 };
9377
lethalj_get_ctrl_name(int type)9378 const char *lethalj_get_ctrl_name(int type)
9379 {
9380 switch(type)
9381 {
9382 case IPT_BUTTON1: return BTN1 "Fire";
9383 case IPT_LIGHTGUN_X: return "Aim Left";
9384 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
9385 case IPT_LIGHTGUN_Y: return "Aim Up";
9386 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
9387 } /* end of switch */
9388
9389 return "";
9390 }
9391
9392 const struct ControlInfo liberatr_ctrl =
9393 {
9394 false, /* 45_degree_rotation for joystick(s) */
9395 true, /* alternating_controls */
9396 true, /* mirrored_controls */
9397 "", /* control_details */
9398 &liberatr_get_ctrl_name
9399 };
9400
liberatr_get_ctrl_name(int type)9401 const char *liberatr_get_ctrl_name(int type)
9402 {
9403 switch(type)
9404 {
9405 case IPT_BUTTON1: return BTN1 "Fire";
9406 case IPT_BUTTON2: return BTN2 "Shield";
9407 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
9408 case IPT_TRACKBALL_X: return "Left";
9409 case IPT_TRACKBALL_Y: return "Up";
9410 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
9411 } /* end of switch */
9412
9413 return "";
9414 }
9415
9416 const struct ControlInfo lnc_ctrl =
9417 {
9418 false, /* 45_degree_rotation for joystick(s) */
9419 true, /* alternating_controls */
9420 true, /* mirrored_controls */
9421 "", /* control_details */
9422 &lnc_get_ctrl_name
9423 };
9424
lnc_get_ctrl_name(int type)9425 const char *lnc_get_ctrl_name(int type)
9426 {
9427 switch(type)
9428 {
9429 case IPT_BUTTON1: return BTN1 "Lock";
9430 } /* end of switch */
9431
9432 return joy4way_labels(type);
9433 }
9434
9435 const struct ControlInfo lockon_ctrl =
9436 {
9437 false, /* 45_degree_rotation for joystick(s) */
9438 false, /* alternating_controls */
9439 true, /* mirrored_controls */
9440 "The two machine gun triggers are universally labeled and have the same function, despite the fact that they have seperate inputs. The other two buttons are the left and right thumb buttons respectively.", /* control_details */
9441 &lockon_get_ctrl_name
9442 };
9443
lockon_get_ctrl_name(int type)9444 const char *lockon_get_ctrl_name(int type)
9445 {
9446 switch(type)
9447 {
9448 case IPT_BUTTON1: return BTN1 "Machine Gun Fire (1)";
9449 case IPT_BUTTON2: return BTN2 "Machine Gun Fire (2)";
9450 case IPT_BUTTON3: return BTN3 "Hover Aircraft";
9451 case IPT_BUTTON4: return BTN4 "Lock-On Missiles";
9452 case IPT_AD_STICK_X: return "Left";
9453 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
9454 case IPT_AD_STICK_Y: return "Up";
9455 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
9456 } /* end of switch */
9457
9458 return "";
9459 }
9460
9461 const struct ControlInfo locomotn_ctrl =
9462 {
9463 false, /* 45_degree_rotation for joystick(s) */
9464 true, /* alternating_controls */
9465 true, /* mirrored_controls */
9466 "", /* control_details */
9467 &locomotn_get_ctrl_name
9468 };
9469
locomotn_get_ctrl_name(int type)9470 const char *locomotn_get_ctrl_name(int type)
9471 {
9472 switch(type)
9473 {
9474 case IPT_BUTTON1: return BTN1 "Speed";
9475 } /* end of switch */
9476
9477 return joy4way_labels(type);
9478 }
9479
9480 const struct ControlInfo ldrun_ctrl =
9481 {
9482 false, /* 45_degree_rotation for joystick(s) */
9483 true, /* alternating_controls */
9484 true, /* mirrored_controls */
9485 "", /* control_details */
9486 &ldrun_get_ctrl_name
9487 };
9488
ldrun_get_ctrl_name(int type)9489 const char *ldrun_get_ctrl_name(int type)
9490 {
9491 switch(type)
9492 {
9493 case IPT_BUTTON1: return BTN1 "Dig Left";
9494 case IPT_BUTTON2: return BTN2 "Dig Right";
9495 } /* end of switch */
9496
9497 return joy4way_labels(type);
9498 }
9499
9500 const struct ControlInfo looping_ctrl =
9501 {
9502 false, /* 45_degree_rotation for joystick(s) */
9503 true, /* alternating_controls */
9504 true, /* mirrored_controls */
9505 "", /* control_details */
9506 &looping_get_ctrl_name
9507 };
9508
looping_get_ctrl_name(int type)9509 const char *looping_get_ctrl_name(int type)
9510 {
9511 switch(type)
9512 {
9513 case IPT_BUTTON1: return BTN1 "Fire";
9514 case IPT_BUTTON2: return BTN2 "Accelerator";
9515 case IPT_JOYSTICK_UP: return "Up";
9516 case IPT_JOYSTICK_DOWN: return "Down";
9517 } /* end of switch */
9518
9519 return "";
9520 }
9521
9522 const struct ControlInfo losttomb_ctrl =
9523 {
9524 false, /* 45_degree_rotation for joystick(s) */
9525 true, /* alternating_controls */
9526 true, /* mirrored_controls */
9527 "", /* control_details */
9528 &losttomb_get_ctrl_name
9529 };
9530
losttomb_get_ctrl_name(int type)9531 const char *losttomb_get_ctrl_name(int type)
9532 {
9533 switch(type)
9534 {
9535 case IPT_BUTTON1: return BTN1 "Whip";
9536 } /* end of switch */
9537
9538 return joy4way_labels(type);
9539 }
9540
9541 const struct ControlInfo llander_ctrl =
9542 {
9543 false, /* 45_degree_rotation for joystick(s) */
9544 false, /* alternating_controls */
9545 true, /* mirrored_controls */
9546 "The original used a large handle connected to a potentiometer for Thrust control. The select game button is actually player 2 start. so to toggle through games press p2 start and then p1 start when you are ready to play.", /* control_details */
9547 &llander_get_ctrl_name
9548 };
9549
llander_get_ctrl_name(int type)9550 const char *llander_get_ctrl_name(int type)
9551 {
9552 switch(type)
9553 {
9554 case IPT_BUTTON1: return BTN1 "Abort";
9555 case IPT_PADDLE_V: return "Increase Thrust";
9556 case (IPT_PADDLE_V + IPT_EXTENSION): return "Decrease Thrust";
9557 } /* end of switch */
9558
9559 return joy2way_labels(type);
9560 }
9561
9562 const struct ControlInfo lrescue_ctrl =
9563 {
9564 false, /* 45_degree_rotation for joystick(s) */
9565 true, /* alternating_controls */
9566 true, /* mirrored_controls */
9567 "", /* control_details */
9568 &lrescue_get_ctrl_name
9569 };
9570
lrescue_get_ctrl_name(int type)9571 const char *lrescue_get_ctrl_name(int type)
9572 {
9573 switch(type)
9574 {
9575 case IPT_BUTTON1: return BTN1 "Fire";
9576 } /* end of switch */
9577
9578 return joy2way_labels(type);
9579 }
9580
9581 const struct ControlInfo lupin3_ctrl =
9582 {
9583 false, /* 45_degree_rotation for joystick(s) */
9584 true, /* alternating_controls */
9585 true, /* mirrored_controls */
9586 "That isn't a typo, the button is actually called 'Magic Button.'", /* control_details */
9587 &lupin3_get_ctrl_name
9588 };
9589
lupin3_get_ctrl_name(int type)9590 const char *lupin3_get_ctrl_name(int type)
9591 {
9592 switch(type)
9593 {
9594 case IPT_BUTTON1: return BTN1 "Magic Button";
9595 } /* end of switch */
9596
9597 return joy4way_labels(type);
9598 }
9599
9600 const struct ControlInfo m4_ctrl =
9601 {
9602 false, /* 45_degree_rotation for joystick(s) */
9603 false, /* alternating_controls */
9604 true, /* mirrored_controls */
9605 "This game actually uses a two-way, top-fire lever, which is quite rare.", /* control_details */
9606 &m4_get_ctrl_name
9607 };
9608
m4_get_ctrl_name(int type)9609 const char *m4_get_ctrl_name(int type)
9610 {
9611 switch(type)
9612 {
9613 case IPT_BUTTON1: return BTN1 "Fire";
9614 case IPT_BUTTON2: return BTN2 "Reload";
9615 case IPT_JOYSTICK_UP: return "Up";
9616 case IPT_JOYSTICK_DOWN: return "Down";
9617 } /* end of switch */
9618
9619 return "";
9620 }
9621
9622 const struct ControlInfo megaplay_ctrl =
9623 {
9624 false, /* 45_degree_rotation for joystick(s) */
9625 false, /* alternating_controls */
9626 true, /* mirrored_controls */
9627 "", /* control_details */
9628 &megaplay_get_ctrl_name
9629 };
9630
megaplay_get_ctrl_name(int type)9631 const char *megaplay_get_ctrl_name(int type)
9632 {
9633 switch(type)
9634 {
9635 case IPT_BUTTON1: return BTN1 "A";
9636 case IPT_BUTTON2: return BTN2 "B";
9637 case IPT_BUTTON3: return BTN2 "C";
9638 } /* end of switch */
9639
9640 return joy4way_labels(type);
9641 }
9642
9643 const struct ControlInfo mplanets_ctrl =
9644 {
9645 false, /* 45_degree_rotation for joystick(s) */
9646 true, /* alternating_controls */
9647 true, /* mirrored_controls */
9648 "", /* control_details */
9649 &mplanets_get_ctrl_name
9650 };
9651
mplanets_get_ctrl_name(int type)9652 const char *mplanets_get_ctrl_name(int type)
9653 {
9654 switch(type)
9655 {
9656 case IPT_BUTTON1: return BTN1 "Fire";
9657 case IPT_DIAL: return "Rotate Left";
9658 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
9659 } /* end of switch */
9660
9661 return joy4way_labels(type);
9662 }
9663
9664 const struct ControlInfo msword_ctrl =
9665 {
9666 false, /* 45_degree_rotation for joystick(s) */
9667 true, /* alternating_controls */
9668 true, /* mirrored_controls */
9669 "", /* control_details */
9670 &msword_get_ctrl_name
9671 };
9672
msword_get_ctrl_name(int type)9673 const char *msword_get_ctrl_name(int type)
9674 {
9675 switch(type)
9676 {
9677 case IPT_BUTTON1: return BTN1 "Attack";
9678 case IPT_BUTTON2: return BTN2 "Jump";
9679 } /* end of switch */
9680
9681 return joy4way_labels(type);
9682 }
9683
9684 const struct ControlInfo magspot_ctrl =
9685 {
9686 false, /* 45_degree_rotation for joystick(s) */
9687 true, /* alternating_controls */
9688 true, /* mirrored_controls */
9689 "The 'L' and 'R' labels are indeed accurate. The original cpo used those to abbreviate 'left' and 'right'.", /* control_details */
9690 &magspot_get_ctrl_name
9691 };
9692
magspot_get_ctrl_name(int type)9693 const char *magspot_get_ctrl_name(int type)
9694 {
9695 switch(type)
9696 {
9697 case IPT_BUTTON1: return BTN1 "Fire";
9698 case IPT_JOYSTICK_LEFT: return "L";
9699 case IPT_JOYSTICK_RIGHT: return "R";
9700 } /* end of switch */
9701
9702 return "";
9703 }
9704
9705
9706 const struct ControlInfo mhavoc_ctrl =
9707 {
9708 false, /* 45_degree_rotation for joystick(s) */
9709 true, /* alternating_controls */
9710 true, /* mirrored_controls */
9711 "", /* control_details */
9712 &mhavoc_get_ctrl_name
9713 };
9714
mhavoc_get_ctrl_name(int type)9715 const char *mhavoc_get_ctrl_name(int type)
9716 {
9717 switch(type)
9718 {
9719 case IPT_BUTTON1: return BTN1 "Fire/Jump";
9720 case IPT_BUTTON2: return BTN2 "Shield";
9721 case (IPT_DIAL + IPT_EXTENSION): return "Move Right";
9722 case IPT_DIAL: return "Move Left";
9723 } /* end of switch */
9724
9725 return "";
9726 }
9727
9728 const struct ControlInfo maniach_ctrl =
9729 {
9730 false, /* 45_degree_rotation for joystick(s) */
9731 false, /* alternating_controls */
9732 true, /* mirrored_controls */
9733 "", /* control_details */
9734 &maniach_get_ctrl_name
9735 };
9736
maniach_get_ctrl_name(int type)9737 const char *maniach_get_ctrl_name(int type)
9738 {
9739 switch(type)
9740 {
9741 case IPT_BUTTON1: return BTN1 "Punch";
9742 case IPT_BUTTON2: return BTN2 "Kick";
9743 } /* end of switch */
9744
9745 return joy4way_labels(type);
9746 }
9747
9748 const struct ControlInfo mappy_ctrl =
9749 {
9750 false, /* 45_degree_rotation for joystick(s) */
9751 true, /* alternating_controls */
9752 true, /* mirrored_controls */
9753 "", /* control_details */
9754 &mappy_get_ctrl_name
9755 };
9756
mappy_get_ctrl_name(int type)9757 const char *mappy_get_ctrl_name(int type)
9758 {
9759 switch(type)
9760 {
9761 case IPT_BUTTON1: return BTN1 "Door Open / Close";
9762 } /* end of switch */
9763
9764 return joy2way_labels(type);
9765 }
9766
9767 const struct ControlInfo marble_ctrl =
9768 {
9769 false, /* 45_degree_rotation for joystick(s) */
9770 false, /* alternating_controls */
9771 true, /* mirrored_controls */
9772 "", /* control_details */
9773 &marble_get_ctrl_name
9774 };
9775
marble_get_ctrl_name(int type)9776 const char *marble_get_ctrl_name(int type)
9777 {
9778 switch(type)
9779 {
9780 case IPT_TRACKBALL_X: return "Left";
9781 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
9782 case IPT_TRACKBALL_Y: return "Up";
9783 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
9784 } /* end of switch */
9785
9786 return "";
9787 }
9788
9789 const struct ControlInfo mario_ctrl =
9790 {
9791 false, /* 45_degree_rotation for joystick(s) */
9792 false, /* alternating_controls */
9793 true, /* mirrored_controls */
9794 "", /* control_details */
9795 &mario_get_ctrl_name
9796 };
9797
mario_get_ctrl_name(int type)9798 const char *mario_get_ctrl_name(int type)
9799 {
9800 switch(type)
9801 {
9802 case IPT_BUTTON1: return BTN1 "Jump";
9803 } /* end of switch */
9804
9805 return joy2way_labels(type);
9806 }
9807
9808 const struct ControlInfo mars_ctrl =
9809 {
9810 false, /* 45_degree_rotation for joystick(s) */
9811 true, /* alternating_controls */
9812 true, /* mirrored_controls */
9813 "", /* control_details */
9814 &mars_get_ctrl_name
9815 };
9816
mars_get_ctrl_name(int type)9817 const char *mars_get_ctrl_name(int type)
9818 {
9819 switch(type)
9820 {
9821 case IPT_JOYSTICKRIGHT_UP: return "Fire Up";
9822 case IPT_JOYSTICKRIGHT_DOWN: return "Fire Down";
9823 case IPT_JOYSTICKRIGHT_LEFT: return "Fire Left";
9824 case IPT_JOYSTICKRIGHT_RIGHT: return "Fire Right";
9825 } /* end of switch */
9826
9827 return joy4way_labels(type);
9828 }
9829
9830 const struct ControlInfo mmatrix_ctrl =
9831 {
9832 false, /* 45_degree_rotation for joystick(s) */
9833 false, /* alternating_controls */
9834 true, /* mirrored_controls */
9835 "", /* control_details */
9836 &mmatrix_get_ctrl_name
9837 };
9838
mmatrix_get_ctrl_name(int type)9839 const char *mmatrix_get_ctrl_name(int type)
9840 {
9841 switch(type)
9842 {
9843 case IPT_BUTTON1: return BTN1 "Shoot";
9844 case IPT_BUTTON2: return BTN2 "Bomb";
9845 } /* end of switch */
9846
9847 return joy4way_labels(type);
9848 }
9849
9850 const struct ControlInfo msh_ctrl =
9851 {
9852 false, /* 45_degree_rotation for joystick(s) */
9853 false, /* alternating_controls */
9854 false, /* mirrored_controls */
9855 "As with all fighters, the actions for the joystick are reversed when you flip over your opponent to the opposite side of the screen. As with all capcom titles the top row of buttons is actually the first three instead of the last.", /* control_details */
9856 &msh_get_ctrl_name
9857 };
9858
msh_get_ctrl_name(int type)9859 const char *msh_get_ctrl_name(int type)
9860 {
9861 switch(type)
9862 {
9863 case (IPT_BUTTON1 | IPF_PLAYER2): return "Jab Punch";
9864 case (IPT_BUTTON2 | IPF_PLAYER2): return "Strong Punch";
9865 case (IPT_BUTTON3 | IPF_PLAYER2): return "Fierce Punch";
9866 case (IPT_BUTTON4 | IPF_PLAYER2): return "Short Kick";
9867 case (IPT_BUTTON5 | IPF_PLAYER2): return "Forward Kick";
9868 case (IPT_BUTTON6 | IPF_PLAYER2): return "Roundhouse Kick";
9869 case (IPT_JOYSTICK_UP | IPF_PLAYER2): return "Jump";
9870 case (IPT_JOYSTICK_DOWN | IPF_PLAYER2): return "Duck";
9871 case (IPT_JOYSTICK_LEFT | IPF_PLAYER2): return "Forward";
9872 case (IPT_JOYSTICK_RIGHT | IPF_PLAYER2): return "Back / Defense";
9873 case IPT_BUTTON1: return BTN1 "Jab Punch";
9874 case IPT_BUTTON2: return BTN2 "Strong Punch";
9875 case IPT_BUTTON3: return BTN3 "Fierce Punch";
9876 case IPT_BUTTON4: return BTN4 "Short Kick";
9877 case IPT_BUTTON5: return BTN5 "Forward Kick";
9878 case IPT_BUTTON6: return BTN6 "Roundhouse Kick";
9879 case IPT_JOYSTICK_UP: return "Jump";
9880 case IPT_JOYSTICK_DOWN: return "Duck";
9881 case IPT_JOYSTICK_LEFT: return "Back / Defense";
9882 case IPT_JOYSTICK_RIGHT: return "Forward";
9883 } /* end of switch */
9884
9885 return "";
9886 }
9887
9888 const struct ControlInfo mshvsf_ctrl =
9889 {
9890 false, /* 45_degree_rotation for joystick(s) */
9891 false, /* alternating_controls */
9892 true, /* mirrored_controls */
9893 "", /* control_details */
9894 &mshvsf_get_ctrl_name
9895 };
9896
mshvsf_get_ctrl_name(int type)9897 const char *mshvsf_get_ctrl_name(int type)
9898 {
9899 switch(type)
9900 {
9901 case IPT_BUTTON1: return BTN1 "Punch - Jab ";
9902 case IPT_BUTTON2: return BTN2 "Punch - Strong";
9903 case IPT_BUTTON3: return BTN3 "Punch - Fierce";
9904 case IPT_BUTTON4: return BTN4 "Kick - Short";
9905 case IPT_BUTTON5: return BTN5 "Kick - Forward";
9906 case IPT_BUTTON6: return BTN6 "Kick - Roundhouse";
9907 } /* end of switch */
9908
9909 return joy4way_labels(type);
9910 }
9911
9912 const struct ControlInfo mvsc_ctrl =
9913 {
9914 false, /* 45_degree_rotation for joystick(s) */
9915 false, /* alternating_controls */
9916 true, /* mirrored_controls */
9917 "The original control panels had the punch buttons on the top row of thee and the kick buttons on the bottom row. ame maps the punch buttons 1 - 3 and the kick buttons 4 - 6. This can be backwards for people. Mame devs have stood by this because of the jamma locations of each button.", /* control_details */
9918 &mvsc_get_ctrl_name
9919 };
9920
mvsc_get_ctrl_name(int type)9921 const char *mvsc_get_ctrl_name(int type)
9922 {
9923 switch(type)
9924 {
9925 case IPT_BUTTON1: return BTN1 "Punch - Jab";
9926 case IPT_BUTTON2: return BTN2 "Punch - Strong";
9927 case IPT_BUTTON3: return BTN3 "Punch - Fierce";
9928 case IPT_BUTTON4: return BTN4 "Kick - Short";
9929 case IPT_BUTTON5: return BTN5 "Kick - Forward";
9930 case IPT_BUTTON6: return BTN6 "Kick - Round-House";
9931 } /* end of switch */
9932
9933 return joy4way_labels(type);
9934 }
9935
9936 const struct ControlInfo matmania_ctrl =
9937 {
9938 false, /* 45_degree_rotation for joystick(s) */
9939 false, /* alternating_controls */
9940 true, /* mirrored_controls */
9941 "Press both buttons to pin. Rapidly press both buttons to kick out.", /* control_details */
9942 &matmania_get_ctrl_name
9943 };
9944
matmania_get_ctrl_name(int type)9945 const char *matmania_get_ctrl_name(int type)
9946 {
9947 switch(type)
9948 {
9949 case IPT_BUTTON1: return BTN1 "Action Punch";
9950 case IPT_BUTTON2: return BTN2 "Action Kick";
9951 } /* end of switch */
9952
9953 return joy4way_labels(type);
9954 }
9955
9956 const struct ControlInfo maxrpm_ctrl =
9957 {
9958 false, /* 45_degree_rotation for joystick(s) */
9959 false, /* alternating_controls */
9960 true, /* mirrored_controls */
9961 "Please note that mame has fudged the shifter input up. Also note that since the shifter buttons are mapped to button 1 and 2 they will conflict with the gas pedal with mame's default mappings.", /* control_details */
9962 &maxrpm_get_ctrl_name
9963 };
9964
maxrpm_get_ctrl_name(int type)9965 const char *maxrpm_get_ctrl_name(int type)
9966 {
9967 switch(type)
9968 {
9969 case IPT_BUTTON1: return BTN1 "Shift Up";
9970 case IPT_BUTTON2: return BTN2 "Shift Down";
9971 case IPT_PADDLE: return "Left";
9972 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
9973 case IPT_PEDAL: return "Accelerate";
9974 } /* end of switch */
9975
9976 return "";
9977 }
9978
9979 const struct ControlInfo maxforce_ctrl =
9980 {
9981 false, /* 45_degree_rotation for joystick(s) */
9982 false, /* alternating_controls */
9983 true, /* mirrored_controls */
9984 "", /* control_details */
9985 &maxforce_get_ctrl_name
9986 };
9987
maxforce_get_ctrl_name(int type)9988 const char *maxforce_get_ctrl_name(int type)
9989 {
9990 switch(type)
9991 {
9992 case IPT_BUTTON1: return BTN1 "Fire";
9993 case IPT_LIGHTGUN_X: return "Left";
9994 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
9995 case IPT_LIGHTGUN_Y: return "Up";
9996 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
9997 } /* end of switch */
9998
9999 return "";
10000 }
10001
10002 const struct ControlInfo mayday_ctrl =
10003 {
10004 false, /* 45_degree_rotation for joystick(s) */
10005 true, /* alternating_controls */
10006 true, /* mirrored_controls */
10007 "Right directions on the joystick are the only ones used as you can't turn back. Also note that the buttons are in different order on the control panel. (Mayday, Back, Fire Front)", /* control_details */
10008 &mayday_get_ctrl_name
10009 };
10010
mayday_get_ctrl_name(int type)10011 const char *mayday_get_ctrl_name(int type)
10012 {
10013 switch(type)
10014 {
10015 case IPT_BUTTON1: return BTN1 "Fire Front";
10016 case IPT_BUTTON2: return BTN2 "Mayday";
10017 case IPT_BUTTON3: return BTN3 "Back";
10018 case IPT_JOYSTICK_UP: return "Up";
10019 case IPT_JOYSTICK_DOWN: return "Down";
10020 case IPT_JOYSTICK_RIGHT: return "Right";
10021 } /* end of switch */
10022
10023 return "";
10024 }
10025
10026 const struct ControlInfo mechatt_ctrl =
10027 {
10028 false, /* 45_degree_rotation for joystick(s) */
10029 false, /* alternating_controls */
10030 true, /* mirrored_controls */
10031 "", /* control_details */
10032 &mechatt_get_ctrl_name
10033 };
10034
mechatt_get_ctrl_name(int type)10035 const char *mechatt_get_ctrl_name(int type)
10036 {
10037 switch(type)
10038 {
10039 case IPT_BUTTON1: return BTN1 "Fire";
10040 case IPT_BUTTON2: return BTN2 "Grenade";
10041 case IPT_LIGHTGUN_X: return "Left";
10042 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
10043 case IPT_LIGHTGUN_Y: return "Up";
10044 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
10045 } /* end of switch */
10046
10047 return "";
10048 }
10049
10050 const struct ControlInfo megaman2_ctrl =
10051 {
10052 false, /* 45_degree_rotation for joystick(s) */
10053 false, /* alternating_controls */
10054 true, /* mirrored_controls */
10055 "", /* control_details */
10056 &megaman2_get_ctrl_name
10057 };
10058
megaman2_get_ctrl_name(int type)10059 const char *megaman2_get_ctrl_name(int type)
10060 {
10061 switch(type)
10062 {
10063 case IPT_BUTTON1: return BTN1 "Shoot";
10064 case IPT_BUTTON2: return BTN2 "Jump";
10065 case IPT_BUTTON3: return BTN3 "Weapon Change";
10066 } /* end of switch */
10067
10068 return joy4way_labels(type);
10069 }
10070
10071 const struct ControlInfo megazone_ctrl =
10072 {
10073 false, /* 45_degree_rotation for joystick(s) */
10074 true, /* alternating_controls */
10075 true, /* mirrored_controls */
10076 "", /* control_details */
10077 &megazone_get_ctrl_name
10078 };
10079
megazone_get_ctrl_name(int type)10080 const char *megazone_get_ctrl_name(int type)
10081 {
10082 switch(type)
10083 {
10084 case IPT_BUTTON1: return BTN1 "Fire";
10085 } /* end of switch */
10086
10087 return joy4way_labels(type);
10088 }
10089
10090 const struct ControlInfo mercs_ctrl =
10091 {
10092 false, /* 45_degree_rotation for joystick(s) */
10093 false, /* alternating_controls */
10094 true, /* mirrored_controls */
10095 "", /* control_details */
10096 &mercs_get_ctrl_name
10097 };
10098
mercs_get_ctrl_name(int type)10099 const char *mercs_get_ctrl_name(int type)
10100 {
10101 switch(type)
10102 {
10103 case IPT_BUTTON1: return BTN1 "Fire";
10104 case IPT_BUTTON2: return BTN2 "Bomb";
10105 } /* end of switch */
10106
10107 return joy4way_labels(type);
10108 }
10109
10110 const struct ControlInfo metamrph_ctrl =
10111 {
10112 false, /* 45_degree_rotation for joystick(s) */
10113 false, /* alternating_controls */
10114 true, /* mirrored_controls */
10115 "This game can be turned into a 2 player setup via a dip setting. Also something unique in 4 player games, this one allows you to have a shared coin slot via the settings. (This means the 2 player-style select screen even when you have the cabinet set to 4 players)", /* control_details */
10116 &metamrph_get_ctrl_name
10117 };
10118
metamrph_get_ctrl_name(int type)10119 const char *metamrph_get_ctrl_name(int type)
10120 {
10121 switch(type)
10122 {
10123 case IPT_BUTTON1: return BTN1 "Attack";
10124 case IPT_BUTTON2: return BTN2 "Jump";
10125 } /* end of switch */
10126
10127 return joy4way_labels(type);
10128 }
10129
10130 const struct ControlInfo metrocrs_ctrl =
10131 {
10132 false, /* 45_degree_rotation for joystick(s) */
10133 true, /* alternating_controls */
10134 true, /* mirrored_controls */
10135 "Teh control panel didn't have a button label.", /* control_details */
10136 &metrocrs_get_ctrl_name
10137 };
10138
metrocrs_get_ctrl_name(int type)10139 const char *metrocrs_get_ctrl_name(int type)
10140 {
10141 switch(type)
10142 {
10143 case IPT_BUTTON1: return BTN1 "Jump";
10144 } /* end of switch */
10145
10146 return joy4way_labels(type);
10147 }
10148
10149 const struct ControlInfo mwalk_ctrl =
10150 {
10151 false, /* 45_degree_rotation for joystick(s) */
10152 false, /* alternating_controls */
10153 true, /* mirrored_controls */
10154 "", /* control_details */
10155 &mwalk_get_ctrl_name
10156 };
10157
mwalk_get_ctrl_name(int type)10158 const char *mwalk_get_ctrl_name(int type)
10159 {
10160 switch(type)
10161 {
10162 case IPT_BUTTON1: return BTN1 "Shoot";
10163 case IPT_BUTTON2: return BTN2 "Dance";
10164 } /* end of switch */
10165
10166 return joy4way_labels(type);
10167 }
10168
10169 const struct ControlInfo midres_ctrl =
10170 {
10171 false, /* 45_degree_rotation for joystick(s) */
10172 false, /* alternating_controls */
10173 true, /* mirrored_controls */
10174 "", /* control_details */
10175 &midres_get_ctrl_name
10176 };
10177
midres_get_ctrl_name(int type)10178 const char *midres_get_ctrl_name(int type)
10179 {
10180 switch(type)
10181 {
10182 case IPT_BUTTON1: return BTN1 "Shoot";
10183 case IPT_BUTTON2: return BTN2 "Jump";
10184 case IPT_DIAL: return "Rotate Left";
10185 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
10186 } /* end of switch */
10187
10188 return joy4way_labels(type);
10189 }
10190
10191 const struct ControlInfo gtmr2_ctrl =
10192 {
10193 false, /* 45_degree_rotation for joystick(s) */
10194 false, /* alternating_controls */
10195 true, /* mirrored_controls */
10196 "This game does NOT use all of these controls. It has dipswitch settings which allow the games to be controlled with a 360 degree wheel, a 270 degree wheel, a 270 degree digital wheel (using a d2a conveter) and a plain old 8-way joystick with buttons. Uses with steering wheels please note that the game defaults to joystick input. Also note that the pedals optionally can be set to analog mode, but mame disables this feature due to input limitations.", /* control_details */
10197 >mr2_get_ctrl_name
10198 };
10199
gtmr2_get_ctrl_name(int type)10200 const char *gtmr2_get_ctrl_name(int type)
10201 {
10202 switch(type)
10203 {
10204 case IPT_BUTTON1: return BTN1 "Accelerate";
10205 case IPT_BUTTON2: return BTN2 "Brake";
10206 case IPT_PADDLE: return "Left";
10207 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
10208 case IPT_DIAL: return "Left";
10209 case (IPT_DIAL + IPT_EXTENSION): return "Right";
10210 } /* end of switch */
10211
10212 return joy4way_labels(type);
10213 }
10214
10215 const struct ControlInfo milliped_ctrl =
10216 {
10217 false, /* 45_degree_rotation for joystick(s) */
10218 true, /* alternating_controls */
10219 true, /* mirrored_controls */
10220 "", /* control_details */
10221 &milliped_get_ctrl_name
10222 };
10223
milliped_get_ctrl_name(int type)10224 const char *milliped_get_ctrl_name(int type)
10225 {
10226 switch(type)
10227 {
10228 case IPT_BUTTON1: return BTN1 "Fire";
10229 case IPT_TRACKBALL_Y: return "Up";
10230 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
10231 case IPT_TRACKBALL_X: return "Left";
10232 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
10233 } /* end of switch */
10234
10235 return "";
10236 }
10237
10238 const struct ControlInfo minefld_ctrl =
10239 {
10240 false, /* 45_degree_rotation for joystick(s) */
10241 true, /* alternating_controls */
10242 true, /* mirrored_controls */
10243 "", /* control_details */
10244 &minefld_get_ctrl_name
10245 };
10246
minefld_get_ctrl_name(int type)10247 const char *minefld_get_ctrl_name(int type)
10248 {
10249 switch(type)
10250 {
10251 case IPT_BUTTON1: return BTN1 "Cannon";
10252 case IPT_JOYSTICKLEFT_RIGHT: return "Tank Direction Right";
10253 case IPT_JOYSTICKLEFT_LEFT: return "Tank Direction Left";
10254 case IPT_JOYSTICKLEFT_DOWN: return "Tank Direction Down";
10255 case IPT_JOYSTICKLEFT_UP: return "Tank Direction Up";
10256 case IPT_JOYSTICKRIGHT_UP: return "Machine Gun Up";
10257 case IPT_JOYSTICKRIGHT_DOWN: return "Machine Gun Down";
10258 case IPT_JOYSTICKRIGHT_LEFT: return "Machine Gun Left";
10259 case IPT_JOYSTICKRIGHT_RIGHT: return "Machine Gun Right";
10260 } /* end of switch */
10261
10262 return "";
10263 }
10264
10265 const struct ControlInfo mineswpr_ctrl =
10266 {
10267 false, /* 45_degree_rotation for joystick(s) */
10268 false, /* alternating_controls */
10269 true, /* mirrored_controls */
10270 "Player 1 is actually position on the bottom right of the screen while Player 2 is at the top right", /* control_details */
10271 &mineswpr_get_ctrl_name
10272 };
10273
mineswpr_get_ctrl_name(int type)10274 const char *mineswpr_get_ctrl_name(int type)
10275 {
10276 return joy4way_labels(type);
10277 }
10278
10279 const struct ControlInfo minigolf_ctrl =
10280 {
10281 false, /* 45_degree_rotation for joystick(s) */
10282 true, /* alternating_controls */
10283 true, /* mirrored_controls */
10284 "", /* control_details */
10285 &minigolf_get_ctrl_name
10286 };
10287
minigolf_get_ctrl_name(int type)10288 const char *minigolf_get_ctrl_name(int type)
10289 {
10290 switch(type)
10291 {
10292 case IPT_BUTTON1: return BTN1 "Tee Selection";
10293 } /* end of switch */
10294
10295 return "";
10296 }
10297
10298 const struct ControlInfo missile_ctrl =
10299 {
10300 false, /* 45_degree_rotation for joystick(s) */
10301 true, /* alternating_controls */
10302 true, /* mirrored_controls */
10303 "", /* control_details */
10304 &missile_get_ctrl_name
10305 };
10306
missile_get_ctrl_name(int type)10307 const char *missile_get_ctrl_name(int type)
10308 {
10309 switch(type)
10310 {
10311 case IPT_BUTTON1: return BTN1 "Fire - Alpha Base";
10312 case IPT_BUTTON2: return BTN2 "Fire - Delta Base";
10313 case IPT_BUTTON3: return BTN3 "Fire - Omega Base";
10314 case IPT_TRACKBALL_X: return "Left";
10315 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
10316 case IPT_TRACKBALL_Y: return "Up";
10317 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
10318 } /* end of switch */
10319
10320 return "";
10321 }
10322
10323 const struct ControlInfo gmissile_ctrl =
10324 {
10325 false, /* 45_degree_rotation for joystick(s) */
10326 false, /* alternating_controls */
10327 true, /* mirrored_controls */
10328 "This game actually uses a 2-way top-fire joystick, which is extremely rare. So rare we don't recognize it in the database.", /* control_details */
10329 &gmissile_get_ctrl_name
10330 };
10331
gmissile_get_ctrl_name(int type)10332 const char *gmissile_get_ctrl_name(int type)
10333 {
10334 switch(type)
10335 {
10336 case IPT_BUTTON1: return BTN1 "Fire";
10337 } /* end of switch */
10338
10339 return joy2way_labels(type);
10340 }
10341
10342 const struct ControlInfo moguchan_ctrl =
10343 {
10344 false, /* 45_degree_rotation for joystick(s) */
10345 true, /* alternating_controls */
10346 true, /* mirrored_controls */
10347 "Unknown as to what the button does but is listed in mame", /* control_details */
10348 &moguchan_get_ctrl_name
10349 };
10350
moguchan_get_ctrl_name(int type)10351 const char *moguchan_get_ctrl_name(int type)
10352 {
10353 switch(type)
10354 {
10355 case IPT_BUTTON1: return BTN1 "Unkown";
10356 } /* end of switch */
10357
10358 return joy4way_labels(type);
10359 }
10360
10361 const struct ControlInfo mole_ctrl =
10362 {
10363 false, /* 45_degree_rotation for joystick(s) */
10364 true, /* alternating_controls */
10365 true, /* mirrored_controls */
10366 "The button is layed out on a 3x3 grid and relates directly to the position on the screen Top Row: 7 8 9 Middle Row: 4 5 6 Bottom Row: 1 2 3", /* control_details */
10367 &mole_get_ctrl_name
10368 };
10369
mole_get_ctrl_name(int type)10370 const char *mole_get_ctrl_name(int type)
10371 {
10372 switch(type)
10373 {
10374 /* P1NumButtons=9 */
10375 case IPT_BUTTON1: return BTN1 "Attack 1";
10376 case IPT_BUTTON2: return BTN2 "Attack 2";
10377 case IPT_BUTTON3: return BTN3 "Attack 3";
10378 case IPT_BUTTON4: return BTN4 "Attack 4";
10379 case IPT_BUTTON5: return BTN5 "Attack 5";
10380 case IPT_BUTTON6: return BTN6 "Attack 6";
10381 case IPT_BUTTON7: return BTN7 "Attack 7";
10382 case IPT_BUTTON8: return BTN7 "Attack 8";
10383 case IPT_BUTTON9: return "Attack 9";
10384 } /* end of switch */
10385
10386 return "";
10387 }
10388
10389 const struct ControlInfo monymony_ctrl =
10390 {
10391 false, /* 45_degree_rotation for joystick(s) */
10392 true, /* alternating_controls */
10393 true, /* mirrored_controls */
10394 "The joystick was generically labeled 'control'. Also of note is that you can only jump when you are standing on a white circle and you can't control the direction of the jump like in most games.", /* control_details */
10395 &monymony_get_ctrl_name
10396 };
10397
monymony_get_ctrl_name(int type)10398 const char *monymony_get_ctrl_name(int type)
10399 {
10400 switch(type)
10401 {
10402 case IPT_BUTTON1: return BTN1 "Jump";
10403 } /* end of switch */
10404
10405 return joy4way_labels(type);
10406 }
10407
10408 const struct ControlInfo monsterb_ctrl =
10409 {
10410 false, /* 45_degree_rotation for joystick(s) */
10411 true, /* alternating_controls */
10412 true, /* mirrored_controls */
10413 "", /* control_details */
10414 &monsterb_get_ctrl_name
10415 };
10416
monsterb_get_ctrl_name(int type)10417 const char *monsterb_get_ctrl_name(int type)
10418 {
10419 switch(type)
10420 {
10421 case IPT_BUTTON1: return BTN1 "Zap";
10422 } /* end of switch */
10423
10424 return joy4way_labels(type);
10425 }
10426
10427 const struct ControlInfo montecar_ctrl =
10428 {
10429 false, /* 45_degree_rotation for joystick(s) */
10430 false, /* alternating_controls */
10431 false, /* mirrored_controls */
10432 "Please note that this game's driver hard-code's all of the buttons. The gears are remapped to z,x,c and v while track select is remapped to space.", /* control_details */
10433 &montecar_get_ctrl_name
10434 };
10435
montecar_get_ctrl_name(int type)10436 const char *montecar_get_ctrl_name(int type)
10437 {
10438 switch(type)
10439 {
10440 case IPT_BUTTON1: return BTN1 "Accelerate";
10441 case IPT_BUTTON2: return BTN2 "Gear 1";
10442 case IPT_BUTTON3: return BTN3 "Gear 2";
10443 case IPT_BUTTON4: return BTN4 "Gear 3";
10444 case IPT_BUTTON5: return BTN5 "Gear 4";
10445 case IPT_BUTTON6: return BTN6 "Track Select";
10446 case IPT_DIAL: return "Left";
10447 case (IPT_DIAL + IPT_EXTENSION): return "Right";
10448 } /* end of switch */
10449
10450 return "";
10451 }
10452
10453 const struct ControlInfo mpatrol_ctrl =
10454 {
10455 false, /* 45_degree_rotation for joystick(s) */
10456 true, /* alternating_controls */
10457 true, /* mirrored_controls */
10458 "", /* control_details */
10459 &mpatrol_get_ctrl_name
10460 };
10461
mpatrol_get_ctrl_name(int type)10462 const char *mpatrol_get_ctrl_name(int type)
10463 {
10464 switch(type)
10465 {
10466 case IPT_BUTTON1: return BTN1 "Fire";
10467 case IPT_BUTTON2: return BTN2 "Jump";
10468 case IPT_JOYSTICK_LEFT: return "Slower";
10469 case IPT_JOYSTICK_RIGHT: return "Faster";
10470 } /* end of switch */
10471
10472 return "";
10473 }
10474
10475 const struct ControlInfo moonwar_ctrl =
10476 {
10477 false, /* 45_degree_rotation for joystick(s) */
10478 true, /* alternating_controls */
10479 true, /* mirrored_controls */
10480 "The game's original control panel also has a button called 'Hyper Flip' that for whatever reason isn't emulated in mame. Also the roller for this game looks more like some sort of futuristic valve and is dubbed the 'Vector Director' by the label underneath it.", /* control_details */
10481 &moonwar_get_ctrl_name
10482 };
10483
moonwar_get_ctrl_name(int type)10484 const char *moonwar_get_ctrl_name(int type)
10485 {
10486 switch(type)
10487 {
10488 case IPT_BUTTON1: return BTN1 "Fire Missile";
10489 case IPT_BUTTON2: return BTN2 "Warp Drive";
10490 case IPT_BUTTON3: return BTN3 "Shields";
10491 case IPT_DIAL: return "Left";
10492 case (IPT_DIAL + IPT_EXTENSION): return "Right";
10493 } /* end of switch */
10494
10495 return "";
10496 }
10497
10498 const struct ControlInfo mk_ctrl =
10499 {
10500 false, /* 45_degree_rotation for joystick(s) */
10501 false, /* alternating_controls */
10502 true, /* mirrored_controls */
10503 "Mame uses the jamma standard for button numbering and thus all of the mk games are completely off. The games buttons were arranged in a cross pattern with block the center of the 'X' high and low punch on the left and high and low kick on the right respectively. It is highly reccomended that you wrie ctrlr files for these gmaes if you intend to play them. Also there is actually a second block button used for sf2 conversions but it alternates between broken and half working in the mame source.", /* control_details */
10504 &mk_get_ctrl_name
10505 };
10506
mk_get_ctrl_name(int type)10507 const char *mk_get_ctrl_name(int type)
10508 {
10509 switch(type)
10510 {
10511 case IPT_BUTTON1: return BTN1 "High Punch";
10512 case IPT_BUTTON2: return BTN2 "Block";
10513 case IPT_BUTTON3: return BTN3 "High Kick";
10514 case IPT_BUTTON4: return BTN4 "Low Punch";
10515 case IPT_BUTTON5: return BTN5 "Low Kick";
10516 case IPT_JOYSTICK_UP: return "Jump";
10517 case IPT_JOYSTICK_DOWN: return "Duck";
10518 case IPT_JOYSTICK_LEFT: return "Move Left";
10519 case IPT_JOYSTICK_RIGHT: return "Move Right";
10520 } /* end of switch */
10521
10522 return "";
10523 }
10524
10525 const struct ControlInfo mk3_ctrl =
10526 {
10527 false, /* 45_degree_rotation for joystick(s) */
10528 false, /* alternating_controls */
10529 true, /* mirrored_controls */
10530 "Mame uses the jamma standard for button numbering and thus all of the mk games are completely off. The games buttons were arranged in a cross pattern with block the center of the 'X' high and low punch on the left and high and low kick on the right respectively. The Run button is placed inthe lower left hand corner, similar to a mamers 'modified Neo Geo' layout. It is highly reccomended that you write ctrlr files for these games if you intend to play them.", /* control_details */
10531 &mk3_get_ctrl_name
10532 };
10533
mk3_get_ctrl_name(int type)10534 const char *mk3_get_ctrl_name(int type)
10535 {
10536 switch(type)
10537 {
10538 case IPT_BUTTON1: return BTN1 "High Punch";
10539 case IPT_BUTTON2: return BTN2 "Block";
10540 case IPT_BUTTON3: return BTN3 "High Kick";
10541 case IPT_BUTTON4: return BTN4 "Low Punch";
10542 case IPT_BUTTON5: return BTN5 "Low Kick";
10543 case IPT_BUTTON6: return BTN6 "Run";
10544 case IPT_JOYSTICK_UP: return "Jump";
10545 case IPT_JOYSTICK_DOWN: return "Duck";
10546 case IPT_JOYSTICK_LEFT: return "Move Left";
10547 case IPT_JOYSTICK_RIGHT: return "Move Right";
10548 } /* end of switch */
10549
10550 return "";
10551 }
10552
10553 const struct ControlInfo mk4_ctrl =
10554 {
10555 false, /* 45_degree_rotation for joystick(s) */
10556 false, /* alternating_controls */
10557 true, /* mirrored_controls */
10558 "The final mortal kombat game to be released in the arcades.", /* control_details */
10559 &mk4_get_ctrl_name
10560 };
10561
mk4_get_ctrl_name(int type)10562 const char *mk4_get_ctrl_name(int type)
10563 {
10564 switch(type)
10565 {
10566 case IPT_BUTTON1: return BTN1 "High Punch";
10567 case IPT_BUTTON2: return BTN2 "Block";
10568 case IPT_BUTTON3: return BTN3 "High Kick";
10569 case IPT_BUTTON4: return BTN4 "Low Punch";
10570 case IPT_BUTTON5: return BTN5 "Low Kick";
10571 case IPT_BUTTON6: return BTN6 "Run";
10572 case IPT_JOYSTICK_UP: return "Jump";
10573 case IPT_JOYSTICK_DOWN: return "Duck";
10574 case IPT_JOYSTICK_LEFT: return "Move Left";
10575 case IPT_JOYSTICK_RIGHT: return "Move Right";
10576 } /* end of switch */
10577
10578 return "";
10579 }
10580
10581 const struct ControlInfo mk2_ctrl =
10582 {
10583 false, /* 45_degree_rotation for joystick(s) */
10584 false, /* alternating_controls */
10585 true, /* mirrored_controls */
10586 "Mame uses the jamma standard for button numbering and thus all of the mk games are completely off. The games buttons were arranged in a cross pattern with block the center of the 'X' high and low punch on the left and high and low kick on the right respectively. It is highly reccomended that you write ctrlr files for these games if you intend to play them. Also there is actually a second block button used for sf2 conversions but it alternates between broken and half working in the mame source.", /* control_details */
10587 &mk2_get_ctrl_name
10588 };
10589
mk2_get_ctrl_name(int type)10590 const char *mk2_get_ctrl_name(int type)
10591 {
10592 switch(type)
10593 {
10594 case IPT_BUTTON1: return BTN1 "High Punch";
10595 case IPT_BUTTON2: return BTN2 "Block";
10596 case IPT_BUTTON3: return BTN3 "High Kick";
10597 case IPT_BUTTON4: return BTN4 "Low Punch";
10598 case IPT_BUTTON5: return BTN5 "Low Kick";
10599 case IPT_JOYSTICK_UP: return "Jump";
10600 case IPT_JOYSTICK_DOWN: return "Duck";
10601 case IPT_JOYSTICK_LEFT: return "Move Left";
10602 case IPT_JOYSTICK_RIGHT: return "Move Right";
10603 } /* end of switch */
10604
10605 return "";
10606 }
10607
10608 const struct ControlInfo mtrap_ctrl =
10609 {
10610 false, /* 45_degree_rotation for joystick(s) */
10611 true, /* alternating_controls */
10612 true, /* mirrored_controls */
10613 "On the original control panel, the order was (from left to right) red, yellow, blue... Not the order that mame has (yellow, red, blue).", /* control_details */
10614 &mtrap_get_ctrl_name
10615 };
10616
mtrap_get_ctrl_name(int type)10617 const char *mtrap_get_ctrl_name(int type)
10618 {
10619 switch(type)
10620 {
10621 case IPT_BUTTON1: return BTN1 "Dog";
10622 case IPT_BUTTON2: return BTN2 "Doors - Yellow";
10623 case IPT_BUTTON3: return BTN3 "Doors - Red";
10624 case IPT_BUTTON4: return BTN4 "Doors - Blue";
10625 } /* end of switch */
10626
10627 return joy4way_labels(type);
10628 }
10629
10630 const struct ControlInfo mrdo_ctrl =
10631 {
10632 false, /* 45_degree_rotation for joystick(s) */
10633 true, /* alternating_controls */
10634 true, /* mirrored_controls */
10635 "", /* control_details */
10636 &mrdo_get_ctrl_name
10637 };
10638
mrdo_get_ctrl_name(int type)10639 const char *mrdo_get_ctrl_name(int type)
10640 {
10641 switch(type)
10642 {
10643 case IPT_BUTTON1: return BTN1 "Throw";
10644 } /* end of switch */
10645
10646 return joy4way_labels(type);
10647 }
10648
10649 const struct ControlInfo docastle_ctrl =
10650 {
10651 false, /* 45_degree_rotation for joystick(s) */
10652 true, /* alternating_controls */
10653 true, /* mirrored_controls */
10654 "The button is actually unlabeled.", /* control_details */
10655 &docastle_get_ctrl_name
10656 };
10657
docastle_get_ctrl_name(int type)10658 const char *docastle_get_ctrl_name(int type)
10659 {
10660 switch(type)
10661 {
10662 case IPT_BUTTON1: return BTN1 "Fire";
10663 } /* end of switch */
10664
10665 return joy4way_labels(type);
10666 }
10667
10668 const struct ControlInfo dowild_ctrl =
10669 {
10670 false, /* 45_degree_rotation for joystick(s) */
10671 true, /* alternating_controls */
10672 true, /* mirrored_controls */
10673 "", /* control_details */
10674 &dowild_get_ctrl_name
10675 };
10676
dowild_get_ctrl_name(int type)10677 const char *dowild_get_ctrl_name(int type)
10678 {
10679 switch(type)
10680 {
10681 case IPT_BUTTON1: return BTN1 "Run";
10682 } /* end of switch */
10683
10684 return joy4way_labels(type);
10685 }
10686
10687 const struct ControlInfo mrdrillr_ctrl =
10688 {
10689 false, /* 45_degree_rotation for joystick(s) */
10690 true, /* alternating_controls */
10691 true, /* mirrored_controls */
10692 "The drill button is actually unlabeled as the game was only sold in a conversion kit with a very generic namco overlay.", /* control_details */
10693 &mrdrillr_get_ctrl_name
10694 };
10695
mrdrillr_get_ctrl_name(int type)10696 const char *mrdrillr_get_ctrl_name(int type)
10697 {
10698 switch(type)
10699 {
10700 case IPT_BUTTON1: return BTN1 "Drill";
10701 } /* end of switch */
10702
10703 return joy4way_labels(type);
10704 }
10705
10706 const struct ControlInfo mspacman_ctrl =
10707 {
10708 false, /* 45_degree_rotation for joystick(s) */
10709 true, /* alternating_controls */
10710 true, /* mirrored_controls */
10711 "", /* control_details */
10712 &mspacman_get_ctrl_name
10713 };
10714
mspacman_get_ctrl_name(int type)10715 const char *mspacman_get_ctrl_name(int type)
10716 {
10717 return joy4way_labels(type);
10718 }
10719
10720 const struct ControlInfo mvp_ctrl =
10721 {
10722 false, /* 45_degree_rotation for joystick(s) */
10723 false, /* alternating_controls */
10724 true, /* mirrored_controls */
10725 "The buttons aren't labeled red, yellow and blue rather that is their color. The instruction card uses these colors to explain the various functions of the buttons.", /* control_details */
10726 &mvp_get_ctrl_name
10727 };
10728
mvp_get_ctrl_name(int type)10729 const char *mvp_get_ctrl_name(int type)
10730 {
10731 switch(type)
10732 {
10733 case IPT_BUTTON1: return BTN1 "Red";
10734 case IPT_BUTTON2: return BTN2 "Yellow";
10735 case IPT_BUTTON3: return BTN3 "Blue";
10736 } /* end of switch */
10737
10738 return joy4way_labels(type);
10739 }
10740
10741 const struct ControlInfo mx5000_ctrl =
10742 {
10743 false, /* 45_degree_rotation for joystick(s) */
10744 true, /* alternating_controls */
10745 true, /* mirrored_controls */
10746 "Air-to-air and air-to-ground refer to missiles.", /* control_details */
10747 &mx5000_get_ctrl_name
10748 };
10749
mx5000_get_ctrl_name(int type)10750 const char *mx5000_get_ctrl_name(int type)
10751 {
10752 switch(type)
10753 {
10754 case IPT_BUTTON1: return BTN1 "Air - to - Air";
10755 case IPT_BUTTON2: return BTN2 "Air - to - Ground";
10756 } /* end of switch */
10757
10758 return joy4way_labels(type);
10759 }
10760
10761 const struct ControlInfo mysticm_ctrl =
10762 {
10763 false, /* 45_degree_rotation for joystick(s) */
10764 true, /* alternating_controls */
10765 true, /* mirrored_controls */
10766 "", /* control_details */
10767 &mysticm_get_ctrl_name
10768 };
10769
mysticm_get_ctrl_name(int type)10770 const char *mysticm_get_ctrl_name(int type)
10771 {
10772 switch(type)
10773 {
10774 case IPT_BUTTON1: return BTN1 "Jump";
10775 } /* end of switch */
10776
10777 return joy4way_labels(type);
10778 }
10779
10780 const struct ControlInfo mystwarr_ctrl =
10781 {
10782 false, /* 45_degree_rotation for joystick(s) */
10783 false, /* alternating_controls */
10784 true, /* mirrored_controls */
10785 "Mame has three buttons, but only uses the first two. There is a dipswitch to change between 2 and 4 players.", /* control_details */
10786 &mystwarr_get_ctrl_name
10787 };
10788
mystwarr_get_ctrl_name(int type)10789 const char *mystwarr_get_ctrl_name(int type)
10790 {
10791 switch(type)
10792 {
10793 case IPT_BUTTON1: return BTN1 "Shoot";
10794 case IPT_BUTTON2: return BTN2 "Jump";
10795 case IPT_BUTTON3: return BTN3 "NA";
10796 } /* end of switch */
10797
10798 return joy4way_labels(type);
10799 }
10800
10801 const struct ControlInfo nametune_ctrl =
10802 {
10803 false, /* 45_degree_rotation for joystick(s) */
10804 false, /* alternating_controls */
10805 true, /* mirrored_controls */
10806 "The game used special lighted buttons for the tune buttons.", /* control_details */
10807 &nametune_get_ctrl_name
10808 };
10809
nametune_get_ctrl_name(int type)10810 const char *nametune_get_ctrl_name(int type)
10811 {
10812 switch(type)
10813 {
10814 case IPT_BUTTON1: return BTN1 "1";
10815 case IPT_BUTTON2: return BTN2 "2";
10816 case IPT_BUTTON3: return BTN3 "3";
10817 case IPT_BUTTON4: return BTN4 "4";
10818 } /* end of switch */
10819
10820 return "";
10821 }
10822
10823 const struct ControlInfo narc_ctrl =
10824 {
10825 false, /* 45_degree_rotation for joystick(s) */
10826 false, /* alternating_controls */
10827 true, /* mirrored_controls */
10828 "", /* control_details */
10829 &narc_get_ctrl_name
10830 };
10831
narc_get_ctrl_name(int type)10832 const char *narc_get_ctrl_name(int type)
10833 {
10834 switch(type)
10835 {
10836 case IPT_BUTTON1: return BTN1 "Fire";
10837 case IPT_BUTTON2: return BTN2 "Jump";
10838 case IPT_BUTTON3: return BTN3 "Crouch";
10839 case IPT_BUTTON4: return BTN4 "Rocket Bomb";
10840 } /* end of switch */
10841
10842 return joy4way_labels(type);
10843 }
10844
10845 const struct ControlInfo nastar_ctrl =
10846 {
10847 false, /* 45_degree_rotation for joystick(s) */
10848 true, /* alternating_controls */
10849 true, /* mirrored_controls */
10850 "The orignal cpo lacks labels.", /* control_details */
10851 &nastar_get_ctrl_name
10852 };
10853
nastar_get_ctrl_name(int type)10854 const char *nastar_get_ctrl_name(int type)
10855 {
10856 switch(type)
10857 {
10858 case IPT_BUTTON1: return BTN1 "Attack";
10859 case IPT_BUTTON2: return BTN2 "Jump";
10860 } /* end of switch */
10861
10862 return joy4way_labels(type);
10863 }
10864
10865 const struct ControlInfo natodef_ctrl =
10866 {
10867 false, /* 45_degree_rotation for joystick(s) */
10868 true, /* alternating_controls */
10869 true, /* mirrored_controls */
10870 "The cpo actually had pictures of the tank going in various directions for the joystick labels.", /* control_details */
10871 &natodef_get_ctrl_name
10872 };
10873
natodef_get_ctrl_name(int type)10874 const char *natodef_get_ctrl_name(int type)
10875 {
10876 switch(type)
10877 {
10878 case IPT_BUTTON1: return BTN1 "1";
10879 } /* end of switch */
10880
10881 return joy4way_labels(type);
10882 }
10883
10884 const struct ControlInfo naughtyb_ctrl =
10885 {
10886 false, /* 45_degree_rotation for joystick(s) */
10887 true, /* alternating_controls */
10888 true, /* mirrored_controls */
10889 "", /* control_details */
10890 &naughtyb_get_ctrl_name
10891 };
10892
naughtyb_get_ctrl_name(int type)10893 const char *naughtyb_get_ctrl_name(int type)
10894 {
10895 switch(type)
10896 {
10897 case IPT_BUTTON1: return BTN1 "Throw";
10898 } /* end of switch */
10899
10900 return joy4way_labels(type);
10901 }
10902
10903 const struct ControlInfo nbahangt_ctrl =
10904 {
10905 false, /* 45_degree_rotation for joystick(s) */
10906 false, /* alternating_controls */
10907 true, /* mirrored_controls */
10908 "Default setting is for 2-player cabinet but this can be changed to 4-player as a dip switch setting", /* control_details */
10909 &nbahangt_get_ctrl_name
10910 };
10911
nbahangt_get_ctrl_name(int type)10912 const char *nbahangt_get_ctrl_name(int type)
10913 {
10914 switch(type)
10915 {
10916 case IPT_BUTTON1: return BTN1 "Turbo";
10917 case IPT_BUTTON2: return BTN2 "Shoot / Block";
10918 case IPT_BUTTON3: return BTN3 "Pass / Steal";
10919 } /* end of switch */
10920
10921 return joy4way_labels(type);
10922 }
10923
10924 const struct ControlInfo nbajam_ctrl =
10925 {
10926 false, /* 45_degree_rotation for joystick(s) */
10927 false, /* alternating_controls */
10928 true, /* mirrored_controls */
10929 "", /* control_details */
10930 &nbajam_get_ctrl_name
10931 };
10932
nbajam_get_ctrl_name(int type)10933 const char *nbajam_get_ctrl_name(int type)
10934 {
10935 switch(type)
10936 {
10937 case IPT_BUTTON1: return BTN1 "Turbo";
10938 case IPT_BUTTON2: return BTN2 "Shoot / Block";
10939 case IPT_BUTTON3: return BTN3 "Pass / Steal";
10940 } /* end of switch */
10941
10942 return joy4way_labels(type);
10943 }
10944
10945 const struct ControlInfo neckneck_ctrl =
10946 {
10947 false, /* 45_degree_rotation for joystick(s) */
10948 false, /* alternating_controls */
10949 true, /* mirrored_controls */
10950 "Even though this game allows 6 players, it is wired to a single player layout in mame, due to the odd layout. Each numbered button represents a horse a player can control. it also doubles as a start button for that player. All the button does is jump. There is also a global start button that starts the race without giving others time to join. This is mapped to player 1 start in mame.", /* control_details */
10951 &neckneck_get_ctrl_name
10952 };
10953
neckneck_get_ctrl_name(int type)10954 const char *neckneck_get_ctrl_name(int type)
10955 {
10956 switch(type)
10957 {
10958 case IPT_BUTTON1: return BTN1 "1";
10959 case IPT_BUTTON2: return BTN2 "2";
10960 case IPT_BUTTON3: return BTN3 "3";
10961 case IPT_BUTTON4: return BTN4 "4";
10962 case IPT_BUTTON5: return BTN5 "5";
10963 case IPT_BUTTON6: return BTN6 "6";
10964 } /* end of switch */
10965
10966 return "";
10967 }
10968
10969 const struct ControlInfo neogeo_ctrl =
10970 {
10971 false, /* 45_degree_rotation for joystick(s) */
10972 false, /* alternating_controls */
10973 true, /* mirrored_controls */
10974 "The Neo Geo MVS system is a generic cabinet that can have games swapped out very easily, similar to console games. A single game cabinet, a 2 game, 4 game, and 6 game variation were manufactured. The multi-cart versions had buttons to switch to a new game prior to inserting your quarter. This feature is unemulated as of MAME 0.141. Neo Geo cabinets all used the same control layout and relied upon inserts to explain to the consumer what button had what function. Most Neo Geo games begin with a 'How to Play' screen with gameplay information.", /* control_details */
10975 &neogeo_get_ctrl_name
10976 };
10977
neogeo_get_ctrl_name(int type)10978 const char *neogeo_get_ctrl_name(int type)
10979 {
10980 switch(type)
10981 {
10982 case IPT_BUTTON1: return BTN1 "Neo Geo A";
10983 case IPT_BUTTON2: return BTN2 "Neo Geo B";
10984 case IPT_BUTTON3: return BTN3 "Neo Geo C";
10985 case IPT_BUTTON4: return BTN4 "Neo Geo D";
10986 } /* end of switch */
10987
10988 return joy4way_labels(type);
10989 }
10990
10991
10992 const struct ControlInfo nyny_ctrl =
10993 {
10994 false, /* 45_degree_rotation for joystick(s) */
10995 true, /* alternating_controls */
10996 true, /* mirrored_controls */
10997 "The cpo also has a general caption for the joystick, but it's unreadable.", /* control_details */
10998 &nyny_get_ctrl_name
10999 };
11000
nyny_get_ctrl_name(int type)11001 const char *nyny_get_ctrl_name(int type)
11002 {
11003 switch(type)
11004 {
11005 case IPT_BUTTON1: return BTN1 "Fire";
11006 } /* end of switch */
11007
11008 return joy2way_labels(type);
11009 }
11010
11011 const struct ControlInfo blitz_ctrl =
11012 {
11013 false, /* 45_degree_rotation for joystick(s) */
11014 false, /* alternating_controls */
11015 true, /* mirrored_controls */
11016 "OTHER: There is a dipswitch to use either two 49-way or two 8-way joysticks for direction control. AFAIK, all blitz dedicated cabs came with 49-way stick /* control_details */ some upgrade kits came with 49-way sticks, others without any sticks (I guess assumed operator would use already installed 8-ways). Mame currently (0.82u3) only emulates the 8-way. In-game instructions sometimes refer to the buttons by their color instead of the label. Turbo = White, Jump = Blue, Pass = Red. When choosing the offensive play: the Turbo (White) button switches between the two pages of plays, Jump (Blue) flips the play directions left to right, and Pass (Red) chooses the highlighted play. When choosing the defensive play: any button chooses the highlighted play (only one page, and plays can't be flipped). When choosing either offense and defense you can turn off showing which play is highlighted by pressing up on the joystick three times (useful when playing against another player). Turbo + Pass when running with the ball gives a stiff arm. Tapping Turbo twice when running with the ball gives a spin.", /* control_details */
11017 &blitz_get_ctrl_name
11018 };
11019
blitz_get_ctrl_name(int type)11020 const char *blitz_get_ctrl_name(int type)
11021 {
11022 switch(type)
11023 {
11024 case IPT_BUTTON1: return BTN1 "Turbo";
11025 case IPT_BUTTON2: return BTN2 "Jump/Tackle";
11026 case IPT_BUTTON3: return BTN3 "Pass/Change Player";
11027 } /* end of switch */
11028
11029 return joy4way_labels(type);
11030 }
11031
11032 const struct ControlInfo nibbler_ctrl =
11033 {
11034 false, /* 45_degree_rotation for joystick(s) */
11035 true, /* alternating_controls */
11036 true, /* mirrored_controls */
11037 "", /* control_details */
11038 &nibbler_get_ctrl_name
11039 };
11040
nibbler_get_ctrl_name(int type)11041 const char *nibbler_get_ctrl_name(int type)
11042 {
11043 return joy4way_labels(type);
11044 }
11045
11046 const struct ControlInfo nss_ctrl =
11047 {
11048 false, /* 45_degree_rotation for joystick(s) */
11049 false, /* alternating_controls */
11050 true, /* mirrored_controls */
11051 "The Nintendo Super System is the super nintendo version of the playchoice system and it runs on basically the same concept. The control panel has 2 (or 4) industrial versions of the snes control pad mounted to it. Please note that as of this posting, the mame driver doesn't emulate the nss fully. Game select buttons aren't implemented yet. Also note that the gamepad's select buttons are mapped to service buttons 1-4 respectively.", /* control_details */
11052 &nss_get_ctrl_name
11053 };
11054
nss_get_ctrl_name(int type)11055 const char *nss_get_ctrl_name(int type)
11056 {
11057 switch(type)
11058 {
11059 case IPT_BUTTON1: return BTN1 "B";
11060 case IPT_BUTTON2: return BTN2 "Y";
11061 case IPT_BUTTON3: return BTN3 "A";
11062 case IPT_BUTTON4: return BTN4 "X";
11063 case IPT_BUTTON5: return BTN5 "L";
11064 case IPT_BUTTON6: return BTN6 "R";
11065 case IPT_SERVICE1: return "Select (Player 1)";
11066 case IPT_SERVICE2: return "Select (Player 2)";
11067 case IPT_SERVICE3: return "Select (Player 3)";
11068 case IPT_SERVICE4: return "Select (Player 4)";
11069 } /* end of switch */
11070
11071 return joy4way_labels(type);
11072 }
11073
11074 const struct ControlInfo nomnlnd_ctrl =
11075 {
11076 false, /* 45_degree_rotation for joystick(s) */
11077 true, /* alternating_controls */
11078 true, /* mirrored_controls */
11079 "", /* control_details */
11080 &nomnlnd_get_ctrl_name
11081 };
11082
nomnlnd_get_ctrl_name(int type)11083 const char *nomnlnd_get_ctrl_name(int type)
11084 {
11085 switch(type)
11086 {
11087 case IPT_BUTTON1: return BTN1 "Fire!";
11088 } /* end of switch */
11089
11090 return joy4way_labels(type);
11091 }
11092
11093 const struct ControlInfo nova2001_ctrl =
11094 {
11095 false, /* 45_degree_rotation for joystick(s) */
11096 true, /* alternating_controls */
11097 true, /* mirrored_controls */
11098 "This game had a pause button (unlabeled on the cpo) but apparently the feature isn't working in mame.", /* control_details */
11099 &nova2001_get_ctrl_name
11100 };
11101
nova2001_get_ctrl_name(int type)11102 const char *nova2001_get_ctrl_name(int type)
11103 {
11104 switch(type)
11105 {
11106 case IPT_BUTTON1: return BTN1 "Fire";
11107 case IPT_BUTTON2: return BTN2 "Pause";
11108 } /* end of switch */
11109
11110 return joy4way_labels(type);
11111 }
11112
11113 const struct ControlInfo olibochu_ctrl =
11114 {
11115 false, /* 45_degree_rotation for joystick(s) */
11116 true, /* alternating_controls */
11117 true, /* mirrored_controls */
11118 "", /* control_details */
11119 &olibochu_get_ctrl_name
11120 };
11121
olibochu_get_ctrl_name(int type)11122 const char *olibochu_get_ctrl_name(int type)
11123 {
11124 return joy4way_labels(type);
11125 }
11126
11127 const struct ControlInfo omegrace_ctrl =
11128 {
11129 false, /* 45_degree_rotation for joystick(s) */
11130 true, /* alternating_controls */
11131 true, /* mirrored_controls */
11132 "This game acutally uses one of the very rare optical dials. No it doesn't really spin, you turn it like a paddle. Ironically, I believe that this was one of mame's first optical games and thus the 2 way optical was named 'dial' instead of 'spinner,' which is what most optical mame games have.", /* control_details */
11133 &omegrace_get_ctrl_name
11134 };
11135
omegrace_get_ctrl_name(int type)11136 const char *omegrace_get_ctrl_name(int type)
11137 {
11138 switch(type)
11139 {
11140 case IPT_BUTTON1: return BTN1 "Fire";
11141 case IPT_BUTTON2: return BTN2 "Thrust";
11142 case IPT_DIAL: return "Left";
11143 case (IPT_DIAL + IPT_EXTENSION): return "Right";
11144 } /* end of switch */
11145
11146 return "";
11147 }
11148
11149 const struct ControlInfo oneshot_ctrl =
11150 {
11151 false, /* 45_degree_rotation for joystick(s) */
11152 false, /* alternating_controls */
11153 true, /* mirrored_controls */
11154 "", /* control_details */
11155 &oneshot_get_ctrl_name
11156 };
11157
oneshot_get_ctrl_name(int type)11158 const char *oneshot_get_ctrl_name(int type)
11159 {
11160 switch(type)
11161 {
11162 case IPT_BUTTON1: return BTN1 "Fire";
11163 case IPT_LIGHTGUN_X: return "Aim Left";
11164 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
11165 case IPT_LIGHTGUN_Y: return "Aim Up";
11166 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
11167 } /* end of switch */
11168
11169 return "";
11170 }
11171
11172 const struct ControlInfo othunder_ctrl =
11173 {
11174 false, /* 45_degree_rotation for joystick(s) */
11175 false, /* alternating_controls */
11176 true, /* mirrored_controls */
11177 "", /* control_details */
11178 &othunder_get_ctrl_name
11179 };
11180
othunder_get_ctrl_name(int type)11181 const char *othunder_get_ctrl_name(int type)
11182 {
11183 switch(type)
11184 {
11185 case IPT_BUTTON1: return BTN1 "Fire";
11186 case IPT_BUTTON2: return BTN2 "Grenade";
11187 case IPT_LIGHTGUN_X: return "Aim Left";
11188 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
11189 case IPT_LIGHTGUN_Y: return "Aim Up";
11190 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
11191 } /* end of switch */
11192
11193 return "";
11194 }
11195
11196 const struct ControlInfo opwolf_ctrl =
11197 {
11198 false, /* 45_degree_rotation for joystick(s) */
11199 false, /* alternating_controls */
11200 false, /* mirrored_controls */
11201 "", /* control_details */
11202 &opwolf_get_ctrl_name
11203 };
11204
opwolf_get_ctrl_name(int type)11205 const char *opwolf_get_ctrl_name(int type)
11206 {
11207 switch(type)
11208 {
11209 case IPT_BUTTON1: return BTN1 "Fire";
11210 case IPT_BUTTON2: return BTN2 "Rocket Gun";
11211 case IPT_LIGHTGUN_X: return "Aim Left";
11212 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
11213 case IPT_LIGHTGUN_Y: return "Aim Up";
11214 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
11215 } /* end of switch */
11216
11217 return "";
11218 }
11219
11220 const struct ControlInfo opwolf3_ctrl =
11221 {
11222 false, /* 45_degree_rotation for joystick(s) */
11223 false, /* alternating_controls */
11224 true, /* mirrored_controls */
11225 "The bomb button is actually the reload cock on the gun. Yes this doesn't make any sense, just go with it.", /* control_details */
11226 &opwolf3_get_ctrl_name
11227 };
11228
opwolf3_get_ctrl_name(int type)11229 const char *opwolf3_get_ctrl_name(int type)
11230 {
11231 switch(type)
11232 {
11233 case IPT_BUTTON1: return BTN1 "Shoot";
11234 case IPT_BUTTON2: return BTN2 "Bomb";
11235 case IPT_LIGHTGUN_X: return "Aim Left";
11236 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
11237 case IPT_LIGHTGUN_Y: return "Aim Up";
11238 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
11239 } /* end of switch */
11240
11241 return "";
11242 }
11243
11244 const struct ControlInfo outrun_ctrl =
11245 {
11246 false, /* 45_degree_rotation for joystick(s) */
11247 false, /* alternating_controls */
11248 false, /* mirrored_controls */
11249 "The shifter is hard-coded to the space-bar to avoid conflicts.", /* control_details */
11250 &outrun_get_ctrl_name
11251 };
11252
outrun_get_ctrl_name(int type)11253 const char *outrun_get_ctrl_name(int type)
11254 {
11255 switch(type)
11256 {
11257 case IPT_BUTTON1: return BTN1 "High / Low";
11258 case IPT_PADDLE: return "Left";
11259 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
11260 case IPT_PEDAL: return "Accelerate";
11261 case IPT_PEDAL2: return "Brake";
11262 } /* end of switch */
11263
11264 return "";
11265 }
11266
11267 const struct ControlInfo overdriv_ctrl =
11268 {
11269 false, /* 45_degree_rotation for joystick(s) */
11270 false, /* alternating_controls */
11271 false, /* mirrored_controls */
11272 "", /* control_details */
11273 &overdriv_get_ctrl_name
11274 };
11275
overdriv_get_ctrl_name(int type)11276 const char *overdriv_get_ctrl_name(int type)
11277 {
11278 switch(type)
11279 {
11280 case IPT_BUTTON1: return BTN1 "Accelerate";
11281 case IPT_BUTTON2: return BTN2 "Brake";
11282 case IPT_BUTTON3: return BTN3 "High / Low";
11283 case IPT_DIAL: return "Left";
11284 case (IPT_DIAL + IPT_EXTENSION): return "Right";
11285 } /* end of switch */
11286
11287 return "";
11288 }
11289
11290 const struct ControlInfo pow_ctrl =
11291 {
11292 false, /* 45_degree_rotation for joystick(s) */
11293 false, /* alternating_controls */
11294 true, /* mirrored_controls */
11295 "On the original cpo, the buttons are in 'Double Dragon' configuration (jump on the top row, punch and kick on the bottom). You may wish to remap for comfort", /* control_details */
11296 &pow_get_ctrl_name
11297 };
11298
pow_get_ctrl_name(int type)11299 const char *pow_get_ctrl_name(int type)
11300 {
11301 switch(type)
11302 {
11303 case IPT_BUTTON1: return BTN1 "Kick";
11304 case IPT_BUTTON2: return BTN2 "Jump";
11305 case IPT_BUTTON3: return BTN3 "Punch";
11306 } /* end of switch */
11307
11308 return joy4way_labels(type);
11309 }
11310
11311 const struct ControlInfo pacland_ctrl =
11312 {
11313 false, /* 45_degree_rotation for joystick(s) */
11314 true, /* alternating_controls */
11315 true, /* mirrored_controls */
11316 "", /* control_details */
11317 &pacland_get_ctrl_name
11318 };
11319
pacland_get_ctrl_name(int type)11320 const char *pacland_get_ctrl_name(int type)
11321 {
11322 switch(type)
11323 {
11324 case IPT_BUTTON1: return BTN1 "Jump";
11325 case IPT_JOYSTICK_LEFT: return "Run Left";
11326 case IPT_JOYSTICK_RIGHT: return "Run Right";
11327 } /* end of switch */
11328
11329 return "";
11330 }
11331
11332 const struct ControlInfo pacplus_ctrl =
11333 {
11334 false, /* 45_degree_rotation for joystick(s) */
11335 true, /* alternating_controls */
11336 true, /* mirrored_controls */
11337 "", /* control_details */
11338 &pacplus_get_ctrl_name
11339 };
11340
pacplus_get_ctrl_name(int type)11341 const char *pacplus_get_ctrl_name(int type)
11342 {
11343 return joy4way_labels(type);
11344 }
11345
11346 const struct ControlInfo pacmania_ctrl =
11347 {
11348 false, /* 45_degree_rotation for joystick(s) */
11349 true, /* alternating_controls */
11350 true, /* mirrored_controls */
11351 "The original CP had one button on either side of the CP for Bounce. Note By HowarC: This seems to be a glitch in mame caused by a sloppy macro. For now three buttons is ok, but I will submit a new driver which ditches the other two.", /* control_details */
11352 &pacmania_get_ctrl_name
11353 };
11354
pacmania_get_ctrl_name(int type)11355 const char *pacmania_get_ctrl_name(int type)
11356 {
11357 switch(type)
11358 {
11359 case IPT_BUTTON1: return BTN1 "Bounce";
11360 case IPT_BUTTON2: return BTN2 "Bounce";
11361 case IPT_BUTTON3: return BTN3 "Bounce";
11362 } /* end of switch */
11363
11364 return joy4way_labels(type);
11365 }
11366
11367 const struct ControlInfo paddlema_ctrl =
11368 {
11369 false, /* 45_degree_rotation for joystick(s) */
11370 false, /* alternating_controls */
11371 true, /* mirrored_controls */
11372 "This game is 4 player but only one start button is used. Upon inserting a coin and presing start, you are presented with a menu to choose the number of players and play mode.", /* control_details */
11373 &paddlema_get_ctrl_name
11374 };
11375
paddlema_get_ctrl_name(int type)11376 const char *paddlema_get_ctrl_name(int type)
11377 {
11378 switch(type)
11379 {
11380 case IPT_BUTTON1: return BTN1 "Bounce";
11381 } /* end of switch */
11382
11383 return joy4way_labels(type);
11384 }
11385
11386 const struct ControlInfo pandoras_ctrl =
11387 {
11388 false, /* 45_degree_rotation for joystick(s) */
11389 true, /* alternating_controls */
11390 true, /* mirrored_controls */
11391 "", /* control_details */
11392 &pandoras_get_ctrl_name
11393 };
11394
pandoras_get_ctrl_name(int type)11395 const char *pandoras_get_ctrl_name(int type)
11396 {
11397 switch(type)
11398 {
11399 case IPT_BUTTON1: return BTN1 "Jump";
11400 } /* end of switch */
11401
11402 return joy4way_labels(type);
11403 }
11404
11405 const struct ControlInfo paperboy_ctrl =
11406 {
11407 false, /* 45_degree_rotation for joystick(s) */
11408 true, /* alternating_controls */
11409 true, /* mirrored_controls */
11410 "Game used a handlebar controller, Pushing forward on the handles made the bike speed up, pulling back slowed it down.", /* control_details */
11411 &paperboy_get_ctrl_name
11412 };
11413
paperboy_get_ctrl_name(int type)11414 const char *paperboy_get_ctrl_name(int type)
11415 {
11416 switch(type)
11417 {
11418 case IPT_BUTTON1: return BTN1 "Throw";
11419 case IPT_BUTTON2: return BTN2 "Throw";
11420 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
11421 case IPT_AD_STICK_X: return "Left";
11422 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Break";
11423 case IPT_AD_STICK_Y: return "Accelerate";
11424 } /* end of switch */
11425
11426 return "";
11427 }
11428
11429 const struct ControlInfo pastelg_ctrl =
11430 {
11431 false, /* 45_degree_rotation for joystick(s) */
11432 true, /* alternating_controls */
11433 true, /* mirrored_controls */
11434 "Mahjong games are NOT compatable with ctrlr files. As a matter of fact they pretty much all have the same layout and all have the same controls. The controls are hardcoded, so remapping isn't reccomended, especially considering the fact that a full keyboard of buttons are required to play.", /* control_details */
11435 &pastelg_get_ctrl_name
11436 };
11437
pastelg_get_ctrl_name(int type)11438 const char *pastelg_get_ctrl_name(int type)
11439 {
11440 return "";
11441 }
11442
11443 const struct ControlInfo pengo_ctrl =
11444 {
11445 false, /* 45_degree_rotation for joystick(s) */
11446 true, /* alternating_controls */
11447 true, /* mirrored_controls */
11448 "", /* control_details */
11449 &pengo_get_ctrl_name
11450 };
11451
pengo_get_ctrl_name(int type)11452 const char *pengo_get_ctrl_name(int type)
11453 {
11454 switch(type)
11455 {
11456 case IPT_BUTTON1: return BTN1 "Push";
11457 } /* end of switch */
11458
11459 return joy4way_labels(type);
11460 }
11461
11462 const struct ControlInfo pepper2_ctrl =
11463 {
11464 false, /* 45_degree_rotation for joystick(s) */
11465 true, /* alternating_controls */
11466 true, /* mirrored_controls */
11467 "", /* control_details */
11468 &pepper2_get_ctrl_name
11469 };
11470
pepper2_get_ctrl_name(int type)11471 const char *pepper2_get_ctrl_name(int type)
11472 {
11473 return joy4way_labels(type);
11474 }
11475
11476 const struct ControlInfo peterpak_ctrl =
11477 {
11478 false, /* 45_degree_rotation for joystick(s) */
11479 true, /* alternating_controls */
11480 true, /* mirrored_controls */
11481 "This game uses a unique type of trigger stick that is rarely used. Although it looks different, the diagrams show similar mounting and throw of a more standard tron stick.", /* control_details */
11482 &peterpak_get_ctrl_name
11483 };
11484
peterpak_get_ctrl_name(int type)11485 const char *peterpak_get_ctrl_name(int type)
11486 {
11487 switch(type)
11488 {
11489 case IPT_BUTTON1: return BTN1 "Throw";
11490 case IPT_BUTTON2: return BTN2 "Jump";
11491 } /* end of switch */
11492
11493 return joy4way_labels(type);
11494 }
11495
11496 const struct ControlInfo phoenix_ctrl =
11497 {
11498 false, /* 45_degree_rotation for joystick(s) */
11499 true, /* alternating_controls */
11500 true, /* mirrored_controls */
11501 "", /* control_details */
11502 &phoenix_get_ctrl_name
11503 };
11504
phoenix_get_ctrl_name(int type)11505 const char *phoenix_get_ctrl_name(int type)
11506 {
11507 switch(type)
11508 {
11509 case IPT_BUTTON1: return BTN1 "Fire";
11510 case IPT_BUTTON2: return BTN2 "Force Field";
11511 } /* end of switch */
11512
11513 return joy2way_labels(type);
11514 }
11515
11516 const struct ControlInfo pigout_ctrl =
11517 {
11518 false, /* 45_degree_rotation for joystick(s) */
11519 false, /* alternating_controls */
11520 true, /* mirrored_controls */
11521 "", /* control_details */
11522 &pigout_get_ctrl_name
11523 };
11524
pigout_get_ctrl_name(int type)11525 const char *pigout_get_ctrl_name(int type)
11526 {
11527 switch(type)
11528 {
11529 case IPT_BUTTON1: return BTN1 "Jump";
11530 case IPT_BUTTON2: return BTN2 "Throw";
11531 } /* end of switch */
11532
11533 return joy4way_labels(type);
11534 }
11535
11536 const struct ControlInfo pigskin_ctrl =
11537 {
11538 false, /* 45_degree_rotation for joystick(s) */
11539 false, /* alternating_controls */
11540 true, /* mirrored_controls */
11541 "OTHER: This game used a 49-way joystick. This game was recently updated to accomidate true analog inputs to better emulate the 49-way joystick. Unfortunately, they turned an othewise tidy driver into an ungodly mess. The stick is there and oddly enough three joystick directions (up, down, and only left) and now the normal 'button 1' labels are overwritten with the game selection labels, which are secondary functions and should NOT be the custom labels for the buttons. For the love of all things good, someone PLEASE fix this driver. The joystick controls one player, but when you punch, the rest of the team also punches. If another teammate has the ball and you press the pass button, he passes the ball to you. If you have the ball and press and hold the pass button, the choices rolls between long, short, back passes, and a drop kick, which happens when you let go of the button.", /* control_details */
11542 &pigskin_get_ctrl_name
11543 };
11544
pigskin_get_ctrl_name(int type)11545 const char *pigskin_get_ctrl_name(int type)
11546 {
11547 switch(type)
11548 {
11549 case IPT_BUTTON1: return BTN1 "Punch";
11550 case IPT_BUTTON2: return BTN2 "Pass";
11551 case IPT_BUTTON3: return BTN3 "Team Attitude";
11552 case IPT_AD_STICK_X: return "Left";
11553 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
11554 case IPT_AD_STICK_Y: return "Up";
11555 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
11556 } /* end of switch */
11557
11558 return "";
11559 }
11560
11561 const struct ControlInfo pbaction_ctrl =
11562 {
11563 false, /* 45_degree_rotation for joystick(s) */
11564 true, /* alternating_controls */
11565 true, /* mirrored_controls */
11566 "The cpo lables are a little misleading. By 'Start' it actually refers to launching the pinball, not the start button, which the game actually has two of. Also, although there are two buttons on each side Labeled 'Start And Shake' apparently, only the left button starts and only the right button shakes. This may be a mame issue though. My best guess is on the original cpo, each button was cross-wired to both switches as a last-minute layout decision.", /* control_details */
11567 &pbaction_get_ctrl_name
11568 };
11569
pbaction_get_ctrl_name(int type)11570 const char *pbaction_get_ctrl_name(int type)
11571 {
11572 switch(type)
11573 {
11574 case IPT_BUTTON1: return BTN1 "Left Flipper Button";
11575 case IPT_BUTTON2: return BTN2 "Right Flipper Button";
11576 case IPT_BUTTON3: return BTN3 "Shake and Start Button (Left)";
11577 case IPT_BUTTON4: return BTN4 "Shake and Start Button (Right)";
11578 } /* end of switch */
11579
11580 return "";
11581 }
11582
11583 const struct ControlInfo piratetr_ctrl =
11584 {
11585 false, /* 45_degree_rotation for joystick(s) */
11586 true, /* alternating_controls */
11587 true, /* mirrored_controls */
11588 "The games cpo didn't have any directional arrows, nor did it have any labels, probably due to the simplistic layout.", /* control_details */
11589 &piratetr_get_ctrl_name
11590 };
11591
piratetr_get_ctrl_name(int type)11592 const char *piratetr_get_ctrl_name(int type)
11593 {
11594 return joy4way_labels(type);
11595 }
11596
11597 const struct ControlInfo pitfight_ctrl =
11598 {
11599 false, /* 45_degree_rotation for joystick(s) */
11600 false, /* alternating_controls */
11601 true, /* mirrored_controls */
11602 "Although in the arcades the start buton was also the jump button, this is not the case in mame. My guess is in the arcades two inputs were wired to the same button to save space much like in other 3 and 4 player games. This game only had a 2 player verison in japan, but often the 3 player us version was also used in a 2 player cabinet because of the way the menu is setup. Unlike most multiplayer games, the coin slots are shared and you can select each character regardless of which stick you press start at.", /* control_details */
11603 &pitfight_get_ctrl_name
11604 };
11605
pitfight_get_ctrl_name(int type)11606 const char *pitfight_get_ctrl_name(int type)
11607 {
11608 switch(type)
11609 {
11610 case IPT_BUTTON1: return BTN1 "Punch";
11611 case IPT_BUTTON2: return BTN2 "Kick";
11612 case IPT_BUTTON3: return BTN3 "Start / Jump";
11613 } /* end of switch */
11614
11615 return joy4way_labels(type);
11616 }
11617
11618 const struct ControlInfo pitfall2_ctrl =
11619 {
11620 false, /* 45_degree_rotation for joystick(s) */
11621 true, /* alternating_controls */
11622 true, /* mirrored_controls */
11623 "The actual cpo for this game didn't have a label for the button, nor a visual hint of what it's for. Also the manual doesn't explicitly say that the button is the 'jump' button. This is probably due to the fact that the pitfall series is one of the most popular in early gaming history and you'd have to live in a cave not to know that the button is for jumping.", /* control_details */
11624 &pitfall2_get_ctrl_name
11625 };
11626
pitfall2_get_ctrl_name(int type)11627 const char *pitfall2_get_ctrl_name(int type)
11628 {
11629 switch(type)
11630 {
11631 case IPT_BUTTON1: return BTN1 "Jump";
11632 } /* end of switch */
11633
11634 return joy4way_labels(type);
11635 }
11636
11637 const struct ControlInfo playch10_ctrl =
11638 {
11639 false, /* 45_degree_rotation for joystick(s) */
11640 false, /* alternating_controls */
11641 false, /* mirrored_controls */
11642 "The playchoice 10 system is a pay-per-play system based on the original nes console and plays the same titles. Instead of purchasing lives, you purchase time on the machine. The machine can hold 10 games at once and you switch using the game menu on the secondary monitor.", /* control_details */
11643 &playch10_get_ctrl_name
11644 };
11645
playch10_get_ctrl_name(int type)11646 const char *playch10_get_ctrl_name(int type)
11647 {
11648 switch(type)
11649 {
11650 case (IPT_BUTTON1 | IPF_PLAYER2): return "A";
11651 case (IPT_BUTTON2 | IPF_PLAYER2): return "B";
11652 case (IPT_JOYSTICK_UP | IPF_PLAYER2): return "Up";
11653 case (IPT_JOYSTICK_DOWN | IPF_PLAYER2): return "Down";
11654 case (IPT_JOYSTICK_LEFT | IPF_PLAYER2): return "Left";
11655 case (IPT_JOYSTICK_RIGHT | IPF_PLAYER2): return "Right";
11656 case IPT_BUTTON1: return BTN1 "A";
11657 case IPT_BUTTON2: return BTN2 "B";
11658 case IPT_JOYSTICK_RIGHT: return "Right";
11659 case IPT_JOYSTICK_LEFT: return "Left";
11660 case IPT_JOYSTICK_DOWN: return "Down";
11661 case IPT_JOYSTICK_UP: return "Up";
11662 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
11663 case IPT_LIGHTGUN_X: return "Left";
11664 case IPT_LIGHTGUN_Y: return "Up";
11665 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
11666 case IPT_SERVICE1: return "Service Coin";
11667 case IPT_SERVICE2: return "Channel Select";
11668 case IPT_SERVICE3: return "Enter";
11669 case IPT_SERVICE4: return "Reset";
11670 } /* end of switch */
11671
11672 return "";
11673 }
11674
11675 const struct ControlInfo pleiads_ctrl =
11676 {
11677 false, /* 45_degree_rotation for joystick(s) */
11678 true, /* alternating_controls */
11679 true, /* mirrored_controls */
11680 "", /* control_details */
11681 &pleiads_get_ctrl_name
11682 };
11683
pleiads_get_ctrl_name(int type)11684 const char *pleiads_get_ctrl_name(int type)
11685 {
11686 switch(type)
11687 {
11688 case IPT_BUTTON1: return BTN1 "Fire";
11689 case IPT_BUTTON2: return BTN2 "Warp";
11690 } /* end of switch */
11691
11692 return joy2way_labels(type);
11693 }
11694
11695 const struct ControlInfo plotting_ctrl =
11696 {
11697 false, /* 45_degree_rotation for joystick(s) */
11698 false, /* alternating_controls */
11699 true, /* mirrored_controls */
11700 "", /* control_details */
11701 &plotting_get_ctrl_name
11702 };
11703
plotting_get_ctrl_name(int type)11704 const char *plotting_get_ctrl_name(int type)
11705 {
11706 switch(type)
11707 {
11708 case IPT_BUTTON1: return BTN1 "Fire";
11709 } /* end of switch */
11710
11711 return joy4way_labels(type);
11712 }
11713
11714 const struct ControlInfo ptblank_ctrl =
11715 {
11716 false, /* 45_degree_rotation for joystick(s) */
11717 false, /* alternating_controls */
11718 true, /* mirrored_controls */
11719 "To reload fire offscreen.", /* control_details */
11720 &ptblank_get_ctrl_name
11721 };
11722
ptblank_get_ctrl_name(int type)11723 const char *ptblank_get_ctrl_name(int type)
11724 {
11725 switch(type)
11726 {
11727 case IPT_BUTTON1: return BTN1 "Fire";
11728 case IPT_LIGHTGUN_X: return "Left";
11729 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
11730 case IPT_LIGHTGUN_Y: return "Up";
11731 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
11732 } /* end of switch */
11733
11734 return "";
11735 }
11736
11737 const struct ControlInfo polaris_ctrl =
11738 {
11739 false, /* 45_degree_rotation for joystick(s) */
11740 true, /* alternating_controls */
11741 true, /* mirrored_controls */
11742 "The original cpo simply labeled the joystick 'control'", /* control_details */
11743 &polaris_get_ctrl_name
11744 };
11745
polaris_get_ctrl_name(int type)11746 const char *polaris_get_ctrl_name(int type)
11747 {
11748 switch(type)
11749 {
11750 case IPT_BUTTON1: return BTN1 "Fire";
11751 } /* end of switch */
11752
11753 return joy4way_labels(type);
11754 }
11755
11756 const struct ControlInfo polepos_ctrl =
11757 {
11758 false, /* 45_degree_rotation for joystick(s) */
11759 false, /* alternating_controls */
11760 false, /* mirrored_controls */
11761 "Button 1 is actually the spacebar by default to avoid conflicts with the pedals. The high/low shifter is emulated by a single toggle input in mame.", /* control_details */
11762 &polepos_get_ctrl_name
11763 };
11764
polepos_get_ctrl_name(int type)11765 const char *polepos_get_ctrl_name(int type)
11766 {
11767 switch(type)
11768 {
11769 case IPT_BUTTON1: return BTN1 "High / Low";
11770 case (IPT_DIAL + IPT_EXTENSION): return "Right";
11771 case IPT_DIAL: return "Left";
11772 case IPT_PEDAL: return "Accelerate";
11773 case IPT_PEDAL2: return "Brake";
11774 } /* end of switch */
11775
11776 return "";
11777 }
11778
11779 const struct ControlInfo polepos2_ctrl =
11780 {
11781 false, /* 45_degree_rotation for joystick(s) */
11782 false, /* alternating_controls */
11783 false, /* mirrored_controls */
11784 "Button1 is actually spacbar by default in this game to avoid conflicts with the pedals. The high / low shifter is emulated in mame by a single button toggle. The upright cab only uses the gas pedal while the cockpit uses both. This is a dipswitch setting that you can alter if you wish to better suit your layout.", /* control_details */
11785 &polepos2_get_ctrl_name
11786 };
11787
polepos2_get_ctrl_name(int type)11788 const char *polepos2_get_ctrl_name(int type)
11789 {
11790 switch(type)
11791 {
11792 case IPT_BUTTON1: return BTN1 "High / Low";
11793 case (IPT_DIAL + IPT_EXTENSION): return "Right";
11794 case IPT_DIAL: return "Left";
11795 case IPT_PEDAL: return "Accelerate";
11796 case IPT_PEDAL2: return "Brake";
11797 } /* end of switch */
11798
11799 return "";
11800 }
11801
11802 const struct ControlInfo policetr_ctrl =
11803 {
11804 false, /* 45_degree_rotation for joystick(s) */
11805 false, /* alternating_controls */
11806 true, /* mirrored_controls */
11807 "Fire offscreen to reload.", /* control_details */
11808 &policetr_get_ctrl_name
11809 };
11810
policetr_get_ctrl_name(int type)11811 const char *policetr_get_ctrl_name(int type)
11812 {
11813 switch(type)
11814 {
11815 case IPT_BUTTON1: return BTN1 "Fire";
11816 case IPT_LIGHTGUN_X: return "Left";
11817 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
11818 case IPT_LIGHTGUN_Y: return "Up";
11819 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
11820 } /* end of switch */
11821
11822 return "";
11823 }
11824
11825 const struct ControlInfo polyplay_ctrl =
11826 {
11827 false, /* 45_degree_rotation for joystick(s) */
11828 false, /* alternating_controls */
11829 false, /* mirrored_controls */
11830 "Note that this game didn't have any labels. The poly play system was the second East-German arcade machine. Quite, frankly it was a slapped-together piece of crap. It used inferior russian computer hardware, an old television converted to rgb and a cabient made out of chip-board laminated to look like fake wood. We use the terms 'arcade contols' in a generic sense on this one. The joystick and button were salvaged from industrial machines and are nothing like real arcade controls.", /* control_details */
11831 &polyplay_get_ctrl_name
11832 };
11833
polyplay_get_ctrl_name(int type)11834 const char *polyplay_get_ctrl_name(int type)
11835 {
11836 switch(type)
11837 {
11838 case IPT_BUTTON1: return BTN1 "A";
11839 } /* end of switch */
11840
11841 return joy4way_labels(type);
11842 }
11843
11844 const struct ControlInfo ponpoko_ctrl =
11845 {
11846 false, /* 45_degree_rotation for joystick(s) */
11847 true, /* alternating_controls */
11848 true, /* mirrored_controls */
11849 "", /* control_details */
11850 &ponpoko_get_ctrl_name
11851 };
11852
ponpoko_get_ctrl_name(int type)11853 const char *ponpoko_get_ctrl_name(int type)
11854 {
11855 switch(type)
11856 {
11857 case IPT_BUTTON1: return BTN1 "Jump";
11858 } /* end of switch */
11859
11860 return joy4way_labels(type);
11861 }
11862
11863 const struct ControlInfo pooyan_ctrl =
11864 {
11865 false, /* 45_degree_rotation for joystick(s) */
11866 true, /* alternating_controls */
11867 true, /* mirrored_controls */
11868 "", /* control_details */
11869 &pooyan_get_ctrl_name
11870 };
11871
pooyan_get_ctrl_name(int type)11872 const char *pooyan_get_ctrl_name(int type)
11873 {
11874 switch(type)
11875 {
11876 case IPT_BUTTON1: return BTN1 "Fire";
11877 case IPT_JOYSTICK_UP: return "Up";
11878 case IPT_JOYSTICK_DOWN: return "Down";
11879 } /* end of switch */
11880
11881 return "";
11882 }
11883
11884 const struct ControlInfo popeye_ctrl =
11885 {
11886 false, /* 45_degree_rotation for joystick(s) */
11887 true, /* alternating_controls */
11888 true, /* mirrored_controls */
11889 "", /* control_details */
11890 &popeye_get_ctrl_name
11891 };
11892
popeye_get_ctrl_name(int type)11893 const char *popeye_get_ctrl_name(int type)
11894 {
11895 switch(type)
11896 {
11897 case IPT_BUTTON1: return BTN1 "Punch";
11898 } /* end of switch */
11899
11900 return joy4way_labels(type);
11901 }
11902
11903 const struct ControlInfo popper_ctrl =
11904 {
11905 false, /* 45_degree_rotation for joystick(s) */
11906 true, /* alternating_controls */
11907 true, /* mirrored_controls */
11908 "For you Q-Bert fans that don't have a diagonal joystick mounted this is the game for you. It is essentailly the same game only an 8-way joystick is used.", /* control_details */
11909 &popper_get_ctrl_name
11910 };
11911
popper_get_ctrl_name(int type)11912 const char *popper_get_ctrl_name(int type)
11913 {
11914 switch(type)
11915 {
11916 case IPT_BUTTON1: return BTN1 "Throw";
11917 case IPT_JOYSTICK_UP: return "Move Up";
11918 case IPT_JOYSTICK_DOWN: return "Move Down";
11919 case IPT_JOYSTICK_LEFT: return "Move Left";
11920 case IPT_JOYSTICK_RIGHT: return "Move Right";
11921 } /* end of switch */
11922
11923 return "";
11924 }
11925
11926 const struct ControlInfo pdrift_ctrl =
11927 {
11928 false, /* 45_degree_rotation for joystick(s) */
11929 false, /* alternating_controls */
11930 false, /* mirrored_controls */
11931 "", /* control_details */
11932 &pdrift_get_ctrl_name
11933 };
11934
pdrift_get_ctrl_name(int type)11935 const char *pdrift_get_ctrl_name(int type)
11936 {
11937 switch(type)
11938 {
11939 case IPT_BUTTON1: return BTN1 "High / Low";
11940 case IPT_PADDLE: return "Left";
11941 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
11942 case IPT_PEDAL: return "Accelerate";
11943 case IPT_PEDAL2: return "Brake";
11944 } /* end of switch */
11945
11946 return "";
11947 }
11948
11949 const struct ControlInfo powerdrv_ctrl =
11950 {
11951 false, /* 45_degree_rotation for joystick(s) */
11952 false, /* alternating_controls */
11953 true, /* mirrored_controls */
11954 "Tap the front and back tires rapidly to acelerate and use the shifter to change gearing for obstacles. Pop a wheelie with the wheelie button.", /* control_details */
11955 &powerdrv_get_ctrl_name
11956 };
11957
powerdrv_get_ctrl_name(int type)11958 const char *powerdrv_get_ctrl_name(int type)
11959 {
11960 switch(type)
11961 {
11962 case IPT_BUTTON1: return BTN1 "Back Tire";
11963 case IPT_BUTTON2: return BTN2 "Front Tire";
11964 case IPT_BUTTON3: return BTN3 "Wheelie";
11965 case IPT_BUTTON4: return BTN4 "2wd/4wd";
11966 } /* end of switch */
11967
11968 return "";
11969 }
11970
11971 const struct ControlInfo pclubj_ctrl =
11972 {
11973 false, /* 45_degree_rotation for joystick(s) */
11974 false, /* alternating_controls */
11975 false, /* mirrored_controls */
11976 "Even though the label indicates that this is a 4 way joystick it is really a two way. The joystick is desginated as a 4 way because the cpo actually had arrows in all 4 directions. This isn't even a game, it is a photo booth in which users select a overlay and have theri pciture printed with it in front. Considering mame's 'arcade machine only' policy, it is suprising that it is included in mame.", /* control_details */
11977 &pclubj_get_ctrl_name
11978 };
11979
pclubj_get_ctrl_name(int type)11980 const char *pclubj_get_ctrl_name(int type)
11981 {
11982 switch(type)
11983 {
11984 case IPT_BUTTON1: return BTN1 "Ok / Print";
11985 case IPT_BUTTON2: return BTN2 "Cancel";
11986 } /* end of switch */
11987
11988 return joy4way_labels(type);
11989 }
11990
11991 const struct ControlInfo profpac_ctrl =
11992 {
11993 false, /* 45_degree_rotation for joystick(s) */
11994 false, /* alternating_controls */
11995 true, /* mirrored_controls */
11996 "Something of note is that on this layout the first player is on the right side instead of the left. Note: As of mame 0.83 this game isn't working yet... I am just preparing for when it does.", /* control_details */
11997 &profpac_get_ctrl_name
11998 };
11999
profpac_get_ctrl_name(int type)12000 const char *profpac_get_ctrl_name(int type)
12001 {
12002 switch(type)
12003 {
12004 case IPT_BUTTON1: return BTN1 "A";
12005 case IPT_BUTTON2: return BTN2 "B";
12006 case IPT_BUTTON3: return BTN3 "C";
12007 } /* end of switch */
12008
12009 return "";
12010 }
12011
12012 const struct ControlInfo psychos_ctrl =
12013 {
12014 false, /* 45_degree_rotation for joystick(s) */
12015 false, /* alternating_controls */
12016 true, /* mirrored_controls */
12017 "The player starts as a flying-saucer which the player can fly anywhere in the screen. After a few seconds, the flying-saucer drops the main character that runs/jumps/drops between the platforms. After a life is lost, the player returns to the saucer.", /* control_details */
12018 &psychos_get_ctrl_name
12019 };
12020
psychos_get_ctrl_name(int type)12021 const char *psychos_get_ctrl_name(int type)
12022 {
12023 switch(type)
12024 {
12025 case IPT_BUTTON1: return BTN1 "Primary Fire";
12026 case IPT_BUTTON2: return BTN2 "Secondary Fire ";
12027 case IPT_JOYSTICK_RIGHT: return "Move Right";
12028 case IPT_JOYSTICK_LEFT: return "Move Left";
12029 case IPT_JOYSTICK_DOWN: return "Move Down";
12030 case IPT_JOYSTICK_UP: return "Move Up";
12031 } /* end of switch */
12032
12033 return "";
12034 }
12035
12036 const struct ControlInfo puckman_ctrl =
12037 {
12038 false, /* 45_degree_rotation for joystick(s) */
12039 true, /* alternating_controls */
12040 true, /* mirrored_controls */
12041 "", /* control_details */
12042 &puckman_get_ctrl_name
12043 };
12044
puckman_get_ctrl_name(int type)12045 const char *puckman_get_ctrl_name(int type)
12046 {
12047 return joy4way_labels(type);
12048 }
12049
12050 const struct ControlInfo pulsar_ctrl =
12051 {
12052 false, /* 45_degree_rotation for joystick(s) */
12053 true, /* alternating_controls */
12054 true, /* mirrored_controls */
12055 "The original game had the fire button on the left and the joystick on the right.", /* control_details */
12056 &pulsar_get_ctrl_name
12057 };
12058
pulsar_get_ctrl_name(int type)12059 const char *pulsar_get_ctrl_name(int type)
12060 {
12061 switch(type)
12062 {
12063 case IPT_BUTTON1: return BTN1 "Fire";
12064 } /* end of switch */
12065
12066 return joy4way_labels(type);
12067 }
12068
12069 const struct ControlInfo punchout_ctrl =
12070 {
12071 false, /* 45_degree_rotation for joystick(s) */
12072 false, /* alternating_controls */
12073 false, /* mirrored_controls */
12074 "The Hook Uppercut is also referred to as the 'knockout blow' on the control panel and can only be used when your ko meter flashes. The button is a large gameshow type of button.", /* control_details */
12075 &punchout_get_ctrl_name
12076 };
12077
punchout_get_ctrl_name(int type)12078 const char *punchout_get_ctrl_name(int type)
12079 {
12080 switch(type)
12081 {
12082 case IPT_BUTTON1: return BTN1 "Left Blow To Head/Body";
12083 case IPT_BUTTON2: return BTN2 "Right Blow to Head/Body";
12084 case IPT_BUTTON3: return BTN3 "Hook Uppercut";
12085 case IPT_JOYSTICK_UP: return "Guard Up";
12086 case IPT_JOYSTICK_DOWN: return "Guard Down";
12087 case IPT_JOYSTICK_LEFT: return "Dodge Left";
12088 case IPT_JOYSTICK_RIGHT: return "Dodge Right";
12089 } /* end of switch */
12090
12091 return "";
12092 }
12093
12094 const struct ControlInfo punkshot_ctrl =
12095 {
12096 false, /* 45_degree_rotation for joystick(s) */
12097 false, /* alternating_controls */
12098 true, /* mirrored_controls */
12099 "", /* control_details */
12100 &punkshot_get_ctrl_name
12101 };
12102
punkshot_get_ctrl_name(int type)12103 const char *punkshot_get_ctrl_name(int type)
12104 {
12105 switch(type)
12106 {
12107 case IPT_BUTTON1: return BTN1 "Pass / Hit";
12108 case IPT_BUTTON2: return BTN2 "Shoot / Block";
12109 } /* end of switch */
12110
12111 return joy4way_labels(type);
12112 }
12113
12114 const struct ControlInfo pbobble_ctrl =
12115 {
12116 false, /* 45_degree_rotation for joystick(s) */
12117 false, /* alternating_controls */
12118 true, /* mirrored_controls */
12119 "", /* control_details */
12120 &pbobble_get_ctrl_name
12121 };
12122
pbobble_get_ctrl_name(int type)12123 const char *pbobble_get_ctrl_name(int type)
12124 {
12125 switch(type)
12126 {
12127 case IPT_BUTTON1: return BTN1 "Shoot";
12128 } /* end of switch */
12129
12130 return joy2way_labels(type);
12131 }
12132
12133 const struct ControlInfo pbobble2_ctrl =
12134 {
12135 false, /* 45_degree_rotation for joystick(s) */
12136 false, /* alternating_controls */
12137 true, /* mirrored_controls */
12138 "Puzzle Bobble 2 is listed as using an 8-way joystick and 4 buttons, though only left, right and 1 button are used for gameplay. Up, down and buttons 2 and 3 are only used during Test Mode. I can find no references to button 4.", /* control_details */
12139 &pbobble2_get_ctrl_name
12140 };
12141
pbobble2_get_ctrl_name(int type)12142 const char *pbobble2_get_ctrl_name(int type)
12143 {
12144 switch(type)
12145 {
12146 case IPT_BUTTON1: return BTN1 "Fire";
12147 case IPT_BUTTON2: return BTN2 "NA";
12148 case IPT_BUTTON3: return BTN3 "NA";
12149 case IPT_BUTTON4: return BTN4 "NA";
12150 } /* end of switch */
12151
12152 return joy4way_labels(type);
12153 }
12154
12155 const struct ControlInfo pbobble3_ctrl =
12156 {
12157 false, /* 45_degree_rotation for joystick(s) */
12158 false, /* alternating_controls */
12159 true, /* mirrored_controls */
12160 "Mame lists Puzzle Bobble 3 as having 4 buttons and an 8-way joystick (because it is a Taito F3 System game) /* control_details */ only one button is used during gameplay, Test Mode lists 3 buttons. Only left and right are used during gameplay, up and down are used during Test Mode. I can find no references to button 4.", /* control_details */
12161 &pbobble3_get_ctrl_name
12162 };
12163
pbobble3_get_ctrl_name(int type)12164 const char *pbobble3_get_ctrl_name(int type)
12165 {
12166 switch(type)
12167 {
12168 case IPT_BUTTON1: return BTN1 "Shoot";
12169 case IPT_BUTTON2: return BTN2 "NA";
12170 case IPT_BUTTON3: return BTN3 "NA";
12171 case IPT_BUTTON4: return BTN4 "NA";
12172 } /* end of switch */
12173
12174 return joy4way_labels(type);
12175 }
12176
12177 const struct ControlInfo qix_ctrl =
12178 {
12179 false, /* 45_degree_rotation for joystick(s) */
12180 true, /* alternating_controls */
12181 true, /* mirrored_controls */
12182 "", /* control_details */
12183 &qix_get_ctrl_name
12184 };
12185
qix_get_ctrl_name(int type)12186 const char *qix_get_ctrl_name(int type)
12187 {
12188 switch(type)
12189 {
12190 case IPT_BUTTON1: return BTN1 "Fast Draw";
12191 case IPT_BUTTON2: return BTN2 "Slow Draw";
12192 } /* end of switch */
12193
12194 return joy4way_labels(type);
12195 }
12196
12197 const struct ControlInfo quantum_ctrl =
12198 {
12199 false, /* 45_degree_rotation for joystick(s) */
12200 true, /* alternating_controls */
12201 true, /* mirrored_controls */
12202 "This game did not use buttons, the only input is a trackball.", /* control_details */
12203 &quantum_get_ctrl_name
12204 };
12205
quantum_get_ctrl_name(int type)12206 const char *quantum_get_ctrl_name(int type)
12207 {
12208 switch(type)
12209 {
12210 case IPT_TRACKBALL_X: return "Left";
12211 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
12212 case IPT_TRACKBALL_Y: return "Up";
12213 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
12214 } /* end of switch */
12215
12216 return "";
12217 }
12218
12219 #if 0
12220 const struct ControlInfo quarterb_ctrl =
12221 {
12222 false, /* 45_degree_rotation for joystick(s) */
12223 false, /* alternating_controls */
12224 false, /* mirrored_controls */
12225 "Note that the buttons do various things based on the gameplay scenario. Also both buttons were labeled 'Action' so 'A' and 'B' were added to avoid confusion. Also the kicker only labeled the three actions it is used for, not how to aim, ect. This was added for your benefit.", /* control_details */
12226 &quarterb_get_ctrl_name
12227 };
12228
12229 const char *quarterb_get_ctrl_name(int type)
12230 {
12231 switch(type)
12232 {
12233 case (IPT_BUTTON1 | IPF_PLAYER2): return "Action A";
12234 case (IPT_BUTTON2 | IPF_PLAYER2): return "Action B";
12235 case IPT_JOYSTICK_UP: return "Up";
12236 case IPT_JOYSTICK_DOWN: return "Down";
12237 case IPT_JOYSTICK_LEFT: return "Left";
12238 case IPT_JOYSTICK_RIGHT: return "Right";
12239 case IPT_BUTTON1: return BTN1 "Action A";
12240 case IPT_BUTTON2: return BTN2 "Action B";
12241 case IPT_JOYSTICK_UP: return "Up";
12242 case IPT_JOYSTICK_DOWN: return "Down";
12243 case IPT_JOYSTICK_LEFT: return "Left";
12244 case IPT_JOYSTICK_RIGHT: return "Right";
12245 case IPT_AD_STICK_X: return "Aim Left";
12246 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Aim Right";
12247 case IPT_AD_STICK_Y: return "Pass / Punt / Kick";
12248 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Set Power";
12249 } /* end of switch */
12250
12251 return "";
12252 }
12253 #endif
12254
12255 const struct ControlInfo quartet_ctrl =
12256 {
12257 false, /* 45_degree_rotation for joystick(s) */
12258 false, /* alternating_controls */
12259 true, /* mirrored_controls */
12260 "Ironically this game is also available in a 2 player variety. Wouldn't that make it a duo?", /* control_details */
12261 &quartet_get_ctrl_name
12262 };
12263
quartet_get_ctrl_name(int type)12264 const char *quartet_get_ctrl_name(int type)
12265 {
12266 switch(type)
12267 {
12268 case IPT_BUTTON1: return BTN1 "Jump / Start";
12269 case IPT_BUTTON2: return BTN2 "Shoot";
12270 } /* end of switch */
12271
12272 return joy4way_labels(type);
12273 }
12274
12275 const struct ControlInfo quasar_ctrl =
12276 {
12277 false, /* 45_degree_rotation for joystick(s) */
12278 true, /* alternating_controls */
12279 true, /* mirrored_controls */
12280 "The 'forward' button appears to be broken in mame.", /* control_details */
12281 &quasar_get_ctrl_name
12282 };
12283
quasar_get_ctrl_name(int type)12284 const char *quasar_get_ctrl_name(int type)
12285 {
12286 switch(type)
12287 {
12288 case IPT_BUTTON1: return BTN1 "Fire";
12289 case IPT_BUTTON2: return BTN2 "Forward";
12290 } /* end of switch */
12291
12292 return joy2way_labels(type);
12293 }
12294
12295 const struct ControlInfo qad_ctrl =
12296 {
12297 false, /* 45_degree_rotation for joystick(s) */
12298 false, /* alternating_controls */
12299 true, /* mirrored_controls */
12300 "You may wonder why the control type is listed as 'Just Buttons' instead of 'Trivia Buttons'. This is one of the few arcade trivia games that doesn't use trivia-style buttons. It uses standard pushbuttons.", /* control_details */
12301 &qad_get_ctrl_name
12302 };
12303
qad_get_ctrl_name(int type)12304 const char *qad_get_ctrl_name(int type)
12305 {
12306 switch(type)
12307 {
12308 case IPT_BUTTON1: return BTN1 "1";
12309 case IPT_BUTTON2: return BTN2 "2";
12310 case IPT_BUTTON3: return BTN3 "3";
12311 case IPT_BUTTON4: return BTN4 "4";
12312 } /* end of switch */
12313
12314 return "";
12315 }
12316
12317 const struct ControlInfo qndream_ctrl =
12318 {
12319 false, /* 45_degree_rotation for joystick(s) */
12320 false, /* alternating_controls */
12321 true, /* mirrored_controls */
12322 "Like all capcom quiz games, this game's cp uses regular push buttons instead of trivia-style buttons.", /* control_details */
12323 &qndream_get_ctrl_name
12324 };
12325
qndream_get_ctrl_name(int type)12326 const char *qndream_get_ctrl_name(int type)
12327 {
12328 switch(type)
12329 {
12330 case IPT_BUTTON1: return BTN1 "1";
12331 case IPT_BUTTON2: return BTN2 "2";
12332 case IPT_BUTTON3: return BTN3 "3";
12333 case IPT_BUTTON4: return BTN4 "4";
12334 } /* end of switch */
12335
12336 return "";
12337 }
12338
12339 const struct ControlInfo rtype_ctrl =
12340 {
12341 false, /* 45_degree_rotation for joystick(s) */
12342 true, /* alternating_controls */
12343 true, /* mirrored_controls */
12344 "The longer you hold down the fire button, the stronger the shot. The force button 'shoots' or recalls a power-up piece from and to your ship. Mame has four buttons for this game for some reason, but only uses the first two. The game has the fire and force buttons on both sides of the joystick, but not 'mirrored': the force is to the left of the fire button on both sides of the joystick. NOTE In Mame this game actually has four buttons. This is due to some sloppy code and nothing more. The dipswitches between this game and a similar game running on the same system were identical, so the input function was simply re-routed to that game. This needs to be removed asap.", /* control_details */
12345 &rtype_get_ctrl_name
12346 };
12347
rtype_get_ctrl_name(int type)12348 const char *rtype_get_ctrl_name(int type)
12349 {
12350 switch(type)
12351 {
12352 case IPT_BUTTON1: return BTN1 "Fire";
12353 case IPT_BUTTON2: return BTN2 "Force";
12354 } /* end of switch */
12355
12356 return joy4way_labels(type);
12357 }
12358
12359 const struct ControlInfo radarscp_ctrl =
12360 {
12361 false, /* 45_degree_rotation for joystick(s) */
12362 true, /* alternating_controls */
12363 true, /* mirrored_controls */
12364 "Note by HowardC: As of mame version .77 this game should us a 2-way stick. If it doesn't contact me.", /* control_details */
12365 &radarscp_get_ctrl_name
12366 };
12367
radarscp_get_ctrl_name(int type)12368 const char *radarscp_get_ctrl_name(int type)
12369 {
12370 switch(type)
12371 {
12372 case IPT_BUTTON1: return BTN1 "Fire";
12373 } /* end of switch */
12374
12375 return joy2way_labels(type);
12376 }
12377
12378 const struct ControlInfo radrad_ctrl =
12379 {
12380 false, /* 45_degree_rotation for joystick(s) */
12381 true, /* alternating_controls */
12382 true, /* mirrored_controls */
12383 "", /* control_details */
12384 &radrad_get_ctrl_name
12385 };
12386
radrad_get_ctrl_name(int type)12387 const char *radrad_get_ctrl_name(int type)
12388 {
12389 switch(type)
12390 {
12391 case IPT_BUTTON1: return BTN1 "Shoot";
12392 } /* end of switch */
12393
12394 return joy4way_labels(type);
12395 }
12396
12397 const struct ControlInfo rchase_ctrl =
12398 {
12399 false, /* 45_degree_rotation for joystick(s) */
12400 false, /* alternating_controls */
12401 true, /* mirrored_controls */
12402 "The game didn't have a gun, rather a joystick with a crosshair on the screen. The machine also had a bench the players sat on with two solenoids mounted underneath to give the illusion of them sitting in the mine cart.", /* control_details */
12403 &rchase_get_ctrl_name
12404 };
12405
rchase_get_ctrl_name(int type)12406 const char *rchase_get_ctrl_name(int type)
12407 {
12408 switch(type)
12409 {
12410 case IPT_BUTTON1: return BTN1 "Fire";
12411 case IPT_LIGHTGUN_X: return "Aim Left";
12412 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
12413 case IPT_LIGHTGUN_Y: return "Aim Up";
12414 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
12415 } /* end of switch */
12416
12417 return "";
12418 }
12419
12420 const struct ControlInfo rainbow_ctrl =
12421 {
12422 false, /* 45_degree_rotation for joystick(s) */
12423 true, /* alternating_controls */
12424 true, /* mirrored_controls */
12425 "", /* control_details */
12426 &rainbow_get_ctrl_name
12427 };
12428
rainbow_get_ctrl_name(int type)12429 const char *rainbow_get_ctrl_name(int type)
12430 {
12431 switch(type)
12432 {
12433 case IPT_BUTTON1: return BTN1 "Rainbow";
12434 case IPT_BUTTON2: return BTN2 "Jump";
12435 } /* end of switch */
12436
12437 return joy2way_labels(type);
12438 }
12439
12440 const struct ControlInfo rallyx_ctrl =
12441 {
12442 false, /* 45_degree_rotation for joystick(s) */
12443 true, /* alternating_controls */
12444 true, /* mirrored_controls */
12445 "", /* control_details */
12446 &rallyx_get_ctrl_name
12447 };
12448
rallyx_get_ctrl_name(int type)12449 const char *rallyx_get_ctrl_name(int type)
12450 {
12451 switch(type)
12452 {
12453 case IPT_BUTTON1: return BTN1 "Smoke Screen";
12454 case IPT_JOYSTICK_DOWN: return "Down";
12455 case IPT_JOYSTICK_UP: return "Up";
12456 } /* end of switch */
12457
12458 return joy2way_labels(type);
12459 }
12460
12461 const struct ControlInfo rampage_ctrl =
12462 {
12463 false, /* 45_degree_rotation for joystick(s) */
12464 false, /* alternating_controls */
12465 true, /* mirrored_controls */
12466 "", /* control_details */
12467 &rampage_get_ctrl_name
12468 };
12469
rampage_get_ctrl_name(int type)12470 const char *rampage_get_ctrl_name(int type)
12471 {
12472 switch(type)
12473 {
12474 case IPT_BUTTON1: return BTN1 "Punch";
12475 case IPT_BUTTON2: return BTN2 "Jump";
12476 case IPT_JOYSTICK_UP: return "Climb";
12477 case IPT_JOYSTICK_DOWN: return "Down";
12478 case IPT_JOYSTICK_LEFT: return "Left";
12479 case IPT_JOYSTICK_RIGHT: return "Right";
12480 } /* end of switch */
12481
12482 return "";
12483 }
12484
12485 const struct ControlInfo rmpgwt_ctrl =
12486 {
12487 false, /* 45_degree_rotation for joystick(s) */
12488 false, /* alternating_controls */
12489 true, /* mirrored_controls */
12490 "The tilt in mame does not work.", /* control_details */
12491 &rmpgwt_get_ctrl_name
12492 };
12493
rmpgwt_get_ctrl_name(int type)12494 const char *rmpgwt_get_ctrl_name(int type)
12495 {
12496 switch(type)
12497 {
12498 case IPT_BUTTON1: return BTN1 "Jump";
12499 case IPT_BUTTON2: return BTN2 "Punch";
12500 case IPT_BUTTON3: return BTN3 "Kick";
12501 } /* end of switch */
12502
12503 return joy4way_labels(type);
12504 }
12505
12506 const struct ControlInfo rampart_ctrl =
12507 {
12508 false, /* 45_degree_rotation for joystick(s) */
12509 false, /* alternating_controls */
12510 true, /* mirrored_controls */
12511 "The player's Place Piece/Fire button is also the start button. There are three basic different CP layouts for this game: 3 player trackball, 2 player trackball (dipswitch with same ROM as 3 player TB), and 2 player 8-way joystick (with ramprt2p and rampartj). The 3 player dedicated TB CP had two buttons per player on the left side of the TB. The kit highly recomends mirroring the buttons on both sides the joystick, with two buttons wired to each button input, but this was not always followed. Button2 (Rotate Peice/Fire) is labeled as the 3 player TB CP /* control_details */ for the joystick CP, this button was 'Rotate Piece/Speed Up' instead to give the joystick two movement speeds in the shooting part of the game.", /* control_details */
12512 &rampart_get_ctrl_name
12513 };
12514
rampart_get_ctrl_name(int type)12515 const char *rampart_get_ctrl_name(int type)
12516 {
12517 switch(type)
12518 {
12519 case IPT_BUTTON1: return BTN1 "Place Piece/Fire/Start";
12520 case IPT_BUTTON2: return BTN2 "Rotate Piece/Fire";
12521 case IPT_TRACKBALL_X: return "Left";
12522 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
12523 case IPT_TRACKBALL_Y: return "Up";
12524 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
12525 } /* end of switch */
12526
12527 return "";
12528 }
12529
12530 const struct ControlInfo rastan_ctrl =
12531 {
12532 false, /* 45_degree_rotation for joystick(s) */
12533 true, /* alternating_controls */
12534 true, /* mirrored_controls */
12535 "Joystick in center of Panel, with attack and jump buttons on both sides, for both left and right handed players. Player start buttons were on RIGHT side of CP, with P1 at top, and P2 at bottom", /* control_details */
12536 &rastan_get_ctrl_name
12537 };
12538
rastan_get_ctrl_name(int type)12539 const char *rastan_get_ctrl_name(int type)
12540 {
12541 switch(type)
12542 {
12543 case IPT_BUTTON1: return BTN1 "Attack";
12544 case IPT_BUTTON2: return BTN2 "Jump";
12545 } /* end of switch */
12546
12547 return joy4way_labels(type);
12548 }
12549
12550 const struct ControlInfo reactor_ctrl =
12551 {
12552 false, /* 45_degree_rotation for joystick(s) */
12553 true, /* alternating_controls */
12554 true, /* mirrored_controls */
12555 "The action buttons are 'mirrored' on both sides of the trackball like normal, and double as start buttons. However, the start half of the buttons are not mirrored: the start buttons go 1 2 1 2 from left to right, and the left side start buttons give you 3 ships for one credit, while the right side buttons give you 7 ships for two credits. So the layout, from left to right, is (energy / 1 player with 3 ships), (decoy / 2 players with 3 ships each), trackball, (decoy / 1 player with 7 ships), (energy / 2 players with 7 ships each). Mame's emulated buttons go start1, start2, trackball, p1 button2, p1 button1, following the above layout. So the start buttons are also action buttons, and the action buttons are start buttons, but they are 4 different buttons, even though there are two different actions.", /* control_details */
12556 &reactor_get_ctrl_name
12557 };
12558
reactor_get_ctrl_name(int type)12559 const char *reactor_get_ctrl_name(int type)
12560 {
12561 switch(type)
12562 {
12563 case IPT_BUTTON1: return BTN1 "Energy";
12564 case IPT_BUTTON2: return BTN2 "Decoy";
12565 case IPT_TRACKBALL_X: return "Left";
12566 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
12567 case IPT_TRACKBALL_Y: return "Up";
12568 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
12569 } /* end of switch */
12570
12571 return "";
12572 }
12573
12574 const struct ControlInfo redlin2p_ctrl =
12575 {
12576 false, /* 45_degree_rotation for joystick(s) */
12577 false, /* alternating_controls */
12578 true, /* mirrored_controls */
12579 "", /* control_details */
12580 &redlin2p_get_ctrl_name
12581 };
12582
redlin2p_get_ctrl_name(int type)12583 const char *redlin2p_get_ctrl_name(int type)
12584 {
12585 switch(type)
12586 {
12587 case IPT_DIAL: return "Left";
12588 case (IPT_DIAL + IPT_EXTENSION): return "Right";
12589 case IPT_PEDAL: return "Accelerate";
12590 } /* end of switch */
12591
12592 return "";
12593 }
12594
12595 const struct ControlInfo regulus_ctrl =
12596 {
12597 false, /* 45_degree_rotation for joystick(s) */
12598 true, /* alternating_controls */
12599 true, /* mirrored_controls */
12600 "This game doesn't have any labels, probably because the controls are so self-explainatory.", /* control_details */
12601 ®ulus_get_ctrl_name
12602 };
12603
regulus_get_ctrl_name(int type)12604 const char *regulus_get_ctrl_name(int type)
12605 {
12606 switch(type)
12607 {
12608 case IPT_BUTTON1: return BTN1 "Fire";
12609 case IPT_BUTTON2: return BTN2 "Bomb";
12610 } /* end of switch */
12611
12612 return joy4way_labels(type);
12613 }
12614
12615 const struct ControlInfo renegade_ctrl =
12616 {
12617 false, /* 45_degree_rotation for joystick(s) */
12618 true, /* alternating_controls */
12619 true, /* mirrored_controls */
12620 "", /* control_details */
12621 &renegade_get_ctrl_name
12622 };
12623
renegade_get_ctrl_name(int type)12624 const char *renegade_get_ctrl_name(int type)
12625 {
12626 switch(type)
12627 {
12628 case IPT_BUTTON1: return BTN1 "Attack Left";
12629 case IPT_BUTTON2: return BTN2 "Jump";
12630 case IPT_BUTTON3: return BTN3 "Attack Right";
12631 } /* end of switch */
12632
12633 return joy4way_labels(type);
12634 }
12635
12636 const struct ControlInfo rescue_ctrl =
12637 {
12638 false, /* 45_degree_rotation for joystick(s) */
12639 true, /* alternating_controls */
12640 true, /* mirrored_controls */
12641 "", /* control_details */
12642 &rescue_get_ctrl_name
12643 };
12644
rescue_get_ctrl_name(int type)12645 const char *rescue_get_ctrl_name(int type)
12646 {
12647 switch(type)
12648 {
12649 case IPT_BUTTON1: return BTN1 "Bomb";
12650 case IPT_JOYSTICKLEFT_UP: return "Up";
12651 case IPT_JOYSTICKLEFT_DOWN: return "Down";
12652 case IPT_JOYSTICKLEFT_LEFT: return "Left";
12653 case IPT_JOYSTICKLEFT_RIGHT: return "Right";
12654 case IPT_JOYSTICKRIGHT_UP: return "Fire Up";
12655 case IPT_JOYSTICKRIGHT_DOWN: return "Fire Down";
12656 case IPT_JOYSTICKRIGHT_LEFT: return "Fire Left";
12657 case IPT_JOYSTICKRIGHT_RIGHT: return "Fire Right";
12658 } /* end of switch */
12659
12660 return "";
12661 }
12662
12663 const struct ControlInfo rescraid_ctrl =
12664 {
12665 false, /* 45_degree_rotation for joystick(s) */
12666 true, /* alternating_controls */
12667 true, /* mirrored_controls */
12668 "The CP has the steering stick on the left side, shooting stick on the right. Mame has it emulated the opposite, so the labels are not mixed up.", /* control_details */
12669 &rescraid_get_ctrl_name
12670 };
12671
rescraid_get_ctrl_name(int type)12672 const char *rescraid_get_ctrl_name(int type)
12673 {
12674 switch(type)
12675 {
12676 case IPT_BUTTON1: return BTN1 "Select Weapons";
12677 case IPT_JOYSTICKLEFT_UP: return "Shooting Up";
12678 case IPT_JOYSTICKLEFT_DOWN: return "Shooting Down";
12679 case IPT_JOYSTICKLEFT_LEFT: return "Shooting Left";
12680 case IPT_JOYSTICKLEFT_RIGHT: return "Shooting Right";
12681 case IPT_JOYSTICKRIGHT_UP: return "Steering Up";
12682 case IPT_JOYSTICKRIGHT_DOWN: return "Steering Down";
12683 case IPT_JOYSTICKRIGHT_LEFT: return "Steering Left";
12684 case IPT_JOYSTICKRIGHT_RIGHT: return "Steering Right";
12685 } /* end of switch */
12686
12687 return "";
12688 }
12689
12690 const struct ControlInfo jedi_ctrl =
12691 {
12692 false, /* 45_degree_rotation for joystick(s) */
12693 false, /* alternating_controls */
12694 true, /* mirrored_controls */
12695 "Triggers fire cannon on all levels. Thumb buttons usually also fire cannon, except on the AT-Walker stages, where they rotate the turret.", /* control_details */
12696 &jedi_get_ctrl_name
12697 };
12698
jedi_get_ctrl_name(int type)12699 const char *jedi_get_ctrl_name(int type)
12700 {
12701 switch(type)
12702 {
12703 case IPT_BUTTON1: return BTN1 "Fire / Rotate Left";
12704 case IPT_BUTTON2: return BTN2 "Fire";
12705 case IPT_BUTTON3: return BTN3 "Fire / Rotate Right";
12706 case IPT_AD_STICK_Y: return "Up";
12707 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
12708 case IPT_AD_STICK_X: return "Left";
12709 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
12710 } /* end of switch */
12711
12712 return "";
12713 }
12714
12715 const struct ControlInfo revx_ctrl =
12716 {
12717 false, /* 45_degree_rotation for joystick(s) */
12718 false, /* alternating_controls */
12719 true, /* mirrored_controls */
12720 "The 'bomb' button actually shoots a compact disc. But that's what it is labeled in the game.", /* control_details */
12721 &revx_get_ctrl_name
12722 };
12723
revx_get_ctrl_name(int type)12724 const char *revx_get_ctrl_name(int type)
12725 {
12726 switch(type)
12727 {
12728 case IPT_BUTTON1: return BTN1 "Fire";
12729 case IPT_BUTTON2: return BTN2 "Bomb";
12730 case IPT_LIGHTGUN_X: return "Aim Left";
12731 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
12732 case IPT_LIGHTGUN_Y: return "Aim Up";
12733 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
12734 } /* end of switch */
12735
12736 return "";
12737 }
12738
12739 const struct ControlInfo ripoff_ctrl =
12740 {
12741 false, /* 45_degree_rotation for joystick(s) */
12742 false, /* alternating_controls */
12743 true, /* mirrored_controls */
12744 "This is a two player cooperative game. You cannot shoot the other player, but if you crash into him, you both blow up. Prevent the small tanks from stealing the triangular fuel pods by shooting them. The game ends when all the pods are gone.", /* control_details */
12745 &ripoff_get_ctrl_name
12746 };
12747
ripoff_get_ctrl_name(int type)12748 const char *ripoff_get_ctrl_name(int type)
12749 {
12750 switch(type)
12751 {
12752 case IPT_BUTTON1: return BTN1 "Fire";
12753 case IPT_BUTTON2: return BTN2 "Forward";
12754 } /* end of switch */
12755
12756 return joy2way_labels(type);
12757 }
12758
12759 const struct ControlInfo roadblst_ctrl =
12760 {
12761 false, /* 45_degree_rotation for joystick(s) */
12762 false, /* alternating_controls */
12763 false, /* mirrored_controls */
12764 "Steering wheel is unique in that it uses optics but is restricted to ~270 degrees, and it returns to the center position using springs. Also, it has 2 triggers (Fire Lasers), and 2 thumb buttons (Activate Special Weapon). Each trigger / thumb button does the same action.", /* control_details */
12765 &roadblst_get_ctrl_name
12766 };
12767
roadblst_get_ctrl_name(int type)12768 const char *roadblst_get_ctrl_name(int type)
12769 {
12770 switch(type)
12771 {
12772 case IPT_BUTTON1: return BTN1 "Fire Lasers";
12773 case IPT_BUTTON2: return BTN2 "Activate Special Weapon";
12774 case (IPT_DIAL + IPT_EXTENSION): return "Right";
12775 case IPT_DIAL: return "Left";
12776 case IPT_PEDAL: return "Accelerate";
12777 } /* end of switch */
12778
12779 return "";
12780 }
12781
12782 const struct ControlInfo roadf_ctrl =
12783 {
12784 false, /* 45_degree_rotation for joystick(s) */
12785 true, /* alternating_controls */
12786 true, /* mirrored_controls */
12787 "Game used a joystick and two pushbuttons for Low Gear and High Gear. No Shifter. High Gear cannot be pressed until the car has started and built up some RPM's.", /* control_details */
12788 &roadf_get_ctrl_name
12789 };
12790
roadf_get_ctrl_name(int type)12791 const char *roadf_get_ctrl_name(int type)
12792 {
12793 switch(type)
12794 {
12795 case IPT_BUTTON1: return BTN1 "Low Gear";
12796 case IPT_BUTTON2: return BTN2 "High Gear";
12797 case IPT_JOYSTICK_UP: return "Speed Up";
12798 case IPT_JOYSTICK_DOWN: return "Slow Down";
12799 case IPT_JOYSTICK_LEFT: return "Left";
12800 case IPT_JOYSTICK_RIGHT: return "Right";
12801 } /* end of switch */
12802
12803 return "";
12804 }
12805
12806 const struct ControlInfo roadrunn_ctrl =
12807 {
12808 false, /* 45_degree_rotation for joystick(s) */
12809 true, /* alternating_controls */
12810 true, /* mirrored_controls */
12811 "Mame includes buttons 2 & 3, but they are not used. The original game has the hop button mirrored on both sides of the joystick. The left side jump button is also 1 player start button /* control_details */ mame emulates this as two buttons, button1 and start1. The right side hop button is also 2 players start button; mame emulates this as only the 'start2' button, even though pressing mame's start2 button also makes RoadRunner hop. The original joystick was a Hall Effect joystick: an analog joystick that used magnetics to vary the resistance instead of the usual POT.", /* control_details */
12812 &roadrunn_get_ctrl_name
12813 };
12814
roadrunn_get_ctrl_name(int type)12815 const char *roadrunn_get_ctrl_name(int type)
12816 {
12817 switch(type)
12818 {
12819 case IPT_BUTTON1: return BTN1 "Hop";
12820 case IPT_BUTTON2: return BTN2 "??not used";
12821 case IPT_BUTTON3: return BTN3 "??not used";
12822 case IPT_AD_STICK_X: return "Left";
12823 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
12824 case IPT_AD_STICK_Y: return "Up";
12825 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
12826 } /* end of switch */
12827
12828 return "";
12829 }
12830
12831 const struct ControlInfo robby_ctrl =
12832 {
12833 false, /* 45_degree_rotation for joystick(s) */
12834 true, /* alternating_controls */
12835 true, /* mirrored_controls */
12836 "", /* control_details */
12837 &robby_get_ctrl_name
12838 };
12839
robby_get_ctrl_name(int type)12840 const char *robby_get_ctrl_name(int type)
12841 {
12842 switch(type)
12843 {
12844 case IPT_BUTTON1: return BTN1 "Magic";
12845 case IPT_JOYSTICK_UP: return "Move Up";
12846 case IPT_JOYSTICK_DOWN: return "Move Down";
12847 case IPT_JOYSTICK_LEFT: return "Move Left";
12848 case IPT_JOYSTICK_RIGHT: return "Move Right";
12849 } /* end of switch */
12850
12851 return "";
12852 }
12853
12854 const struct ControlInfo robocop_ctrl =
12855 {
12856 false, /* 45_degree_rotation for joystick(s) */
12857 true, /* alternating_controls */
12858 true, /* mirrored_controls */
12859 "", /* control_details */
12860 &robocop_get_ctrl_name
12861 };
12862
robocop_get_ctrl_name(int type)12863 const char *robocop_get_ctrl_name(int type)
12864 {
12865 switch(type)
12866 {
12867 case IPT_BUTTON1: return BTN1 "Shoot/Punch";
12868 case IPT_BUTTON2: return BTN2 "Jump";
12869 } /* end of switch */
12870
12871 return joy4way_labels(type);
12872 }
12873
12874 const struct ControlInfo robocop2_ctrl =
12875 {
12876 false, /* 45_degree_rotation for joystick(s) */
12877 false, /* alternating_controls */
12878 true, /* mirrored_controls */
12879 "", /* control_details */
12880 &robocop2_get_ctrl_name
12881 };
12882
robocop2_get_ctrl_name(int type)12883 const char *robocop2_get_ctrl_name(int type)
12884 {
12885 switch(type)
12886 {
12887 case IPT_BUTTON1: return BTN1 "Shoot Left";
12888 case IPT_BUTTON2: return BTN2 "Shoot Right";
12889 case IPT_BUTTON3: return BTN3 "Jump";
12890 } /* end of switch */
12891
12892 return joy4way_labels(type);
12893 }
12894
12895 const struct ControlInfo robotron_ctrl =
12896 {
12897 false, /* 45_degree_rotation for joystick(s) */
12898 true, /* alternating_controls */
12899 true, /* mirrored_controls */
12900 "The drivers in mame don't have a cocktail mode, but klov shows a cocktail cab, and the robotron drawing set shows two (cocktail) sets of dual joysticks.", /* control_details */
12901 &robotron_get_ctrl_name
12902 };
12903
robotron_get_ctrl_name(int type)12904 const char *robotron_get_ctrl_name(int type)
12905 {
12906 switch(type)
12907 {
12908 case IPT_JOYSTICKLEFT_UP: return "Move Up";
12909 case IPT_JOYSTICKLEFT_DOWN: return "Move Down";
12910 case IPT_JOYSTICKLEFT_LEFT: return "Move Left";
12911 case IPT_JOYSTICKLEFT_RIGHT: return "Move Right";
12912 case IPT_JOYSTICKRIGHT_UP: return "Fire Up";
12913 case IPT_JOYSTICKRIGHT_DOWN: return "Fire Down";
12914 case IPT_JOYSTICKRIGHT_LEFT: return "Fire Left";
12915 case IPT_JOYSTICKRIGHT_RIGHT: return "Fire Right";
12916 } /* end of switch */
12917
12918 return "";
12919 }
12920
12921 const struct ControlInfo rocnrope_ctrl =
12922 {
12923 false, /* 45_degree_rotation for joystick(s) */
12924 true, /* alternating_controls */
12925 true, /* mirrored_controls */
12926 "", /* control_details */
12927 &rocnrope_get_ctrl_name
12928 };
12929
rocnrope_get_ctrl_name(int type)12930 const char *rocnrope_get_ctrl_name(int type)
12931 {
12932 switch(type)
12933 {
12934 case IPT_BUTTON1: return BTN1 "Rope";
12935 case IPT_BUTTON2: return BTN2 "Flash";
12936 } /* end of switch */
12937
12938 return joy4way_labels(type);
12939 }
12940
12941 const struct ControlInfo rollerg_ctrl =
12942 {
12943 false, /* 45_degree_rotation for joystick(s) */
12944 false, /* alternating_controls */
12945 true, /* mirrored_controls */
12946 "The two buttons have other uses besides those labeled, but you will be prompted on how to use them during gameplay.", /* control_details */
12947 &rollerg_get_ctrl_name
12948 };
12949
rollerg_get_ctrl_name(int type)12950 const char *rollerg_get_ctrl_name(int type)
12951 {
12952 switch(type)
12953 {
12954 case IPT_BUTTON1: return BTN1 "Attack";
12955 case IPT_BUTTON2: return BTN2 "Jump";
12956 } /* end of switch */
12957
12958 return joy4way_labels(type);
12959 }
12960
12961 const struct ControlInfo rthunder_ctrl =
12962 {
12963 false, /* 45_degree_rotation for joystick(s) */
12964 true, /* alternating_controls */
12965 true, /* mirrored_controls */
12966 "The buttons are mirrored on both sides of the joystick. There are three settings for the type of control panel: 'Type A Upright' (1 joystick, alternating), 'Type B Cocktail--no flip' (2 joysticks, alternating), and 'Type C Cocktail--flip' (2 joysticks, alternating). Those with normal 2 joystick upright cabs will be happy with the Type B setting.", /* control_details */
12967 &rthunder_get_ctrl_name
12968 };
12969
rthunder_get_ctrl_name(int type)12970 const char *rthunder_get_ctrl_name(int type)
12971 {
12972 switch(type)
12973 {
12974 case IPT_BUTTON1: return BTN1 "Shoot";
12975 case IPT_BUTTON2: return BTN2 "Jump";
12976 } /* end of switch */
12977
12978 return joy4way_labels(type);
12979 }
12980
12981 const struct ControlInfo rranger_ctrl =
12982 {
12983 false, /* 45_degree_rotation for joystick(s) */
12984 false, /* alternating_controls */
12985 true, /* mirrored_controls */
12986 "The original cpo used icons, but they are very cryptic. 'Shoot' sported a rather understandable gun icon, but 'Jump' had an icon of overlapping up and down arrows.", /* control_details */
12987 &rranger_get_ctrl_name
12988 };
12989
rranger_get_ctrl_name(int type)12990 const char *rranger_get_ctrl_name(int type)
12991 {
12992 switch(type)
12993 {
12994 case IPT_BUTTON1: return BTN1 "Jump";
12995 case IPT_BUTTON2: return BTN2 "Shoot";
12996 } /* end of switch */
12997
12998 return joy4way_labels(type);
12999 }
13000
13001 const struct ControlInfo roundup_ctrl =
13002 {
13003 false, /* 45_degree_rotation for joystick(s) */
13004 true, /* alternating_controls */
13005 true, /* mirrored_controls */
13006 "The original panel has the same button either side of the joystick so can be played with either hand", /* control_details */
13007 &roundup_get_ctrl_name
13008 };
13009
roundup_get_ctrl_name(int type)13010 const char *roundup_get_ctrl_name(int type)
13011 {
13012 switch(type)
13013 {
13014 case IPT_BUTTON1: return BTN1 "Cube Color Select";
13015 } /* end of switch */
13016
13017 return joy4way_labels(type);
13018 }
13019
13020 const struct ControlInfo rungun_ctrl =
13021 {
13022 false, /* 45_degree_rotation for joystick(s) */
13023 false, /* alternating_controls */
13024 true, /* mirrored_controls */
13025 "Please note that although all 4 player inputs are in mame you can NOT play a 2 on 2 game. The original 4-player cab was actually two cabinets linked together. Since mame doesn't emulate the link or the second monitor, this game is 2 player only.", /* control_details */
13026 &rungun_get_ctrl_name
13027 };
13028
rungun_get_ctrl_name(int type)13029 const char *rungun_get_ctrl_name(int type)
13030 {
13031 switch(type)
13032 {
13033 case IPT_BUTTON1: return BTN1 "A";
13034 case IPT_BUTTON2: return BTN2 "B";
13035 case IPT_BUTTON3: return BTN3 "C";
13036 } /* end of switch */
13037
13038 return joy4way_labels(type);
13039 }
13040
13041 const struct ControlInfo runaway_ctrl =
13042 {
13043 false, /* 45_degree_rotation for joystick(s) */
13044 true, /* alternating_controls */
13045 true, /* mirrored_controls */
13046 "The hi / low shifter was actually a plastic switch, but it operates just like a high / low shifter in mame so it's mapped it to that. The jump button was unlabeled on the original cpo.", /* control_details */
13047 &runaway_get_ctrl_name
13048 };
13049
runaway_get_ctrl_name(int type)13050 const char *runaway_get_ctrl_name(int type)
13051 {
13052 switch(type)
13053 {
13054 case IPT_BUTTON1: return BTN1 "Switcher";
13055 case IPT_BUTTON2: return BTN2 "Jump";
13056 case IPT_BUTTON3: return BTN3 "Forward / Reverse";
13057 } /* end of switch */
13058
13059 return "";
13060 }
13061
13062 const struct ControlInfo stunrun_ctrl =
13063 {
13064 false, /* 45_degree_rotation for joystick(s) */
13065 false, /* alternating_controls */
13066 false, /* mirrored_controls */
13067 "Even though the yoke's buttons have seperate inputs, they seem to both perform the same function.", /* control_details */
13068 &stunrun_get_ctrl_name
13069 };
13070
stunrun_get_ctrl_name(int type)13071 const char *stunrun_get_ctrl_name(int type)
13072 {
13073 switch(type)
13074 {
13075 case IPT_BUTTON1: return BTN1 "Fire (left)";
13076 case IPT_BUTTON2: return BTN2 "Fire (right)";
13077 case IPT_AD_STICK_X: return "Left";
13078 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
13079 case IPT_AD_STICK_Y: return "Up";
13080 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
13081 } /* end of switch */
13082
13083 return "";
13084 }
13085
13086 const struct ControlInfo salamand_ctrl =
13087 {
13088 false, /* 45_degree_rotation for joystick(s) */
13089 false, /* alternating_controls */
13090 true, /* mirrored_controls */
13091 "", /* control_details */
13092 &salamand_get_ctrl_name
13093 };
13094
salamand_get_ctrl_name(int type)13095 const char *salamand_get_ctrl_name(int type)
13096 {
13097 switch(type)
13098 {
13099 case IPT_BUTTON1: return BTN1 "Fire";
13100 case IPT_BUTTON2: return BTN2 "Missile";
13101 } /* end of switch */
13102
13103 return joy4way_labels(type);
13104 }
13105
13106 const struct ControlInfo searchar_ctrl =
13107 {
13108 false, /* 45_degree_rotation for joystick(s) */
13109 false, /* alternating_controls */
13110 true, /* mirrored_controls */
13111 "", /* control_details */
13112 &searchar_get_ctrl_name
13113 };
13114
searchar_get_ctrl_name(int type)13115 const char *searchar_get_ctrl_name(int type)
13116 {
13117 switch(type)
13118 {
13119 case IPT_BUTTON1: return BTN1 "Fire";
13120 case IPT_BUTTON2: return BTN2 "Jump";
13121 case IPT_DIAL: return "Left";
13122 case (IPT_DIAL + IPT_EXTENSION): return "Right";
13123 } /* end of switch */
13124
13125 return joy4way_labels(type);
13126 }
13127
13128 const struct ControlInfo sarge_ctrl =
13129 {
13130 false, /* 45_degree_rotation for joystick(s) */
13131 false, /* alternating_controls */
13132 true, /* mirrored_controls */
13133 "The buttons are mirrored across both sticks. They are labeled generically because you can control various vehicles in the game and they have different functions for each. This game driver has hacked in inputs that allow you to play the game with a regular joystick. To disable these hacked inputs you need to either disable cheats or remap the hacked inputs to 'none' in the input menu.", /* control_details */
13134 &sarge_get_ctrl_name
13135 };
13136
sarge_get_ctrl_name(int type)13137 const char *sarge_get_ctrl_name(int type)
13138 {
13139 switch(type)
13140 {
13141 case IPT_BUTTON1: return BTN1 "Trigger Switch";
13142 case IPT_BUTTON2: return BTN2 "Thumb Button";
13143 case IPT_JOYSTICKLEFT_UP: return "Left Tread Forward";
13144 case IPT_JOYSTICKLEFT_DOWN: return "Left Tread Backward";
13145 case IPT_JOYSTICKRIGHT_UP: return "Right Tread Forward";
13146 case IPT_JOYSTICKRIGHT_DOWN: return "Right Tread Backward";
13147 } /* end of switch */
13148
13149 return "";
13150 }
13151
13152 const struct ControlInfo satansat_ctrl =
13153 {
13154 false, /* 45_degree_rotation for joystick(s) */
13155 true, /* alternating_controls */
13156 true, /* mirrored_controls */
13157 "The joystick had the typical generic 'control' caption below it.", /* control_details */
13158 &satansat_get_ctrl_name
13159 };
13160
satansat_get_ctrl_name(int type)13161 const char *satansat_get_ctrl_name(int type)
13162 {
13163 switch(type)
13164 {
13165 case IPT_BUTTON1: return BTN1 "Firing Button";
13166 case IPT_BUTTON2: return BTN2 "Laser Beam";
13167 } /* end of switch */
13168
13169 return joy2way_labels(type);
13170 }
13171
13172 const struct ControlInfo shollow_ctrl =
13173 {
13174 false, /* 45_degree_rotation for joystick(s) */
13175 true, /* alternating_controls */
13176 true, /* mirrored_controls */
13177 "This game actually uses a gorf-style trigger stick, but a restrictor is used to make it 2-way.", /* control_details */
13178 &shollow_get_ctrl_name
13179 };
13180
shollow_get_ctrl_name(int type)13181 const char *shollow_get_ctrl_name(int type)
13182 {
13183 switch(type)
13184 {
13185 case IPT_BUTTON1: return BTN1 "Fire";
13186 case IPT_BUTTON2: return BTN2 "Shield";
13187 } /* end of switch */
13188
13189 return joy2way_labels(type);
13190 }
13191
13192 const struct ControlInfo scramble_ctrl =
13193 {
13194 false, /* 45_degree_rotation for joystick(s) */
13195 true, /* alternating_controls */
13196 true, /* mirrored_controls */
13197 "", /* control_details */
13198 &scramble_get_ctrl_name
13199 };
13200
scramble_get_ctrl_name(int type)13201 const char *scramble_get_ctrl_name(int type)
13202 {
13203 switch(type)
13204 {
13205 case IPT_BUTTON1: return BTN1 "Laser";
13206 case IPT_BUTTON2: return BTN2 "Bombs";
13207 case IPT_JOYSTICK_UP: return "Up";
13208 case IPT_JOYSTICK_DOWN: return "Down";
13209 case IPT_JOYSTICK_LEFT: return "Slow";
13210 case IPT_JOYSTICK_RIGHT: return "Fast";
13211 } /* end of switch */
13212
13213 return "";
13214 }
13215
13216 const struct ControlInfo sdi_ctrl =
13217 {
13218 false, /* 45_degree_rotation for joystick(s) */
13219 false, /* alternating_controls */
13220 true, /* mirrored_controls */
13221 "For those of you who have 'fraken-panels' this is the game for you. This game uses the extremely odd combination of a top-fire 8-way joystick and a trackball. All controls are required too so forget about playing this game unless you have those controls.", /* control_details */
13222 &sdi_get_ctrl_name
13223 };
13224
sdi_get_ctrl_name(int type)13225 const char *sdi_get_ctrl_name(int type)
13226 {
13227 switch(type)
13228 {
13229 case IPT_BUTTON1: return BTN1 "Fire";
13230 case IPT_JOYSTICK_UP: return "Move Up";
13231 case IPT_JOYSTICK_DOWN: return "Move Down";
13232 case IPT_JOYSTICK_LEFT: return "Move Left";
13233 case IPT_JOYSTICK_RIGHT: return "Move Right";
13234 case IPT_TRACKBALL_X: return "Aim Left";
13235 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Aim Right";
13236 case IPT_TRACKBALL_Y: return "Aim Up";
13237 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Aim Down";
13238 } /* end of switch */
13239
13240 return "";
13241 }
13242
13243 const struct ControlInfo seawolf_ctrl =
13244 {
13245 false, /* 45_degree_rotation for joystick(s) */
13246 false, /* alternating_controls */
13247 false, /* mirrored_controls */
13248 "The 'paddle' is actually a periscope you look through and turn. The field of view you have when looking through the scope helps you aim. Mame displays a cross hair to help you aim, you can turn it off with the F1 key.", /* control_details */
13249 &seawolf_get_ctrl_name
13250 };
13251
seawolf_get_ctrl_name(int type)13252 const char *seawolf_get_ctrl_name(int type)
13253 {
13254 switch(type)
13255 {
13256 case IPT_BUTTON1: return BTN1 "Fire Torpedo";
13257 case IPT_PADDLE: return "Left";
13258 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
13259 } /* end of switch */
13260
13261 return "";
13262 }
13263
13264 const struct ControlInfo seawolf2_ctrl =
13265 {
13266 false, /* 45_degree_rotation for joystick(s) */
13267 false, /* alternating_controls */
13268 true, /* mirrored_controls */
13269 "The 'paddle' is actually a periscope you look through and turn. The field of view you have when looking through the scope helps you aim. Mame displays a cross hair to help you aim, you can turn it off with the F1 key.", /* control_details */
13270 &seawolf2_get_ctrl_name
13271 };
13272
seawolf2_get_ctrl_name(int type)13273 const char *seawolf2_get_ctrl_name(int type)
13274 {
13275 switch(type)
13276 {
13277 case IPT_BUTTON1: return BTN1 "Fire Torpedo";
13278 case IPT_PADDLE: return "Left";
13279 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
13280 } /* end of switch */
13281
13282 return "";
13283 }
13284
13285 const struct ControlInfo shdancer_ctrl =
13286 {
13287 false, /* 45_degree_rotation for joystick(s) */
13288 true, /* alternating_controls */
13289 true, /* mirrored_controls */
13290 "Pull joystick down and push ATTACK button to send your dog to attack your opponents. To wipe out everything on the screen use NINJA MAGIC button.", /* control_details */
13291 &shdancer_get_ctrl_name
13292 };
13293
shdancer_get_ctrl_name(int type)13294 const char *shdancer_get_ctrl_name(int type)
13295 {
13296 switch(type)
13297 {
13298 case IPT_BUTTON1: return BTN1 "Attack";
13299 case IPT_BUTTON2: return BTN2 "Jump";
13300 case IPT_BUTTON3: return BTN3 "Ninja Magic";
13301 } /* end of switch */
13302
13303 return joy4way_labels(type);
13304 }
13305
13306 const struct ControlInfo shadoww_ctrl =
13307 {
13308 false, /* 45_degree_rotation for joystick(s) */
13309 false, /* alternating_controls */
13310 true, /* mirrored_controls */
13311 "Yes, although it is rare to see the game with it's original layout, it was designed to be played with a top-fire joystick.", /* control_details */
13312 &shadoww_get_ctrl_name
13313 };
13314
shadoww_get_ctrl_name(int type)13315 const char *shadoww_get_ctrl_name(int type)
13316 {
13317 switch(type)
13318 {
13319 case IPT_BUTTON1: return BTN1 "Attack";
13320 case IPT_BUTTON2: return BTN2 "Jump";
13321 case IPT_BUTTON3: return BTN3 "Grab";
13322 } /* end of switch */
13323
13324 return joy4way_labels(type);
13325 }
13326
13327 const struct ControlInfo sharkatt_ctrl =
13328 {
13329 false, /* 45_degree_rotation for joystick(s) */
13330 true, /* alternating_controls */
13331 true, /* mirrored_controls */
13332 "The cpo labels the joystick as 'shark control.' Above both buttons are the words 'press to' (as in press to thrust or press to munch).", /* control_details */
13333 &sharkatt_get_ctrl_name
13334 };
13335
sharkatt_get_ctrl_name(int type)13336 const char *sharkatt_get_ctrl_name(int type)
13337 {
13338 switch(type)
13339 {
13340 case IPT_BUTTON1: return BTN1 "Munch";
13341 case IPT_BUTTON2: return BTN2 "Thrust";
13342 } /* end of switch */
13343
13344 return joy4way_labels(type);
13345 }
13346
13347 const struct ControlInfo sshooter_ctrl =
13348 {
13349 false, /* 45_degree_rotation for joystick(s) */
13350 false, /* alternating_controls */
13351 true, /* mirrored_controls */
13352 "", /* control_details */
13353 &sshooter_get_ctrl_name
13354 };
13355
sshooter_get_ctrl_name(int type)13356 const char *sshooter_get_ctrl_name(int type)
13357 {
13358 switch(type)
13359 {
13360 case IPT_BUTTON1: return BTN1 "Fire";
13361 case IPT_LIGHTGUN_X: return "Aim Left";
13362 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
13363 case IPT_LIGHTGUN_Y: return "Aim Up";
13364 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
13365 } /* end of switch */
13366
13367 return "";
13368 }
13369
13370 const struct ControlInfo sheriff_ctrl =
13371 {
13372 false, /* 45_degree_rotation for joystick(s) */
13373 true, /* alternating_controls */
13374 true, /* mirrored_controls */
13375 "NOTE The input emulation is correct in mame, but this games real life controls are NOT dual 8-ways. The game used a 8 way joystick and a special rotary dial with a trigger, which used absolute positon. Basically it acted like an 8way joystick that stays in the direction you point it.", /* control_details */
13376 &sheriff_get_ctrl_name
13377 };
13378
sheriff_get_ctrl_name(int type)13379 const char *sheriff_get_ctrl_name(int type)
13380 {
13381 switch(type)
13382 {
13383 case IPT_BUTTON1: return BTN1 "Fire";
13384 case IPT_JOYSTICKLEFT_UP: return "Up";
13385 case IPT_JOYSTICKLEFT_DOWN: return "Down";
13386 case IPT_JOYSTICKLEFT_LEFT: return "Left";
13387 case IPT_JOYSTICKLEFT_RIGHT: return "Right";
13388 case IPT_JOYSTICKRIGHT_UP: return "Aim Up";
13389 case IPT_JOYSTICKRIGHT_DOWN: return "Aim Down";
13390 case IPT_JOYSTICKRIGHT_LEFT: return "Aim Left";
13391 case IPT_JOYSTICKRIGHT_RIGHT: return "Aim Right";
13392 } /* end of switch */
13393
13394 return "";
13395 }
13396
13397 const struct ControlInfo shinobi_ctrl =
13398 {
13399 false, /* 45_degree_rotation for joystick(s) */
13400 true, /* alternating_controls */
13401 true, /* mirrored_controls */
13402 "CP is a generic SEGA CP, with buttons arranged in a triangle.", /* control_details */
13403 &shinobi_get_ctrl_name
13404 };
13405
shinobi_get_ctrl_name(int type)13406 const char *shinobi_get_ctrl_name(int type)
13407 {
13408 switch(type)
13409 {
13410 case IPT_BUTTON1: return BTN1 "Attack";
13411 case IPT_BUTTON2: return BTN2 "Jump";
13412 case IPT_BUTTON3: return BTN3 "Ninja Magic";
13413 } /* end of switch */
13414
13415 return joy4way_labels(type);
13416 }
13417
13418 const struct ControlInfo shootout_ctrl =
13419 {
13420 false, /* 45_degree_rotation for joystick(s) */
13421 true, /* alternating_controls */
13422 true, /* mirrored_controls */
13423 "The 'jump' label is misleading. While moving left or right you press it to roll out of the way. The button is only effective while moving.", /* control_details */
13424 &shootout_get_ctrl_name
13425 };
13426
shootout_get_ctrl_name(int type)13427 const char *shootout_get_ctrl_name(int type)
13428 {
13429 switch(type)
13430 {
13431 case IPT_BUTTON1: return BTN1 "Shoot";
13432 case IPT_BUTTON2: return BTN2 "Jump";
13433 } /* end of switch */
13434
13435 return joy4way_labels(type);
13436 }
13437
13438 const struct ControlInfo shootbul_ctrl =
13439 {
13440 false, /* 45_degree_rotation for joystick(s) */
13441 true, /* alternating_controls */
13442 true, /* mirrored_controls */
13443 "", /* control_details */
13444 &shootbul_get_ctrl_name
13445 };
13446
shootbul_get_ctrl_name(int type)13447 const char *shootbul_get_ctrl_name(int type)
13448 {
13449 switch(type)
13450 {
13451 case IPT_TRACKBALL_X: return "Left";
13452 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
13453 case IPT_TRACKBALL_Y: return "Up";
13454 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
13455 } /* end of switch */
13456
13457 return "";
13458 }
13459
13460 const struct ControlInfo shuffle_ctrl =
13461 {
13462 false, /* 45_degree_rotation for joystick(s) */
13463 true, /* alternating_controls */
13464 true, /* mirrored_controls */
13465 "Please note that the actual cpo shows the generic arrows shooting out from the trackball with the caption 'control puck' this has been left out for length reasons. Also the button caption may not exactly be 'game select' but this cpo was screened directly over the metal, and thus it's very difficult to find a completely readable one.", /* control_details */
13466 &shuffle_get_ctrl_name
13467 };
13468
shuffle_get_ctrl_name(int type)13469 const char *shuffle_get_ctrl_name(int type)
13470 {
13471 switch(type)
13472 {
13473 case IPT_BUTTON1: return BTN1 "Game Select";
13474 case IPT_TRACKBALL_X: return "Left";
13475 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
13476 case IPT_TRACKBALL_Y: return "Up";
13477 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
13478 } /* end of switch */
13479
13480 return "";
13481 }
13482
13483 const struct ControlInfo shufshot_ctrl =
13484 {
13485 false, /* 45_degree_rotation for joystick(s) */
13486 true, /* alternating_controls */
13487 true, /* mirrored_controls */
13488 "", /* control_details */
13489 &shufshot_get_ctrl_name
13490 };
13491
shufshot_get_ctrl_name(int type)13492 const char *shufshot_get_ctrl_name(int type)
13493 {
13494 switch(type)
13495 {
13496 case IPT_BUTTON1: return BTN1 "Zoom";
13497 case IPT_BUTTON2: return BTN2 "Wax";
13498 case IPT_TRACKBALL_X: return "Left";
13499 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
13500 case IPT_TRACKBALL_Y: return "Up";
13501 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
13502 } /* end of switch */
13503
13504 return "";
13505 }
13506
13507 const struct ControlInfo sidearms_ctrl =
13508 {
13509 false, /* 45_degree_rotation for joystick(s) */
13510 false, /* alternating_controls */
13511 true, /* mirrored_controls */
13512 "", /* control_details */
13513 &sidearms_get_ctrl_name
13514 };
13515
sidearms_get_ctrl_name(int type)13516 const char *sidearms_get_ctrl_name(int type)
13517 {
13518 switch(type)
13519 {
13520 case IPT_BUTTON1: return BTN1 "Fire Left";
13521 case IPT_BUTTON2: return BTN2 "Fire Right";
13522 case IPT_BUTTON3: return BTN3 "Power";
13523 } /* end of switch */
13524
13525 return joy4way_labels(type);
13526 }
13527
13528 const struct ControlInfo sidetrac_ctrl =
13529 {
13530 false, /* 45_degree_rotation for joystick(s) */
13531 true, /* alternating_controls */
13532 true, /* mirrored_controls */
13533 "Note that the original game used a generic exidy panel and thus the button was unlabeled.", /* control_details */
13534 &sidetrac_get_ctrl_name
13535 };
13536
sidetrac_get_ctrl_name(int type)13537 const char *sidetrac_get_ctrl_name(int type)
13538 {
13539 switch(type)
13540 {
13541 case IPT_BUTTON1: return BTN1 "Speed Up";
13542 } /* end of switch */
13543
13544 return joy4way_labels(type);
13545 }
13546
13547 const struct ControlInfo sinistar_ctrl =
13548 {
13549 false, /* 45_degree_rotation for joystick(s) */
13550 true, /* alternating_controls */
13551 true, /* mirrored_controls */
13552 "", /* control_details */
13553 &sinistar_get_ctrl_name
13554 };
13555
sinistar_get_ctrl_name(int type)13556 const char *sinistar_get_ctrl_name(int type)
13557 {
13558 switch(type)
13559 {
13560 case IPT_BUTTON1: return BTN1 "Fire";
13561 case IPT_BUTTON2: return BTN2 "Sinibomb";
13562 case IPT_AD_STICK_X: return "Left";
13563 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
13564 case IPT_AD_STICK_Y: return "Up";
13565 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
13566 } /* end of switch */
13567
13568 return "";
13569 }
13570
13571 const struct ControlInfo skullxbo_ctrl =
13572 {
13573 false, /* 45_degree_rotation for joystick(s) */
13574 false, /* alternating_controls */
13575 true, /* mirrored_controls */
13576 "CP has 2 sword buttons either side of joystick, and 1 turn button directly below joystick. This just allows for left/right handed players - both sword buttons are wired to same input.", /* control_details */
13577 &skullxbo_get_ctrl_name
13578 };
13579
skullxbo_get_ctrl_name(int type)13580 const char *skullxbo_get_ctrl_name(int type)
13581 {
13582 switch(type)
13583 {
13584 case IPT_BUTTON1: return BTN1 "Sword";
13585 case IPT_BUTTON2: return BTN2 "Turn";
13586 } /* end of switch */
13587
13588 return joy4way_labels(type);
13589 }
13590
13591 const struct ControlInfo skydiver_ctrl =
13592 {
13593 false, /* 45_degree_rotation for joystick(s) */
13594 false, /* alternating_controls */
13595 true, /* mirrored_controls */
13596 "This game actually used a parachute ripcord mounted as a 2-way joystick. You adjust for the wind by moving the cord left or right and pull up on it to release the chute.", /* control_details */
13597 &skydiver_get_ctrl_name
13598 };
13599
skydiver_get_ctrl_name(int type)13600 const char *skydiver_get_ctrl_name(int type)
13601 {
13602 switch(type)
13603 {
13604 case IPT_BUTTON1: return BTN1 "Jump";
13605 case IPT_BUTTON2: return BTN2 "Open Chute";
13606 } /* end of switch */
13607
13608 return joy2way_labels(type);
13609 }
13610
13611 const struct ControlInfo skysoldr_ctrl =
13612 {
13613 false, /* 45_degree_rotation for joystick(s) */
13614 false, /* alternating_controls */
13615 true, /* mirrored_controls */
13616 "", /* control_details */
13617 &skysoldr_get_ctrl_name
13618 };
13619
skysoldr_get_ctrl_name(int type)13620 const char *skysoldr_get_ctrl_name(int type)
13621 {
13622 switch(type)
13623 {
13624 case IPT_BUTTON1: return BTN1 "Cannon";
13625 case IPT_BUTTON2: return BTN2 "Missle";
13626 } /* end of switch */
13627
13628 return joy4way_labels(type);
13629 }
13630
13631 const struct ControlInfo slapfigh_ctrl =
13632 {
13633 false, /* 45_degree_rotation for joystick(s) */
13634 true, /* alternating_controls */
13635 true, /* mirrored_controls */
13636 "The game is 2 player alternating, with a cocktail mode. As with all alternating cocktail games, a separate input is for the second player when the video flips for the second player.", /* control_details */
13637 &slapfigh_get_ctrl_name
13638 };
13639
slapfigh_get_ctrl_name(int type)13640 const char *slapfigh_get_ctrl_name(int type)
13641 {
13642 switch(type)
13643 {
13644 case IPT_BUTTON1: return BTN1 "Fire";
13645 case IPT_BUTTON2: return BTN2 "Weapon Select";
13646 } /* end of switch */
13647
13648 return joy4way_labels(type);
13649 }
13650
13651 const struct ControlInfo slikshot_ctrl =
13652 {
13653 false, /* 45_degree_rotation for joystick(s) */
13654 true, /* alternating_controls */
13655 true, /* mirrored_controls */
13656 "The 'trackball' is actually an entire section of a pool table, with a cue ball, cue stick, and various sensors to track their movement. The buttons are lighted when they are required and you are prompted on screen as to which to press.", /* control_details */
13657 &slikshot_get_ctrl_name
13658 };
13659
slikshot_get_ctrl_name(int type)13660 const char *slikshot_get_ctrl_name(int type)
13661 {
13662 switch(type)
13663 {
13664 case IPT_BUTTON1: return BTN1 "Yellow";
13665 case IPT_BUTTON2: return BTN2 "Green";
13666 case IPT_BUTTON3: return BTN3 "Red";
13667 case IPT_TRACKBALL_X: return "Left";
13668 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
13669 case IPT_TRACKBALL_Y: return "Up";
13670 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
13671 } /* end of switch */
13672
13673 return "";
13674 }
13675
13676 const struct ControlInfo slither_ctrl =
13677 {
13678 false, /* 45_degree_rotation for joystick(s) */
13679 true, /* alternating_controls */
13680 true, /* mirrored_controls */
13681 "", /* control_details */
13682 &slither_get_ctrl_name
13683 };
13684
slither_get_ctrl_name(int type)13685 const char *slither_get_ctrl_name(int type)
13686 {
13687 switch(type)
13688 {
13689 case IPT_BUTTON1: return BTN1 "Fire Down";
13690 case IPT_BUTTON2: return BTN2 "Fire Up";
13691 case IPT_TRACKBALL_X: return "Left";
13692 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
13693 case IPT_TRACKBALL_Y: return "Up";
13694 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
13695 } /* end of switch */
13696
13697 return "";
13698 }
13699
13700 const struct ControlInfo slyspy_ctrl =
13701 {
13702 false, /* 45_degree_rotation for joystick(s) */
13703 true, /* alternating_controls */
13704 true, /* mirrored_controls */
13705 "", /* control_details */
13706 &slyspy_get_ctrl_name
13707 };
13708
slyspy_get_ctrl_name(int type)13709 const char *slyspy_get_ctrl_name(int type)
13710 {
13711 switch(type)
13712 {
13713 case IPT_BUTTON1: return BTN1 "Shoot";
13714 case IPT_BUTTON2: return BTN2 "Jump";
13715 } /* end of switch */
13716
13717 return joy4way_labels(type);
13718 }
13719
13720 const struct ControlInfo smashtv_ctrl =
13721 {
13722 false, /* 45_degree_rotation for joystick(s) */
13723 false, /* alternating_controls */
13724 true, /* mirrored_controls */
13725 "The joysticks were just globally labeled 'move' and 'fire'", /* control_details */
13726 &smashtv_get_ctrl_name
13727 };
13728
smashtv_get_ctrl_name(int type)13729 const char *smashtv_get_ctrl_name(int type)
13730 {
13731 switch(type)
13732 {
13733 case IPT_JOYSTICKLEFT_UP: return "Move Up";
13734 case IPT_JOYSTICKLEFT_DOWN: return "Move Down";
13735 case IPT_JOYSTICKLEFT_LEFT: return "Move Left";
13736 case IPT_JOYSTICKLEFT_RIGHT: return "Move Right";
13737 case IPT_JOYSTICKRIGHT_UP: return "Fire Up";
13738 case IPT_JOYSTICKRIGHT_DOWN: return "Fire Down";
13739 case IPT_JOYSTICKRIGHT_LEFT: return "Fire Left";
13740 case IPT_JOYSTICKRIGHT_RIGHT: return "Fire Right";
13741 } /* end of switch */
13742
13743 return "";
13744 }
13745
13746 const struct ControlInfo snakjack_ctrl =
13747 {
13748 false, /* 45_degree_rotation for joystick(s) */
13749 true, /* alternating_controls */
13750 true, /* mirrored_controls */
13751 "", /* control_details */
13752 &snakjack_get_ctrl_name
13753 };
13754
snakjack_get_ctrl_name(int type)13755 const char *snakjack_get_ctrl_name(int type)
13756 {
13757 switch(type)
13758 {
13759 case IPT_BUTTON1: return BTN1 "Sneeze Button";
13760 case IPT_TRACKBALL_X: return "Left";
13761 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
13762 case IPT_TRACKBALL_Y: return "Up";
13763 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
13764 } /* end of switch */
13765
13766 return "";
13767 }
13768
13769 const struct ControlInfo snapjack_ctrl =
13770 {
13771 false, /* 45_degree_rotation for joystick(s) */
13772 true, /* alternating_controls */
13773 true, /* mirrored_controls */
13774 "The cpo generically labeled the entire joystick 'control'.", /* control_details */
13775 &snapjack_get_ctrl_name
13776 };
13777
snapjack_get_ctrl_name(int type)13778 const char *snapjack_get_ctrl_name(int type)
13779 {
13780 return joy4way_labels(type);
13781 }
13782
13783 const struct ControlInfo snowbros_ctrl =
13784 {
13785 false, /* 45_degree_rotation for joystick(s) */
13786 false, /* alternating_controls */
13787 true, /* mirrored_controls */
13788 "Snow Bros is listed as using an 8-way joystick, though only left and right are used during gameplay.", /* control_details */
13789 &snowbros_get_ctrl_name
13790 };
13791
snowbros_get_ctrl_name(int type)13792 const char *snowbros_get_ctrl_name(int type)
13793 {
13794 switch(type)
13795 {
13796 case IPT_BUTTON1: return BTN1 "Shoot and Kick Snowball";
13797 case IPT_BUTTON2: return BTN2 "Jump";
13798 } /* end of switch */
13799
13800 return joy2way_labels(type);
13801 }
13802
13803 const struct ControlInfo solarfox_ctrl =
13804 {
13805 false, /* 45_degree_rotation for joystick(s) */
13806 true, /* alternating_controls */
13807 true, /* mirrored_controls */
13808 "it should be noted that the triger button was also mirrored on the control panel itself.", /* control_details */
13809 &solarfox_get_ctrl_name
13810 };
13811
solarfox_get_ctrl_name(int type)13812 const char *solarfox_get_ctrl_name(int type)
13813 {
13814 switch(type)
13815 {
13816 case IPT_BUTTON1: return BTN1 "Fire";
13817 case IPT_BUTTON2: return BTN2 "Speed Control";
13818 } /* end of switch */
13819
13820 return joy4way_labels(type);
13821 }
13822
13823 const struct ControlInfo solarq_ctrl =
13824 {
13825 false, /* 45_degree_rotation for joystick(s) */
13826 false, /* alternating_controls */
13827 false, /* mirrored_controls */
13828 "", /* control_details */
13829 &solarq_get_ctrl_name
13830 };
13831
solarq_get_ctrl_name(int type)13832 const char *solarq_get_ctrl_name(int type)
13833 {
13834 switch(type)
13835 {
13836 case IPT_BUTTON1: return BTN1 "Fire";
13837 case IPT_BUTTON2: return BTN2 "Thrust";
13838 case IPT_BUTTON3: return BTN3 "Hyper Space";
13839 case IPT_BUTTON4: return BTN4 "Nova";
13840 } /* end of switch */
13841
13842 return joy2way_labels(type);
13843 }
13844
13845 const struct ControlInfo amazon_ctrl =
13846 {
13847 false, /* 45_degree_rotation for joystick(s) */
13848 true, /* alternating_controls */
13849 true, /* mirrored_controls */
13850 "", /* control_details */
13851 &amazon_get_ctrl_name
13852 };
13853
amazon_get_ctrl_name(int type)13854 const char *amazon_get_ctrl_name(int type)
13855 {
13856 switch(type)
13857 {
13858 case IPT_BUTTON1: return BTN1 "Fire";
13859 case IPT_BUTTON2: return BTN2 "Bomb";
13860 } /* end of switch */
13861
13862 return joy4way_labels(type);
13863 }
13864
13865 const struct ControlInfo sbm_ctrl =
13866 {
13867 false, /* 45_degree_rotation for joystick(s) */
13868 true, /* alternating_controls */
13869 true, /* mirrored_controls */
13870 "This game is unplayable on anyone's layout. It used a series of photo sensors and a punching pad, along with boxing gloves to make a 'punching sim'. Mame maps the impact position on the pad to the directional arrows and the speed is calculated by the photo sensors. Player 2 joystick may also do something. It doesn't really matter as the game is unplayable. Interesting side note.... The original machine was responsible for several lawsuits as the pad wasn't padded enough and people injured themselves hitting it.", /* control_details */
13871 &sbm_get_ctrl_name
13872 };
13873
sbm_get_ctrl_name(int type)13874 const char *sbm_get_ctrl_name(int type)
13875 {
13876 switch(type)
13877 {
13878 case IPT_BUTTON1: return BTN1 "Sensor 1";
13879 case IPT_BUTTON2: return BTN2 "Sensor 2";
13880 case IPT_BUTTON3: return BTN3 "Sensor 3";
13881 case IPT_BUTTON4: return BTN4 "Sensor 4";
13882 case IPT_JOYSTICK_UP: return "Aim Up";
13883 case IPT_JOYSTICK_DOWN: return "Aim Down";
13884 case IPT_JOYSTICK_LEFT: return "Aim Left";
13885 case IPT_JOYSTICK_RIGHT: return "Aim Right";
13886 } /* end of switch */
13887
13888 return "";
13889 }
13890
13891 const struct ControlInfo souledge_ctrl =
13892 {
13893 false, /* 45_degree_rotation for joystick(s) */
13894 false, /* alternating_controls */
13895 true, /* mirrored_controls */
13896 "The original control panel actually has attack with arrows going left and right for 'Attack A' and attack with arrows going up and down for 'Attack B' On some panels you will see this game with the labels A,B,K,G", /* control_details */
13897 &souledge_get_ctrl_name
13898 };
13899
souledge_get_ctrl_name(int type)13900 const char *souledge_get_ctrl_name(int type)
13901 {
13902 switch(type)
13903 {
13904 case IPT_BUTTON1: return BTN1 "Attack A";
13905 case IPT_BUTTON2: return BTN2 "Attack B";
13906 case IPT_BUTTON3: return BTN3 "Kick";
13907 case IPT_BUTTON4: return BTN4 "Guard";
13908 } /* end of switch */
13909
13910 return joy4way_labels(type);
13911 }
13912
13913 const struct ControlInfo spacewar_ctrl =
13914 {
13915 false, /* 45_degree_rotation for joystick(s) */
13916 false, /* alternating_controls */
13917 true, /* mirrored_controls */
13918 "Two player only game where each player flies around space and tries to shoot each other. Features include partial damage, modifying gravity and inertia. Controls are fire, thrust, rotate left and right, hyperspace and reset.", /* control_details */
13919 &spacewar_get_ctrl_name
13920 };
13921
spacewar_get_ctrl_name(int type)13922 const char *spacewar_get_ctrl_name(int type)
13923 {
13924 switch(type)
13925 {
13926 case IPT_BUTTON1: return BTN1 "Fire";
13927 case IPT_BUTTON2: return BTN2 "Thrust";
13928 case IPT_BUTTON3: return BTN3 "Hyper Space";
13929 } /* end of switch */
13930
13931 return joy2way_labels(type);
13932 }
13933
13934 const struct ControlInfo sspaceat_ctrl =
13935 {
13936 false, /* 45_degree_rotation for joystick(s) */
13937 true, /* alternating_controls */
13938 true, /* mirrored_controls */
13939 "Space Invader type game.", /* control_details */
13940 &sspaceat_get_ctrl_name
13941 };
13942
sspaceat_get_ctrl_name(int type)13943 const char *sspaceat_get_ctrl_name(int type)
13944 {
13945 switch(type)
13946 {
13947 case IPT_BUTTON1: return BTN1 "Fire";
13948 case IPT_JOYSTICK_LEFT: return "Control Left";
13949 case IPT_JOYSTICK_RIGHT: return "Control Right";
13950 } /* end of switch */
13951
13952 return "";
13953 }
13954
13955 const struct ControlInfo spacduel_ctrl =
13956 {
13957 false, /* 45_degree_rotation for joystick(s) */
13958 false, /* alternating_controls */
13959 true, /* mirrored_controls */
13960 "Note that the 2 player start button does NOT function as a start button, rather a game select button. The good news is you can play a 2 player game on a single quarter!", /* control_details */
13961 &spacduel_get_ctrl_name
13962 };
13963
spacduel_get_ctrl_name(int type)13964 const char *spacduel_get_ctrl_name(int type)
13965 {
13966 switch(type)
13967 {
13968 case IPT_BUTTON1: return BTN1 "Fire";
13969 case IPT_BUTTON2: return BTN2 "Thrust";
13970 case IPT_BUTTON3: return BTN3 "Shield";
13971 case IPT_JOYSTICK_LEFT: return "Rotate Left";
13972 case IPT_JOYSTICK_RIGHT: return "Rotate Right";
13973 } /* end of switch */
13974
13975 return "";
13976 }
13977
13978 const struct ControlInfo spacefb_ctrl =
13979 {
13980 false, /* 45_degree_rotation for joystick(s) */
13981 true, /* alternating_controls */
13982 true, /* mirrored_controls */
13983 "The game's cpo used nautical labels above the directional buttons and arrows below them. Since we aren't all sailors, the arrow directions are included.", /* control_details */
13984 &spacefb_get_ctrl_name
13985 };
13986
spacefb_get_ctrl_name(int type)13987 const char *spacefb_get_ctrl_name(int type)
13988 {
13989 switch(type)
13990 {
13991 case IPT_BUTTON1: return BTN1 "Fire";
13992 case IPT_BUTTON2: return BTN2 "Warp";
13993 case IPT_JOYSTICK_LEFT: return "Port (Left)";
13994 case IPT_JOYSTICK_RIGHT: return "Starboard (Right)";
13995 } /* end of switch */
13996
13997 return "";
13998 }
13999
14000 const struct ControlInfo spacfury_ctrl =
14001 {
14002 false, /* 45_degree_rotation for joystick(s) */
14003 true, /* alternating_controls */
14004 true, /* mirrored_controls */
14005 "", /* control_details */
14006 &spacfury_get_ctrl_name
14007 };
14008
spacfury_get_ctrl_name(int type)14009 const char *spacfury_get_ctrl_name(int type)
14010 {
14011 switch(type)
14012 {
14013 case IPT_BUTTON1: return BTN1 "Fire";
14014 case IPT_BUTTON2: return BTN2 "Thrust";
14015 case IPT_JOYSTICK_LEFT: return "Rotate Left";
14016 case IPT_JOYSTICK_RIGHT: return "Rotate Right";
14017 } /* end of switch */
14018
14019 return "";
14020 }
14021
14022 const struct ControlInfo spacegun_ctrl =
14023 {
14024 false, /* 45_degree_rotation for joystick(s) */
14025 false, /* alternating_controls */
14026 true, /* mirrored_controls */
14027 "", /* control_details */
14028 &spacegun_get_ctrl_name
14029 };
14030
spacegun_get_ctrl_name(int type)14031 const char *spacegun_get_ctrl_name(int type)
14032 {
14033 switch(type)
14034 {
14035 case IPT_BUTTON1: return BTN1 "Trigger";
14036 case IPT_BUTTON2: return BTN2 "Bomb Select";
14037 case IPT_BUTTON3: return BTN3 "Back Up";
14038 case IPT_LIGHTGUN_X: return "Aim Left";
14039 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
14040 case IPT_LIGHTGUN_Y: return "Aim Up";
14041 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
14042 } /* end of switch */
14043
14044 return "";
14045 }
14046
14047 const struct ControlInfo sharrier_ctrl =
14048 {
14049 false, /* 45_degree_rotation for joystick(s) */
14050 false, /* alternating_controls */
14051 false, /* mirrored_controls */
14052 "If you are wondering why there are three 'shot' buttons, you are not alone. The trigger on the flight stick shoots and there are two buttons on the control panel that also shoot. They all have the same function, but for documentation's sake all three will be included.", /* control_details */
14053 &sharrier_get_ctrl_name
14054 };
14055
sharrier_get_ctrl_name(int type)14056 const char *sharrier_get_ctrl_name(int type)
14057 {
14058 switch(type)
14059 {
14060 case IPT_BUTTON1: return BTN1 "Shot";
14061 case IPT_BUTTON2: return BTN2 "Shot";
14062 case IPT_BUTTON3: return BTN3 "Shot";
14063 case IPT_AD_STICK_X: return "Left";
14064 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
14065 case IPT_AD_STICK_Y: return "Up";
14066 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
14067 } /* end of switch */
14068
14069 return "";
14070 }
14071
14072 const struct ControlInfo invaders_ctrl =
14073 {
14074 false, /* 45_degree_rotation for joystick(s) */
14075 true, /* alternating_controls */
14076 true, /* mirrored_controls */
14077 "The game cpo image uses 'control' as the label for the joystick. I modified it slightly to avoid confusion. The midway version of the game (invaders) actually used directional buttons instead of the joystick. The Taito version (Sitv) used the two-way joystick.", /* control_details */
14078 &invaders_get_ctrl_name
14079 };
14080
invaders_get_ctrl_name(int type)14081 const char *invaders_get_ctrl_name(int type)
14082 {
14083 switch(type)
14084 {
14085 case IPT_BUTTON1: return BTN1 "Fire";
14086 case IPT_JOYSTICK_RIGHT: return "Control Right";
14087 case IPT_JOYSTICK_LEFT: return "Control Left";
14088 } /* end of switch */
14089
14090 return "";
14091 }
14092
14093 const struct ControlInfo spacedx_ctrl =
14094 {
14095 false, /* 45_degree_rotation for joystick(s) */
14096 false, /* alternating_controls */
14097 true, /* mirrored_controls */
14098 "", /* control_details */
14099 &spacedx_get_ctrl_name
14100 };
14101
spacedx_get_ctrl_name(int type)14102 const char *spacedx_get_ctrl_name(int type)
14103 {
14104 switch(type)
14105 {
14106 case IPT_BUTTON1: return BTN1 "Fire";
14107 } /* end of switch */
14108
14109 return joy4way_labels(type);
14110 }
14111
14112 const struct ControlInfo invadpt2_ctrl =
14113 {
14114 false, /* 45_degree_rotation for joystick(s) */
14115 true, /* alternating_controls */
14116 true, /* mirrored_controls */
14117 "The Taito version of this game (invadpt2) used a directional joystick. The Midway version (invaddlx) replaced the joystick with directional buttons. The buttons were labelled 'Laser Base Control' with arrows.", /* control_details */
14118 &invadpt2_get_ctrl_name
14119 };
14120
invadpt2_get_ctrl_name(int type)14121 const char *invadpt2_get_ctrl_name(int type)
14122 {
14123 switch(type)
14124 {
14125 case IPT_BUTTON1: return BTN1 "Fire Laser";
14126 } /* end of switch */
14127
14128 return joy2way_labels(type);
14129 }
14130
14131 const struct ControlInfo spacelnc_ctrl =
14132 {
14133 false, /* 45_degree_rotation for joystick(s) */
14134 true, /* alternating_controls */
14135 true, /* mirrored_controls */
14136 "", /* control_details */
14137 &spacelnc_get_ctrl_name
14138 };
14139
spacelnc_get_ctrl_name(int type)14140 const char *spacelnc_get_ctrl_name(int type)
14141 {
14142 switch(type)
14143 {
14144 case IPT_BUTTON1: return BTN1 "Launch";
14145 } /* end of switch */
14146
14147 return joy2way_labels(type);
14148 }
14149
14150 const struct ControlInfo spaceod_ctrl =
14151 {
14152 false, /* 45_degree_rotation for joystick(s) */
14153 true, /* alternating_controls */
14154 true, /* mirrored_controls */
14155 "The cpo has very subtle icons integrated into the artwork. A death-ray like beam eminates from the 'laser' button while bombs appear to be dropping out of the 'bomb' button.", /* control_details */
14156 &spaceod_get_ctrl_name
14157 };
14158
spaceod_get_ctrl_name(int type)14159 const char *spaceod_get_ctrl_name(int type)
14160 {
14161 switch(type)
14162 {
14163 case IPT_BUTTON1: return BTN1 "Laser";
14164 case IPT_BUTTON2: return BTN2 "Bomb";
14165 } /* end of switch */
14166
14167 return joy4way_labels(type);
14168 }
14169
14170 const struct ControlInfo panic_ctrl =
14171 {
14172 false, /* 45_degree_rotation for joystick(s) */
14173 true, /* alternating_controls */
14174 true, /* mirrored_controls */
14175 "This game has a cocktail mode, so player 2 inputs are defined in mame.", /* control_details */
14176 &panic_get_ctrl_name
14177 };
14178
panic_get_ctrl_name(int type)14179 const char *panic_get_ctrl_name(int type)
14180 {
14181 switch(type)
14182 {
14183 case IPT_BUTTON1: return BTN1 "Holing";
14184 case IPT_BUTTON2: return BTN2 "Closing";
14185 } /* end of switch */
14186
14187 return joy4way_labels(type);
14188 }
14189
14190 const struct ControlInfo spacezap_ctrl =
14191 {
14192 false, /* 45_degree_rotation for joystick(s) */
14193 true, /* alternating_controls */
14194 true, /* mirrored_controls */
14195 "A very simple game. the directional buttons point the laser up, down, left or right. Shoot all the aliens before they destroy the base.", /* control_details */
14196 &spacezap_get_ctrl_name
14197 };
14198
spacezap_get_ctrl_name(int type)14199 const char *spacezap_get_ctrl_name(int type)
14200 {
14201 switch(type)
14202 {
14203 case IPT_BUTTON1: return BTN1 "Fire";
14204 } /* end of switch */
14205
14206 return joy4way_labels(type);
14207 }
14208
14209 const struct ControlInfo speakres_ctrl =
14210 {
14211 false, /* 45_degree_rotation for joystick(s) */
14212 true, /* alternating_controls */
14213 true, /* mirrored_controls */
14214 "The cpo generically labels the joystick 'control.'", /* control_details */
14215 &speakres_get_ctrl_name
14216 };
14217
speakres_get_ctrl_name(int type)14218 const char *speakres_get_ctrl_name(int type)
14219 {
14220 switch(type)
14221 {
14222 case IPT_BUTTON1: return BTN1 "Fire";
14223 } /* end of switch */
14224
14225 return joy2way_labels(type);
14226 }
14227
14228 const struct ControlInfo spectar_ctrl =
14229 {
14230 false, /* 45_degree_rotation for joystick(s) */
14231 true, /* alternating_controls */
14232 true, /* mirrored_controls */
14233 "The fire decal also has an icon of a rocket.", /* control_details */
14234 &spectar_get_ctrl_name
14235 };
14236
spectar_get_ctrl_name(int type)14237 const char *spectar_get_ctrl_name(int type)
14238 {
14239 switch(type)
14240 {
14241 case IPT_BUTTON1: return BTN1 "Fire";
14242 } /* end of switch */
14243
14244 return joy4way_labels(type);
14245 }
14246
14247 const struct ControlInfo spdcoin_ctrl =
14248 {
14249 false, /* 45_degree_rotation for joystick(s) */
14250 true, /* alternating_controls */
14251 true, /* mirrored_controls */
14252 "", /* control_details */
14253 &spdcoin_get_ctrl_name
14254 };
14255
spdcoin_get_ctrl_name(int type)14256 const char *spdcoin_get_ctrl_name(int type)
14257 {
14258 switch(type)
14259 {
14260 } /* end of switch */
14261
14262 return joy2way_labels(type);
14263 }
14264
14265 const struct ControlInfo speedfrk_ctrl =
14266 {
14267 false, /* 45_degree_rotation for joystick(s) */
14268 false, /* alternating_controls */
14269 false, /* mirrored_controls */
14270 "Speed is controlled by the shifter. Pressing the pedal makes the car move forward at the selected speed. Stay on the road and avoid all cars to avoid crashing.", /* control_details */
14271 &speedfrk_get_ctrl_name
14272 };
14273
speedfrk_get_ctrl_name(int type)14274 const char *speedfrk_get_ctrl_name(int type)
14275 {
14276 switch(type)
14277 {
14278 case IPT_DIAL: return "Left";
14279 case (IPT_DIAL + IPT_EXTENSION): return "Right";
14280 } /* end of switch */
14281
14282 return "";
14283 }
14284
14285 const struct ControlInfo speedrcr_ctrl =
14286 {
14287 false, /* 45_degree_rotation for joystick(s) */
14288 false, /* alternating_controls */
14289 true, /* mirrored_controls */
14290 "The game has three volcano buttons mounted on the control panel, these buttons are used to fire the three weapons on your car. They are unlabeled but are referred to as A, B, and C in the game's test menu. The start button doubles as a jump button. In mame an extra button and an extra pedal are defined but this doesn't reflect the original hardware.", /* control_details */
14291 &speedrcr_get_ctrl_name
14292 };
14293
speedrcr_get_ctrl_name(int type)14294 const char *speedrcr_get_ctrl_name(int type)
14295 {
14296 switch(type)
14297 {
14298 case IPT_BUTTON1: return BTN1 "A";
14299 case IPT_BUTTON2: return BTN2 "B";
14300 case IPT_BUTTON3: return BTN3 "C";
14301 case IPT_PADDLE: return "Left";
14302 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
14303 case IPT_PEDAL: return "Accelerate";
14304 } /* end of switch */
14305
14306 return "";
14307 }
14308
14309 const struct ControlInfo spidman_ctrl =
14310 {
14311 false, /* 45_degree_rotation for joystick(s) */
14312 false, /* alternating_controls */
14313 true, /* mirrored_controls */
14314 "", /* control_details */
14315 &spidman_get_ctrl_name
14316 };
14317
spidman_get_ctrl_name(int type)14318 const char *spidman_get_ctrl_name(int type)
14319 {
14320 switch(type)
14321 {
14322 case IPT_BUTTON1: return BTN1 "Attack";
14323 case IPT_BUTTON2: return BTN2 "Jump";
14324 } /* end of switch */
14325
14326 return joy4way_labels(type);
14327 }
14328
14329 const struct ControlInfo spiders_ctrl =
14330 {
14331 false, /* 45_degree_rotation for joystick(s) */
14332 true, /* alternating_controls */
14333 true, /* mirrored_controls */
14334 "Teh original cpo simply depicts two arrows with the label 'Movement'.", /* control_details */
14335 &spiders_get_ctrl_name
14336 };
14337
spiders_get_ctrl_name(int type)14338 const char *spiders_get_ctrl_name(int type)
14339 {
14340 switch(type)
14341 {
14342 case IPT_BUTTON1: return BTN1 "Fire";
14343 case IPT_JOYSTICK_LEFT: return "Move Left";
14344 case IPT_JOYSTICK_RIGHT: return "Move Right";
14345 } /* end of switch */
14346
14347 return "";
14348 }
14349
14350 const struct ControlInfo sprint1_ctrl =
14351 {
14352 false, /* 45_degree_rotation for joystick(s) */
14353 false, /* alternating_controls */
14354 false, /* mirrored_controls */
14355 "Note that the gear buttons are remapped from the button defaults. The number labels denote shift position.", /* control_details */
14356 &sprint1_get_ctrl_name
14357 };
14358
sprint1_get_ctrl_name(int type)14359 const char *sprint1_get_ctrl_name(int type)
14360 {
14361 switch(type)
14362 {
14363 case IPT_BUTTON1: return BTN1 "Accelerate";
14364 case IPT_BUTTON2: return BTN2 "1";
14365 case IPT_BUTTON3: return BTN3 "2";
14366 case IPT_BUTTON4: return BTN4 "3";
14367 case IPT_BUTTON5: return BTN5 "4";
14368 case IPT_DIAL: return "Left";
14369 case (IPT_DIAL + IPT_EXTENSION): return "Right";
14370 } /* end of switch */
14371
14372 return "";
14373 }
14374
14375 const struct ControlInfo starcas_ctrl =
14376 {
14377 false, /* 45_degree_rotation for joystick(s) */
14378 true, /* alternating_controls */
14379 true, /* mirrored_controls */
14380 "Mame simulates this game using a 2-way joystick, but the actual game used Directional buttons labeled Left and Right. There was also a Rock-Ola version of the Control Panel (black background) which used pictograms for the button labels. Controls were the same, however.", /* control_details */
14381 &starcas_get_ctrl_name
14382 };
14383
starcas_get_ctrl_name(int type)14384 const char *starcas_get_ctrl_name(int type)
14385 {
14386 switch(type)
14387 {
14388 case IPT_BUTTON1: return BTN1 "Fire";
14389 case IPT_BUTTON2: return BTN2 "Thrust";
14390 } /* end of switch */
14391
14392 return joy2way_labels(type);
14393 }
14394
14395 const struct ControlInfo starforc_ctrl =
14396 {
14397 false, /* 45_degree_rotation for joystick(s) */
14398 true, /* alternating_controls */
14399 true, /* mirrored_controls */
14400 "", /* control_details */
14401 &starforc_get_ctrl_name
14402 };
14403
starforc_get_ctrl_name(int type)14404 const char *starforc_get_ctrl_name(int type)
14405 {
14406 switch(type)
14407 {
14408 case IPT_BUTTON1: return BTN1 "Fire";
14409 } /* end of switch */
14410
14411 return joy4way_labels(type);
14412 }
14413
14414 const struct ControlInfo stargrds_ctrl =
14415 {
14416 false, /* 45_degree_rotation for joystick(s) */
14417 false, /* alternating_controls */
14418 true, /* mirrored_controls */
14419 "The player start buttons double as the 'Weapon' button and the cpo labels it so.", /* control_details */
14420 &stargrds_get_ctrl_name
14421 };
14422
stargrds_get_ctrl_name(int type)14423 const char *stargrds_get_ctrl_name(int type)
14424 {
14425 switch(type)
14426 {
14427 case IPT_JOYSTICKLEFT_UP: return "Move Up";
14428 case IPT_JOYSTICKLEFT_DOWN: return "Move Down";
14429 case IPT_JOYSTICKLEFT_LEFT: return "Move Left";
14430 case IPT_JOYSTICKLEFT_RIGHT: return "Move Right";
14431 case IPT_JOYSTICKRIGHT_UP: return "Shoot Up";
14432 case IPT_JOYSTICKRIGHT_DOWN: return "Shoot Down";
14433 case IPT_JOYSTICKRIGHT_LEFT: return "Shoot Left";
14434 case IPT_JOYSTICKRIGHT_RIGHT: return "Shoot Right";
14435 } /* end of switch */
14436
14437 return "";
14438 }
14439
14440 const struct ControlInfo starhawk_ctrl =
14441 {
14442 false, /* 45_degree_rotation for joystick(s) */
14443 false, /* alternating_controls */
14444 true, /* mirrored_controls */
14445 "Each player has an 8-way Joystick with a Fire Button on top. There are three buttons on the control panel that control the speed of the targeting crosshairs. Shoot as many ships as possible.", /* control_details */
14446 &starhawk_get_ctrl_name
14447 };
14448
starhawk_get_ctrl_name(int type)14449 const char *starhawk_get_ctrl_name(int type)
14450 {
14451 switch(type)
14452 {
14453 case IPT_BUTTON1: return BTN1 "Fire";
14454 case IPT_BUTTON2: return BTN2 "Slow";
14455 case IPT_BUTTON3: return BTN3 "Medium";
14456 case IPT_BUTTON4: return BTN4 "Fast";
14457 } /* end of switch */
14458
14459 return joy4way_labels(type);
14460 }
14461
14462 const struct ControlInfo starjack_ctrl =
14463 {
14464 false, /* 45_degree_rotation for joystick(s) */
14465 true, /* alternating_controls */
14466 true, /* mirrored_controls */
14467 "On the original control panel, the start buttons were double-wired to the bomb buttons.", /* control_details */
14468 &starjack_get_ctrl_name
14469 };
14470
starjack_get_ctrl_name(int type)14471 const char *starjack_get_ctrl_name(int type)
14472 {
14473 switch(type)
14474 {
14475 case IPT_BUTTON1: return BTN1 "Fire";
14476 case IPT_BUTTON2: return BTN2 "Bomb";
14477 } /* end of switch */
14478
14479 return joy4way_labels(type);
14480 }
14481
14482 const struct ControlInfo startrek_ctrl =
14483 {
14484 false, /* 45_degree_rotation for joystick(s) */
14485 true, /* alternating_controls */
14486 true, /* mirrored_controls */
14487 "", /* control_details */
14488 &startrek_get_ctrl_name
14489 };
14490
startrek_get_ctrl_name(int type)14491 const char *startrek_get_ctrl_name(int type)
14492 {
14493 switch(type)
14494 {
14495 case IPT_BUTTON1: return BTN1 "Fire";
14496 case IPT_BUTTON2: return BTN2 "Thrust";
14497 case IPT_BUTTON3: return BTN3 "Photons";
14498 case IPT_BUTTON4: return BTN4 "Warp";
14499 case IPT_DIAL: return "Rotate Left";
14500 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
14501 } /* end of switch */
14502
14503 return "";
14504 }
14505
14506 const struct ControlInfo starwars_ctrl =
14507 {
14508 false, /* 45_degree_rotation for joystick(s) */
14509 false, /* alternating_controls */
14510 true, /* mirrored_controls */
14511 "Buttons correspond to the Trigger and Thumb buttons on the yoke. Aircraft style controls, moving control down moves aiming cursor up.", /* control_details */
14512 &starwars_get_ctrl_name
14513 };
14514
starwars_get_ctrl_name(int type)14515 const char *starwars_get_ctrl_name(int type)
14516 {
14517 switch(type)
14518 {
14519 case IPT_BUTTON1: return BTN1 "Fire";
14520 case IPT_BUTTON2: return BTN2 "Fire";
14521 case IPT_BUTTON3: return BTN3 "Fire";
14522 case IPT_BUTTON4: return BTN4 "Fire";
14523 case IPT_AD_STICK_X: return "Left";
14524 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
14525 case IPT_AD_STICK_Y: return "Up";
14526 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
14527 } /* end of switch */
14528
14529 return "";
14530 }
14531
14532 const struct ControlInfo stargate_ctrl =
14533 {
14534 false, /* 45_degree_rotation for joystick(s) */
14535 true, /* alternating_controls */
14536 true, /* mirrored_controls */
14537 "Joystick is on left side of control panel with reverse button the the right of it so it can be hit with thumb. Fire and thrust are on right side of control panel with smart bomb, inviso, and hyperspace to the left in a 45 degree angle.", /* control_details */
14538 &stargate_get_ctrl_name
14539 };
14540
stargate_get_ctrl_name(int type)14541 const char *stargate_get_ctrl_name(int type)
14542 {
14543 switch(type)
14544 {
14545 case IPT_BUTTON1: return BTN1 "FIRE";
14546 case IPT_BUTTON2: return BTN2 "THRUST";
14547 case IPT_BUTTON3: return BTN3 "SMART BOMB";
14548 case IPT_BUTTON4: return BTN4 "REVERSE";
14549 case IPT_BUTTON5: return BTN5 "INVISO";
14550 case IPT_BUTTON6: return BTN6 "HYPERSPACE";
14551 case IPT_JOYSTICK_UP: return "Up";
14552 case IPT_JOYSTICK_DOWN: return "Down";
14553 } /* end of switch */
14554
14555 return "";
14556 }
14557
14558 const struct ControlInfo sgunner_ctrl =
14559 {
14560 false, /* 45_degree_rotation for joystick(s) */
14561 false, /* alternating_controls */
14562 true, /* mirrored_controls */
14563 "", /* control_details */
14564 &sgunner_get_ctrl_name
14565 };
14566
sgunner_get_ctrl_name(int type)14567 const char *sgunner_get_ctrl_name(int type)
14568 {
14569 switch(type)
14570 {
14571 case IPT_BUTTON1: return BTN1 "Fire";
14572 case IPT_BUTTON2: return BTN2 "Missile";
14573 case IPT_LIGHTGUN_X: return "Aim Left";
14574 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
14575 case IPT_LIGHTGUN_Y: return "Aim Up";
14576 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
14577 } /* end of switch */
14578
14579 return "";
14580 }
14581
14582 const struct ControlInfo sgunner2_ctrl =
14583 {
14584 false, /* 45_degree_rotation for joystick(s) */
14585 false, /* alternating_controls */
14586 true, /* mirrored_controls */
14587 "", /* control_details */
14588 &sgunner2_get_ctrl_name
14589 };
14590
sgunner2_get_ctrl_name(int type)14591 const char *sgunner2_get_ctrl_name(int type)
14592 {
14593 switch(type)
14594 {
14595 case IPT_BUTTON1: return BTN1 "Fire";
14596 case IPT_BUTTON2: return BTN2 "Missile";
14597 case IPT_LIGHTGUN_X: return "Aim Left";
14598 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
14599 case IPT_LIGHTGUN_Y: return "Aim Up";
14600 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
14601 } /* end of switch */
14602
14603 return "";
14604 }
14605
14606 const struct ControlInfo stocker_ctrl =
14607 {
14608 false, /* 45_degree_rotation for joystick(s) */
14609 false, /* alternating_controls */
14610 false, /* mirrored_controls */
14611 "", /* control_details */
14612 &stocker_get_ctrl_name
14613 };
14614
stocker_get_ctrl_name(int type)14615 const char *stocker_get_ctrl_name(int type)
14616 {
14617 switch(type)
14618 {
14619 case IPT_BUTTON1: return BTN1 "High / Low";
14620 case IPT_DIAL: return "Left";
14621 case (IPT_DIAL + IPT_EXTENSION): return "Right";
14622 } /* end of switch */
14623
14624 return "";
14625 }
14626
14627 const struct ControlInfo stratab_ctrl =
14628 {
14629 false, /* 45_degree_rotation for joystick(s) */
14630 true, /* alternating_controls */
14631 true, /* mirrored_controls */
14632 "This game only has one start button. You press it multiple times for up to 4 players. Mame has two player inputs for cocktail modes, so a person must assume that in cocktail mode teams take turns with the two control panels.", /* control_details */
14633 &stratab_get_ctrl_name
14634 };
14635
stratab_get_ctrl_name(int type)14636 const char *stratab_get_ctrl_name(int type)
14637 {
14638 switch(type)
14639 {
14640 case IPT_BUTTON1: return BTN1 "Hook Left";
14641 case IPT_BUTTON2: return BTN2 "Hook Right";
14642 case IPT_TRACKBALL_Y: return "Up";
14643 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
14644 case IPT_TRACKBALL_X: return "Left";
14645 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
14646 } /* end of switch */
14647
14648 return "";
14649 }
14650
14651 const struct ControlInfo stratgyx_ctrl =
14652 {
14653 false, /* 45_degree_rotation for joystick(s) */
14654 true, /* alternating_controls */
14655 true, /* mirrored_controls */
14656 "This game used a very stylish, metal, top-fire joystick.", /* control_details */
14657 &stratgyx_get_ctrl_name
14658 };
14659
stratgyx_get_ctrl_name(int type)14660 const char *stratgyx_get_ctrl_name(int type)
14661 {
14662 switch(type)
14663 {
14664 case IPT_BUTTON1: return BTN1 "Tank Fire";
14665 case IPT_BUTTON2: return BTN2 "Turrent Rotate Left";
14666 case IPT_BUTTON3: return BTN3 "Turrent Rotate Right";
14667 } /* end of switch */
14668
14669 return joy4way_labels(type);
14670 }
14671
14672 const struct ControlInfo sf_ctrl =
14673 {
14674 false, /* 45_degree_rotation for joystick(s) */
14675 false, /* alternating_controls */
14676 true, /* mirrored_controls */
14677 "The original, dedicated, Street Fighter cabinet only had two, giant, semi-analog buttons. How hard the button was pressed determined which of the three attack strengths registered. The conversion kit and second revision of this game used the classic sf2 layout well all know and love.", /* control_details */
14678 &sf_get_ctrl_name
14679 };
14680
sf_get_ctrl_name(int type)14681 const char *sf_get_ctrl_name(int type)
14682 {
14683 switch(type)
14684 {
14685 case IPT_BUTTON1: return BTN1 "Light Punch";
14686 case IPT_BUTTON2: return BTN2 "Middle Punch";
14687 case IPT_BUTTON3: return BTN3 "Heavy Punch";
14688 case IPT_BUTTON4: return BTN4 "Light Kick";
14689 case IPT_BUTTON5: return BTN5 "Middle Kick";
14690 case IPT_BUTTON6: return BTN6 "Heavy Kick";
14691 case IPT_JOYSTICK_UP: return "Jump";
14692 case IPT_JOYSTICK_DOWN: return "Crouch";
14693 case IPT_JOYSTICK_LEFT: return "Left";
14694 case IPT_JOYSTICK_RIGHT: return "Right";
14695 } /* end of switch */
14696
14697 return "";
14698 }
14699
14700 const struct ControlInfo sfa2_ctrl =
14701 {
14702 false, /* 45_degree_rotation for joystick(s) */
14703 false, /* alternating_controls */
14704 true, /* mirrored_controls */
14705 "", /* control_details */
14706 &sfa2_get_ctrl_name
14707 };
14708
sfa2_get_ctrl_name(int type)14709 const char *sfa2_get_ctrl_name(int type)
14710 {
14711 switch(type)
14712 {
14713 case IPT_BUTTON1: return BTN1 "Jab Punch";
14714 case IPT_BUTTON2: return BTN2 "Strong Punch";
14715 case IPT_BUTTON3: return BTN3 "Fierce Punch";
14716 case IPT_BUTTON4: return BTN4 "Short Kick";
14717 case IPT_BUTTON5: return BTN5 "Strong Kick";
14718 case IPT_BUTTON6: return BTN6 "Roundhouse Kick";
14719 case IPT_JOYSTICK_UP: return "Jump";
14720 case IPT_JOYSTICK_DOWN: return "Crouch";
14721 case IPT_JOYSTICK_LEFT: return "Left";
14722 case IPT_JOYSTICK_RIGHT: return "Right";
14723 } /* end of switch */
14724
14725 return "";
14726 }
14727
14728 const struct ControlInfo sfa3_ctrl =
14729 {
14730 false, /* 45_degree_rotation for joystick(s) */
14731 false, /* alternating_controls */
14732 true, /* mirrored_controls */
14733 "", /* control_details */
14734 &sfa3_get_ctrl_name
14735 };
14736
sfa3_get_ctrl_name(int type)14737 const char *sfa3_get_ctrl_name(int type)
14738 {
14739 switch(type)
14740 {
14741 case IPT_BUTTON1: return BTN1 "Jab Punch";
14742 case IPT_BUTTON2: return BTN2 "Strong Punch";
14743 case IPT_BUTTON3: return BTN3 "Fierce Punch";
14744 case IPT_BUTTON4: return BTN4 "Short Kick";
14745 case IPT_BUTTON5: return BTN5 "Strong Kick";
14746 case IPT_BUTTON6: return BTN6 "Roundhouse Kick";
14747 case IPT_JOYSTICK_UP: return "Jump";
14748 case IPT_JOYSTICK_DOWN: return "Crouch";
14749 case IPT_JOYSTICK_LEFT: return "Left";
14750 case IPT_JOYSTICK_RIGHT: return "Right";
14751 } /* end of switch */
14752
14753 return "";
14754 }
14755
14756 const struct ControlInfo sfa_ctrl =
14757 {
14758 false, /* 45_degree_rotation for joystick(s) */
14759 false, /* alternating_controls */
14760 true, /* mirrored_controls */
14761 "", /* control_details */
14762 &sfa_get_ctrl_name
14763 };
14764
sfa_get_ctrl_name(int type)14765 const char *sfa_get_ctrl_name(int type)
14766 {
14767 switch(type)
14768 {
14769 case IPT_BUTTON1: return BTN1 "Jab Punch";
14770 case IPT_BUTTON2: return BTN2 "Strong Punch";
14771 case IPT_BUTTON3: return BTN3 "Fierce Punch";
14772 case IPT_BUTTON4: return BTN4 "Short Kick";
14773 case IPT_BUTTON5: return BTN5 "Strong Kick";
14774 case IPT_BUTTON6: return BTN6 "Roundhouse Kick";
14775 case IPT_JOYSTICK_UP: return "Jump";
14776 case IPT_JOYSTICK_DOWN: return "Crouch";
14777 case IPT_JOYSTICK_LEFT: return "Left";
14778 case IPT_JOYSTICK_RIGHT: return "Right";
14779 } /* end of switch */
14780
14781 return "";
14782 }
14783
14784
14785 const struct ControlInfo sf2_ctrl =
14786 {
14787 false, /* 45_degree_rotation for joystick(s) */
14788 false, /* alternating_controls */
14789 true, /* mirrored_controls */
14790 "", /* control_details */
14791 &sf2_get_ctrl_name
14792 };
14793
14794
sf2_get_ctrl_name(int type)14795 const char *sf2_get_ctrl_name(int type)
14796 {
14797 switch(type)
14798 {
14799 case IPT_BUTTON1: return BTN1 "Jab Punch";
14800 case IPT_BUTTON2: return BTN2 "Strong Punch";
14801 case IPT_BUTTON3: return BTN3 "Fierce Punch";
14802 case IPT_BUTTON4: return BTN4 "Short Kick";
14803 case IPT_BUTTON5: return BTN5 "Forward Kick";
14804 case IPT_BUTTON6: return BTN6 "Roundhouse Kick";
14805 case IPT_JOYSTICK_UP: return "Jump";
14806 case IPT_JOYSTICK_DOWN: return "Crouch";
14807 case IPT_JOYSTICK_LEFT: return "Left";
14808 case IPT_JOYSTICK_RIGHT: return "Right";
14809 } /* end of switch */
14810
14811 return "";
14812 }
14813
14814 const struct ControlInfo sfiii2_ctrl =
14815 {
14816 false, /* 45_degree_rotation for joystick(s) */
14817 false, /* alternating_controls */
14818 true, /* mirrored_controls */
14819 "", /* control_details */
14820 &sfiii2_get_ctrl_name
14821 };
14822
sfiii2_get_ctrl_name(int type)14823 const char *sfiii2_get_ctrl_name(int type)
14824 {
14825 switch(type)
14826 {
14827 case IPT_BUTTON1: return BTN1 "Jab Punch";
14828 case IPT_BUTTON2: return BTN2 "Strong Punch";
14829 case IPT_BUTTON3: return BTN3 "Fierce Punch";
14830 case IPT_BUTTON4: return BTN4 "Short Kick";
14831 case IPT_BUTTON5: return BTN5 "Strong Kick";
14832 case IPT_BUTTON6: return BTN6 "Roundhouse Kick";
14833 case IPT_JOYSTICK_UP: return "Jump";
14834 case IPT_JOYSTICK_DOWN: return "Crouch";
14835 case IPT_JOYSTICK_LEFT: return "Left";
14836 case IPT_JOYSTICK_RIGHT: return "Right";
14837 } /* end of switch */
14838
14839 return "";
14840 }
14841
14842 const struct ControlInfo sfiii3_ctrl =
14843 {
14844 false, /* 45_degree_rotation for joystick(s) */
14845 false, /* alternating_controls */
14846 true, /* mirrored_controls */
14847 "", /* control_details */
14848 &sfiii3_get_ctrl_name
14849 };
14850
sfiii3_get_ctrl_name(int type)14851 const char *sfiii3_get_ctrl_name(int type)
14852 {
14853 switch(type)
14854 {
14855 case IPT_BUTTON1: return BTN1 "Jab Punch";
14856 case IPT_BUTTON2: return BTN2 "Strong Punch";
14857 case IPT_BUTTON3: return BTN3 "Fierce Punch";
14858 case IPT_BUTTON4: return BTN4 "Short Kick";
14859 case IPT_BUTTON5: return BTN5 "Strong Kick";
14860 case IPT_BUTTON6: return BTN6 "Roundhouse Kick";
14861 case IPT_JOYSTICK_UP: return "Jump";
14862 case IPT_JOYSTICK_DOWN: return "Crouch";
14863 case IPT_JOYSTICK_LEFT: return "Left";
14864 case IPT_JOYSTICK_RIGHT: return "Right";
14865 } /* end of switch */
14866
14867 return "";
14868 }
14869
14870 const struct ControlInfo sfiii_ctrl =
14871 {
14872 false, /* 45_degree_rotation for joystick(s) */
14873 false, /* alternating_controls */
14874 true, /* mirrored_controls */
14875 "", /* control_details */
14876 &sfiii_get_ctrl_name
14877 };
14878
sfiii_get_ctrl_name(int type)14879 const char *sfiii_get_ctrl_name(int type)
14880 {
14881 switch(type)
14882 {
14883 case IPT_BUTTON1: return BTN1 "Jab Punch";
14884 case IPT_BUTTON2: return BTN2 "Strong Punch";
14885 case IPT_BUTTON3: return BTN3 "Fierce Punch";
14886 case IPT_BUTTON4: return BTN4 "Short Kick";
14887 case IPT_BUTTON5: return BTN5 "Strong Kick";
14888 case IPT_BUTTON6: return BTN6 "Roundhouse Kick";
14889 case IPT_JOYSTICK_UP: return "Jump";
14890 case IPT_JOYSTICK_DOWN: return "Crouch";
14891 case IPT_JOYSTICK_LEFT: return "Left";
14892 case IPT_JOYSTICK_RIGHT: return "Right";
14893 } /* end of switch */
14894
14895 return "";
14896 }
14897
14898 const struct ControlInfo sftm_ctrl =
14899 {
14900 false, /* 45_degree_rotation for joystick(s) */
14901 false, /* alternating_controls */
14902 true, /* mirrored_controls */
14903 "", /* control_details */
14904 &sftm_get_ctrl_name
14905 };
14906
sftm_get_ctrl_name(int type)14907 const char *sftm_get_ctrl_name(int type)
14908 {
14909 switch(type)
14910 {
14911 case IPT_BUTTON1: return BTN1 "Light Punch";
14912 case IPT_BUTTON2: return BTN2 "Middle Punch";
14913 case IPT_BUTTON3: return BTN3 "Heavy Punch";
14914 case IPT_BUTTON4: return BTN4 "Light Kick";
14915 case IPT_BUTTON5: return BTN5 "Middle Kick";
14916 case IPT_BUTTON6: return BTN6 "Heavy Kick";
14917 } /* end of switch */
14918
14919 return joy4way_labels(type);
14920 }
14921
14922 const struct ControlInfo strider_ctrl =
14923 {
14924 false, /* 45_degree_rotation for joystick(s) */
14925 false, /* alternating_controls */
14926 true, /* mirrored_controls */
14927 "", /* control_details */
14928 &strider_get_ctrl_name
14929 };
14930
strider_get_ctrl_name(int type)14931 const char *strider_get_ctrl_name(int type)
14932 {
14933 switch(type)
14934 {
14935 case IPT_BUTTON1: return BTN1 "Sword";
14936 case IPT_BUTTON2: return BTN2 "Jump";
14937 } /* end of switch */
14938
14939 return joy4way_labels(type);
14940 }
14941
14942 const struct ControlInfo sbowling_ctrl =
14943 {
14944 false, /* 45_degree_rotation for joystick(s) */
14945 true, /* alternating_controls */
14946 true, /* mirrored_controls */
14947 "", /* control_details */
14948 &sbowling_get_ctrl_name
14949 };
14950
sbowling_get_ctrl_name(int type)14951 const char *sbowling_get_ctrl_name(int type)
14952 {
14953 switch(type)
14954 {
14955 case IPT_TRACKBALL_X: return "Left";
14956 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
14957 case IPT_TRACKBALL_Y: return "Up";
14958 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
14959 } /* end of switch */
14960
14961 return "";
14962 }
14963
14964 const struct ControlInfo strkforc_ctrl =
14965 {
14966 false, /* 45_degree_rotation for joystick(s) */
14967 false, /* alternating_controls */
14968 true, /* mirrored_controls */
14969 "The 'weapon' refers to your secondary weapon. Also note that the start button transforms your ship and on the original panel, the start button was labeled 'Start/Transform'", /* control_details */
14970 &strkforc_get_ctrl_name
14971 };
14972
strkforc_get_ctrl_name(int type)14973 const char *strkforc_get_ctrl_name(int type)
14974 {
14975 switch(type)
14976 {
14977 case IPT_BUTTON1: return BTN1 "Weapon Select";
14978 case IPT_BUTTON2: return BTN2 "Fire";
14979 case IPT_BUTTON3: return BTN3 "Weapon";
14980 } /* end of switch */
14981
14982 return joy4way_labels(type);
14983 }
14984
14985 const struct ControlInfo s1945_ctrl =
14986 {
14987 false, /* 45_degree_rotation for joystick(s) */
14988 false, /* alternating_controls */
14989 true, /* mirrored_controls */
14990 "", /* control_details */
14991 &s1945_get_ctrl_name
14992 };
14993
s1945_get_ctrl_name(int type)14994 const char *s1945_get_ctrl_name(int type)
14995 {
14996 switch(type)
14997 {
14998 case IPT_BUTTON1: return BTN1 "Shoot";
14999 case IPT_BUTTON2: return BTN2 "Bomb";
15000 } /* end of switch */
15001
15002 return joy4way_labels(type);
15003 }
15004
15005 const struct ControlInfo s1945iii_ctrl =
15006 {
15007 false, /* 45_degree_rotation for joystick(s) */
15008 false, /* alternating_controls */
15009 true, /* mirrored_controls */
15010 "", /* control_details */
15011 &s1945iii_get_ctrl_name
15012 };
15013
s1945iii_get_ctrl_name(int type)15014 const char *s1945iii_get_ctrl_name(int type)
15015 {
15016 switch(type)
15017 {
15018 case IPT_BUTTON1: return BTN1 "Fire";
15019 case IPT_BUTTON2: return BTN2 "Loop";
15020 case IPT_BUTTON3: return BTN3 "Special";
15021 } /* end of switch */
15022
15023 return joy4way_labels(type);
15024 }
15025
15026 const struct ControlInfo subs_ctrl =
15027 {
15028 false, /* 45_degree_rotation for joystick(s) */
15029 false, /* alternating_controls */
15030 true, /* mirrored_controls */
15031 "This game is essentially unplayable in mame because in the original game, the two monitors were on opposite ends of the cab. Player 1 couldn't see player 2 and vice-versa. In mame the two monitors are combiend and thus it runs the effect.", /* control_details */
15032 &subs_get_ctrl_name
15033 };
15034
subs_get_ctrl_name(int type)15035 const char *subs_get_ctrl_name(int type)
15036 {
15037 switch(type)
15038 {
15039 case IPT_BUTTON1: return BTN1 "Fire Torpedo";
15040 case IPT_DIAL: return "Left";
15041 case (IPT_DIAL + IPT_EXTENSION): return "Right";
15042 } /* end of switch */
15043
15044 return "";
15045 }
15046
15047 const struct ControlInfo ssriders_ctrl =
15048 {
15049 false, /* 45_degree_rotation for joystick(s) */
15050 false, /* alternating_controls */
15051 true, /* mirrored_controls */
15052 "", /* control_details */
15053 &ssriders_get_ctrl_name
15054 };
15055
ssriders_get_ctrl_name(int type)15056 const char *ssriders_get_ctrl_name(int type)
15057 {
15058 switch(type)
15059 {
15060 case IPT_BUTTON1: return BTN1 "Shoot";
15061 case IPT_BUTTON2: return BTN2 "Jump";
15062 } /* end of switch */
15063
15064 return joy4way_labels(type);
15065 }
15066
15067 const struct ControlInfo sbagman_ctrl =
15068 {
15069 false, /* 45_degree_rotation for joystick(s) */
15070 true, /* alternating_controls */
15071 true, /* mirrored_controls */
15072 "The action button picks things up and drops them.", /* control_details */
15073 &sbagman_get_ctrl_name
15074 };
15075
sbagman_get_ctrl_name(int type)15076 const char *sbagman_get_ctrl_name(int type)
15077 {
15078 switch(type)
15079 {
15080 case IPT_BUTTON1: return BTN1 "Action";
15081 } /* end of switch */
15082
15083 return joy4way_labels(type);
15084 }
15085
15086 const struct ControlInfo sbrkout_ctrl =
15087 {
15088 false, /* 45_degree_rotation for joystick(s) */
15089 true, /* alternating_controls */
15090 true, /* mirrored_controls */
15091 "The original game used a 3-position rotary switch to select between 3 different variations: Progressive, Double, and Cavity.", /* control_details */
15092 &sbrkout_get_ctrl_name
15093 };
15094
sbrkout_get_ctrl_name(int type)15095 const char *sbrkout_get_ctrl_name(int type)
15096 {
15097 switch(type)
15098 {
15099 case IPT_BUTTON1: return BTN1 "Serve";
15100 case IPT_BUTTON2: return BTN2 "Progressive";
15101 case IPT_BUTTON3: return BTN3 "Double";
15102 case IPT_BUTTON4: return BTN4 "Cavity";
15103 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
15104 case IPT_PADDLE: return "Left";
15105 } /* end of switch */
15106
15107 return "";
15108 }
15109
15110 const struct ControlInfo scobra_ctrl =
15111 {
15112 false, /* 45_degree_rotation for joystick(s) */
15113 true, /* alternating_controls */
15114 true, /* mirrored_controls */
15115 "The original CP labelled both buttons as 'Discharge Buttons.' Sidewinder Missile is a bit of an overstatement for little tiny blips.", /* control_details */
15116 &scobra_get_ctrl_name
15117 };
15118
scobra_get_ctrl_name(int type)15119 const char *scobra_get_ctrl_name(int type)
15120 {
15121 switch(type)
15122 {
15123 case IPT_BUTTON1: return BTN1 "Sidewinder Missile";
15124 case IPT_BUTTON2: return BTN2 "Bombs";
15125 } /* end of switch */
15126
15127 return joy4way_labels(type);
15128 }
15129
15130 const struct ControlInfo scontra_ctrl =
15131 {
15132 false, /* 45_degree_rotation for joystick(s) */
15133 false, /* alternating_controls */
15134 true, /* mirrored_controls */
15135 "", /* control_details */
15136 &scontra_get_ctrl_name
15137 };
15138
scontra_get_ctrl_name(int type)15139 const char *scontra_get_ctrl_name(int type)
15140 {
15141 switch(type)
15142 {
15143 case IPT_BUTTON1: return BTN1 "Shoot";
15144 case IPT_BUTTON2: return BTN2 "Jump";
15145 } /* end of switch */
15146
15147 return joy4way_labels(type);
15148 }
15149
15150 const struct ControlInfo spdodgeb_ctrl =
15151 {
15152 false, /* 45_degree_rotation for joystick(s) */
15153 false, /* alternating_controls */
15154 true, /* mirrored_controls */
15155 "Press boht buttons to jump.", /* control_details */
15156 &spdodgeb_get_ctrl_name
15157 };
15158
spdodgeb_get_ctrl_name(int type)15159 const char *spdodgeb_get_ctrl_name(int type)
15160 {
15161 switch(type)
15162 {
15163 case IPT_BUTTON1: return BTN1 "Offensive Throw / Defensive Catch";
15164 case IPT_BUTTON2: return BTN2 "offensive Pass / Defensive Duck";
15165 } /* end of switch */
15166
15167 return joy4way_labels(type);
15168 }
15169
15170 const struct ControlInfo sgemf_ctrl =
15171 {
15172 false, /* 45_degree_rotation for joystick(s) */
15173 false, /* alternating_controls */
15174 true, /* mirrored_controls */
15175 "", /* control_details */
15176 &sgemf_get_ctrl_name
15177 };
15178
sgemf_get_ctrl_name(int type)15179 const char *sgemf_get_ctrl_name(int type)
15180 {
15181 switch(type)
15182 {
15183 case IPT_BUTTON1: return BTN1 "Punch";
15184 case IPT_BUTTON2: return BTN2 "Kick";
15185 case IPT_BUTTON3: return BTN3 "Special";
15186 } /* end of switch */
15187
15188 return joy4way_labels(type);
15189 }
15190
15191 const struct ControlInfo shimpact_ctrl =
15192 {
15193 false, /* 45_degree_rotation for joystick(s) */
15194 false, /* alternating_controls */
15195 true, /* mirrored_controls */
15196 "Obviously the action depends upon the position you are playing and what team you are on.", /* control_details */
15197 &shimpact_get_ctrl_name
15198 };
15199
shimpact_get_ctrl_name(int type)15200 const char *shimpact_get_ctrl_name(int type)
15201 {
15202 switch(type)
15203 {
15204 case IPT_BUTTON1: return BTN1 "Action";
15205 } /* end of switch */
15206
15207 return joy4way_labels(type);
15208 }
15209
15210 const struct ControlInfo smgp_ctrl =
15211 {
15212 false, /* 45_degree_rotation for joystick(s) */
15213 false, /* alternating_controls */
15214 false, /* mirrored_controls */
15215 "The shifter switches are formula 1 style, meaning that they are mounted behind the wheel for quick shifting.", /* control_details */
15216 &smgp_get_ctrl_name
15217 };
15218
smgp_get_ctrl_name(int type)15219 const char *smgp_get_ctrl_name(int type)
15220 {
15221 switch(type)
15222 {
15223 case IPT_BUTTON1: return BTN1 "Shift Down";
15224 case IPT_BUTTON2: return BTN2 "Shift Up";
15225 case IPT_PADDLE: return "Left";
15226 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
15227 case IPT_PEDAL: return "Accelerate";
15228 case IPT_PEDAL2: return "Brake";
15229 } /* end of switch */
15230
15231 return "";
15232 }
15233
15234 const struct ControlInfo superpac_ctrl =
15235 {
15236 false, /* 45_degree_rotation for joystick(s) */
15237 true, /* alternating_controls */
15238 true, /* mirrored_controls */
15239 "", /* control_details */
15240 &superpac_get_ctrl_name
15241 };
15242
superpac_get_ctrl_name(int type)15243 const char *superpac_get_ctrl_name(int type)
15244 {
15245 switch(type)
15246 {
15247 case IPT_BUTTON1: return BTN1 "Super Speed";
15248 } /* end of switch */
15249
15250 return joy4way_labels(type);
15251 }
15252
15253 const struct ControlInfo spbactn_ctrl =
15254 {
15255 false, /* 45_degree_rotation for joystick(s) */
15256 false, /* alternating_controls */
15257 false, /* mirrored_controls */
15258 "This game was actually a 'video pinball' table with real controls and everything. Note that this game is gonna be unplayable on a panel without pinball buttons.", /* control_details */
15259 &spbactn_get_ctrl_name
15260 };
15261
spbactn_get_ctrl_name(int type)15262 const char *spbactn_get_ctrl_name(int type)
15263 {
15264 switch(type)
15265 {
15266 case IPT_BUTTON1: return BTN1 "Left Flipper";
15267 case IPT_BUTTON2: return BTN2 "Right Flipper";
15268 case IPT_BUTTON3: return BTN3 "Plunger";
15269 } /* end of switch */
15270
15271 return "";
15272 }
15273
15274 const struct ControlInfo spnchout_ctrl =
15275 {
15276 false, /* 45_degree_rotation for joystick(s) */
15277 false, /* alternating_controls */
15278 false, /* mirrored_controls */
15279 "Each button has a dual function. They are labeled in the order of netrual postion and up respectively. The Hook button only deleivers the knock out blow when the screen flashes to use it. The Hook button is a huge plunger button, similar to what you would see on a gameshow.", /* control_details */
15280 &spnchout_get_ctrl_name
15281 };
15282
spnchout_get_ctrl_name(int type)15283 const char *spnchout_get_ctrl_name(int type)
15284 {
15285 switch(type)
15286 {
15287 case IPT_BUTTON1: return BTN1 "Left Blow to Head/Body";
15288 case IPT_BUTTON2: return BTN2 "Right Blow to Head/Body";
15289 case IPT_BUTTON3: return BTN3 "Uppercut / Hook / Knock Out Blow";
15290 case IPT_JOYSTICK_UP: return "Guard Up";
15291 case IPT_JOYSTICK_DOWN: return "Guard Down";
15292 case IPT_JOYSTICK_LEFT: return "Dodge Left";
15293 case IPT_JOYSTICK_RIGHT: return "Dodge Right";
15294 } /* end of switch */
15295
15296 return "";
15297 }
15298
15299 const struct ControlInfo sqix_ctrl =
15300 {
15301 false, /* 45_degree_rotation for joystick(s) */
15302 true, /* alternating_controls */
15303 true, /* mirrored_controls */
15304 "", /* control_details */
15305 &sqix_get_ctrl_name
15306 };
15307
sqix_get_ctrl_name(int type)15308 const char *sqix_get_ctrl_name(int type)
15309 {
15310 switch(type)
15311 {
15312 case IPT_BUTTON1: return BTN1 "Draw";
15313 } /* end of switch */
15314
15315 return joy4way_labels(type);
15316 }
15317
15318 const struct ControlInfo sspeedr_ctrl =
15319 {
15320 false, /* 45_degree_rotation for joystick(s) */
15321 false, /* alternating_controls */
15322 false, /* mirrored_controls */
15323 "Please note that with default mame mappings, the shifter and gas pedal will interfere with each other.", /* control_details */
15324 &sspeedr_get_ctrl_name
15325 };
15326
sspeedr_get_ctrl_name(int type)15327 const char *sspeedr_get_ctrl_name(int type)
15328 {
15329 switch(type)
15330 {
15331 case IPT_BUTTON1: return BTN1 "High / Low";
15332 case IPT_DIAL: return "Left";
15333 case (IPT_DIAL + IPT_EXTENSION): return "Right";
15334 case IPT_PEDAL: return "Accelerate";
15335 } /* end of switch */
15336
15337 return "";
15338 }
15339
15340 const struct ControlInfo ssprint_ctrl =
15341 {
15342 false, /* 45_degree_rotation for joystick(s) */
15343 false, /* alternating_controls */
15344 true, /* mirrored_controls */
15345 "Player one is blue, Player 2 is Red, Player 3 is yellow.", /* control_details */
15346 &ssprint_get_ctrl_name
15347 };
15348
ssprint_get_ctrl_name(int type)15349 const char *ssprint_get_ctrl_name(int type)
15350 {
15351 switch(type)
15352 {
15353 case (IPT_DIAL + IPT_EXTENSION): return "Right";
15354 case IPT_DIAL: return "Left";
15355 case IPT_PEDAL: return "Gas";
15356 } /* end of switch */
15357
15358 return "";
15359 }
15360
15361 const struct ControlInfo ssf2_ctrl =
15362 {
15363 false, /* 45_degree_rotation for joystick(s) */
15364 false, /* alternating_controls */
15365 true, /* mirrored_controls */
15366 "The ssf2 cpo image I found was very fuzzy. If you have a DEDICATED ssf2 cpo image please correct any mistakes I might have made. The labels to this game are very important as not only is it one of the very last dedicated capcom fighter cabs, but it's labels become the 'universal standard' for future capcom fighters.", /* control_details */
15367 &ssf2_get_ctrl_name
15368 };
15369
ssf2_get_ctrl_name(int type)15370 const char *ssf2_get_ctrl_name(int type)
15371 {
15372 switch(type)
15373 {
15374 case IPT_BUTTON1: return BTN1 "Jab Punch";
15375 case IPT_BUTTON2: return BTN2 "Strong Punch";
15376 case IPT_BUTTON3: return BTN3 "Fierce Punch";
15377 case IPT_BUTTON4: return BTN4 "Short Kick";
15378 case IPT_BUTTON5: return BTN5 "Strong Kick";
15379 case IPT_BUTTON6: return BTN6 "Roundhouse Kick";
15380 case IPT_JOYSTICK_UP: return "Jump";
15381 case IPT_JOYSTICK_DOWN: return "Crouch";
15382 case IPT_JOYSTICK_LEFT: return "Left";
15383 case IPT_JOYSTICK_RIGHT: return "Right";
15384 } /* end of switch */
15385
15386 return "";
15387 }
15388
15389 const struct ControlInfo sstrike_ctrl =
15390 {
15391 false, /* 45_degree_rotation for joystick(s) */
15392 true, /* alternating_controls */
15393 true, /* mirrored_controls */
15394 "The 'trackball' actually consists of a small scale version of the beginning of a bowling alley and a cue ball with various sensors to track it's movement. This game basically recycles the hardware of Slick Shot into a bowling game.", /* control_details */
15395 &sstrike_get_ctrl_name
15396 };
15397
sstrike_get_ctrl_name(int type)15398 const char *sstrike_get_ctrl_name(int type)
15399 {
15400 switch(type)
15401 {
15402 case IPT_BUTTON1: return BTN1 "Right Hook";
15403 case IPT_BUTTON2: return BTN2 "Left Hook";
15404 case IPT_TRACKBALL_X: return "Left";
15405 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
15406 case IPT_TRACKBALL_Y: return "Up";
15407 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
15408 } /* end of switch */
15409
15410 return "";
15411 }
15412
15413 const struct ControlInfo stonebal_ctrl =
15414 {
15415 false, /* 45_degree_rotation for joystick(s) */
15416 false, /* alternating_controls */
15417 true, /* mirrored_controls */
15418 "", /* control_details */
15419 &stonebal_get_ctrl_name
15420 };
15421
stonebal_get_ctrl_name(int type)15422 const char *stonebal_get_ctrl_name(int type)
15423 {
15424 switch(type)
15425 {
15426 case IPT_BUTTON1: return BTN1 "Shoot/Fight";
15427 case IPT_BUTTON2: return BTN2 "Pass/Tackle";
15428 case IPT_BUTTON3: return BTN3 "Push";
15429 } /* end of switch */
15430
15431 return joy4way_labels(type);
15432 }
15433
15434 const struct ControlInfo streakng_ctrl =
15435 {
15436 false, /* 45_degree_rotation for joystick(s) */
15437 false, /* alternating_controls */
15438 true, /* mirrored_controls */
15439 "", /* control_details */
15440 &streakng_get_ctrl_name
15441 };
15442
streakng_get_ctrl_name(int type)15443 const char *streakng_get_ctrl_name(int type)
15444 {
15445 return joy4way_labels(type);
15446 }
15447
15448 const struct ControlInfo szaxxon_ctrl =
15449 {
15450 false, /* 45_degree_rotation for joystick(s) */
15451 true, /* alternating_controls */
15452 true, /* mirrored_controls */
15453 "The control panel had duplicate Fire buttons on the panel, as well as the joystick trigger button. The Joystick had an LED that would light up when the trigger was pulled. Aircraft style controls - Pulling back on the joystick causes aircraft to climb.", /* control_details */
15454 &szaxxon_get_ctrl_name
15455 };
15456
szaxxon_get_ctrl_name(int type)15457 const char *szaxxon_get_ctrl_name(int type)
15458 {
15459 switch(type)
15460 {
15461 case IPT_BUTTON1: return BTN1 "Fire";
15462 } /* end of switch */
15463
15464 return joy4way_labels(type);
15465 }
15466
15467 const struct ControlInfo superman_ctrl =
15468 {
15469 false, /* 45_degree_rotation for joystick(s) */
15470 false, /* alternating_controls */
15471 true, /* mirrored_controls */
15472 "Hold Punch button down momentarily to release Blast Punch. During shooting scenes the Kick button actually emits Heat Vision instead of kicking.", /* control_details */
15473 &superman_get_ctrl_name
15474 };
15475
superman_get_ctrl_name(int type)15476 const char *superman_get_ctrl_name(int type)
15477 {
15478 switch(type)
15479 {
15480 case IPT_BUTTON1: return BTN1 "Punch";
15481 case IPT_BUTTON2: return BTN2 "Kick";
15482 } /* end of switch */
15483
15484 return joy4way_labels(type);
15485 }
15486
15487 const struct ControlInfo swimmer_ctrl =
15488 {
15489 false, /* 45_degree_rotation for joystick(s) */
15490 true, /* alternating_controls */
15491 true, /* mirrored_controls */
15492 "", /* control_details */
15493 &swimmer_get_ctrl_name
15494 };
15495
swimmer_get_ctrl_name(int type)15496 const char *swimmer_get_ctrl_name(int type)
15497 {
15498 switch(type)
15499 {
15500 case IPT_BUTTON1: return BTN1 "Dive";
15501 } /* end of switch */
15502
15503 return joy4way_labels(type);
15504 }
15505
15506 const struct ControlInfo tnk3_ctrl =
15507 {
15508 false, /* 45_degree_rotation for joystick(s) */
15509 true, /* alternating_controls */
15510 true, /* mirrored_controls */
15511 "This rotary is a unique one. It almost looks like a dial at first glance, but the dial can also be shifted in 8 directions, just like a rotary 8-way.", /* control_details */
15512 &tnk3_get_ctrl_name
15513 };
15514
tnk3_get_ctrl_name(int type)15515 const char *tnk3_get_ctrl_name(int type)
15516 {
15517 switch(type)
15518 {
15519 case IPT_BUTTON1: return BTN1 "Fire";
15520 case IPT_BUTTON2: return BTN2 "Cannon";
15521 case IPT_DIAL: return "Aim Left";
15522 case (IPT_DIAL + IPT_EXTENSION): return "Aim Right";
15523 } /* end of switch */
15524
15525 return joy4way_labels(type);
15526 }
15527
15528 const struct ControlInfo tailg_ctrl =
15529 {
15530 false, /* 45_degree_rotation for joystick(s) */
15531 false, /* alternating_controls */
15532 false, /* mirrored_controls */
15533 "The original game had an ambidexterous setup. The controls were setup as Shield, Fire, Site Control(Joystick), Fire, Shield.", /* control_details */
15534 &tailg_get_ctrl_name
15535 };
15536
tailg_get_ctrl_name(int type)15537 const char *tailg_get_ctrl_name(int type)
15538 {
15539 switch(type)
15540 {
15541 case IPT_BUTTON1: return BTN1 "Fire";
15542 case IPT_BUTTON2: return BTN2 "Shield";
15543 case IPT_AD_STICK_X: return "Left";
15544 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
15545 case IPT_AD_STICK_Y: return "Up";
15546 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
15547 } /* end of switch */
15548
15549 return "";
15550 }
15551
15552 const struct ControlInfo tank8_ctrl =
15553 {
15554 false, /* 45_degree_rotation for joystick(s) */
15555 false, /* alternating_controls */
15556 true, /* mirrored_controls */
15557 "Note that this game lacks any labels. This is probably due to the self-explainatory layout. Also not that oddly enough, on this game the trigger button is NOT mirroed to the left stick. The only trigger is on the right one.", /* control_details */
15558 &tank8_get_ctrl_name
15559 };
15560
tank8_get_ctrl_name(int type)15561 const char *tank8_get_ctrl_name(int type)
15562 {
15563 switch(type)
15564 {
15565 case IPT_BUTTON1: return BTN1 "Fire";
15566 case IPT_JOYSTICKLEFT_UP: return "Left Tread Forward";
15567 case IPT_JOYSTICKLEFT_DOWN: return "Left Tread Backward";
15568 case IPT_JOYSTICKRIGHT_UP: return "Right Tread Forward";
15569 case IPT_JOYSTICKRIGHT_DOWN: return "Right Tread Backward";
15570 } /* end of switch */
15571
15572 return "";
15573 }
15574
15575 const struct ControlInfo tankbatt_ctrl =
15576 {
15577 false, /* 45_degree_rotation for joystick(s) */
15578 true, /* alternating_controls */
15579 true, /* mirrored_controls */
15580 "", /* control_details */
15581 &tankbatt_get_ctrl_name
15582 };
15583
tankbatt_get_ctrl_name(int type)15584 const char *tankbatt_get_ctrl_name(int type)
15585 {
15586 switch(type)
15587 {
15588 case IPT_BUTTON1: return BTN1 "Fire";
15589 } /* end of switch */
15590
15591 return joy4way_labels(type);
15592 }
15593
15594 const struct ControlInfo tapper_ctrl =
15595 {
15596 false, /* 45_degree_rotation for joystick(s) */
15597 true, /* alternating_controls */
15598 true, /* mirrored_controls */
15599 "This game used a real beer tap instead of a shifter. You pull down on the tap to pour and release to serve. In mame it's emulated as a single button.", /* control_details */
15600 &tapper_get_ctrl_name
15601 };
15602
tapper_get_ctrl_name(int type)15603 const char *tapper_get_ctrl_name(int type)
15604 {
15605 switch(type)
15606 {
15607 case IPT_BUTTON1: return BTN1 "Pour / Serve";
15608 } /* end of switch */
15609
15610 return joy4way_labels(type);
15611 }
15612
15613 const struct ControlInfo targ_ctrl =
15614 {
15615 false, /* 45_degree_rotation for joystick(s) */
15616 true, /* alternating_controls */
15617 true, /* mirrored_controls */
15618 "", /* control_details */
15619 &targ_get_ctrl_name
15620 };
15621
targ_get_ctrl_name(int type)15622 const char *targ_get_ctrl_name(int type)
15623 {
15624 switch(type)
15625 {
15626 case IPT_BUTTON1: return BTN1 "Fire";
15627 } /* end of switch */
15628
15629 return joy4way_labels(type);
15630 }
15631
15632 const struct ControlInfo tazmania_ctrl =
15633 {
15634 false, /* 45_degree_rotation for joystick(s) */
15635 true, /* alternating_controls */
15636 true, /* mirrored_controls */
15637 "", /* control_details */
15638 &tazmania_get_ctrl_name
15639 };
15640
tazmania_get_ctrl_name(int type)15641 const char *tazmania_get_ctrl_name(int type)
15642 {
15643 switch(type)
15644 {
15645 case IPT_BUTTON1: return BTN1 "Fire";
15646 case IPT_BUTTON2: return BTN2 "Zapper";
15647 } /* end of switch */
15648
15649 return joy4way_labels(type);
15650 }
15651
15652 const struct ControlInfo tbowl_ctrl =
15653 {
15654 false, /* 45_degree_rotation for joystick(s) */
15655 false, /* alternating_controls */
15656 true, /* mirrored_controls */
15657 "", /* control_details */
15658 &tbowl_get_ctrl_name
15659 };
15660
tbowl_get_ctrl_name(int type)15661 const char *tbowl_get_ctrl_name(int type)
15662 {
15663 switch(type)
15664 {
15665 case IPT_BUTTON1: return BTN1 "Start / Jump";
15666 case IPT_BUTTON2: return BTN2 "Snap / Pass / Tackle / Kick";
15667 } /* end of switch */
15668
15669 return joy4way_labels(type);
15670 }
15671
15672 const struct ControlInfo tmnt_ctrl =
15673 {
15674 false, /* 45_degree_rotation for joystick(s) */
15675 false, /* alternating_controls */
15676 true, /* mirrored_controls */
15677 "Pressing both buttons does a special attack.", /* control_details */
15678 &tmnt_get_ctrl_name
15679 };
15680
tmnt_get_ctrl_name(int type)15681 const char *tmnt_get_ctrl_name(int type)
15682 {
15683 switch(type)
15684 {
15685 case IPT_BUTTON1: return BTN1 "Jump";
15686 case IPT_BUTTON2: return BTN2 "Attack";
15687 } /* end of switch */
15688
15689 return joy4way_labels(type);
15690 }
15691
15692 const struct ControlInfo tmnt2_ctrl =
15693 {
15694 false, /* 45_degree_rotation for joystick(s) */
15695 false, /* alternating_controls */
15696 true, /* mirrored_controls */
15697 "Both buttons do a special attack.", /* control_details */
15698 &tmnt2_get_ctrl_name
15699 };
15700
tmnt2_get_ctrl_name(int type)15701 const char *tmnt2_get_ctrl_name(int type)
15702 {
15703 switch(type)
15704 {
15705 case IPT_BUTTON1: return BTN1 "Jump";
15706 case IPT_BUTTON2: return BTN2 "Attack";
15707 } /* end of switch */
15708
15709 return joy4way_labels(type);
15710 }
15711
15712 const struct ControlInfo tehkanwc_ctrl =
15713 {
15714 false, /* 45_degree_rotation for joystick(s) */
15715 false, /* alternating_controls */
15716 true, /* mirrored_controls */
15717 "Two buttons were usually wired to the same single button input per player, one on each side of the TB. Mame has a hack so you can play with 8-way joyaticks, but the original had trackballs /* control_details */ mame also has the trackballs, but since no keys are mapped to the TBs (to enable the joystick hack), the TBs don't show in the tab input menu. There apparently were joystick bootlegs of this game; mame only has one version, so the bootlegs might have been hardware hacks no just the inputs (or mame is missing the different ROMs).", /* control_details */
15718 &tehkanwc_get_ctrl_name
15719 };
15720
tehkanwc_get_ctrl_name(int type)15721 const char *tehkanwc_get_ctrl_name(int type)
15722 {
15723 switch(type)
15724 {
15725 case IPT_BUTTON1: return BTN1 "Kick";
15726 case IPT_TRACKBALL_X: return "Left";
15727 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
15728 case IPT_TRACKBALL_Y: return "Up";
15729 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
15730 } /* end of switch */
15731
15732 return "";
15733 }
15734
15735 const struct ControlInfo tekken_ctrl =
15736 {
15737 false, /* 45_degree_rotation for joystick(s) */
15738 false, /* alternating_controls */
15739 true, /* mirrored_controls */
15740 "The cpo itself in this game labels the punch and kick buttons as just 'punch' and 'kick' grouped. The bezel labes them in detail. Please note that the punch buttons are on the top row of the tekken games, so remap accordingly.", /* control_details */
15741 &tekken_get_ctrl_name
15742 };
15743
tekken_get_ctrl_name(int type)15744 const char *tekken_get_ctrl_name(int type)
15745 {
15746 switch(type)
15747 {
15748 case IPT_BUTTON1: return BTN1 "Left Punch";
15749 case IPT_BUTTON2: return BTN2 "Right Punch";
15750 case IPT_BUTTON3: return BTN3 "Left Kick";
15751 case IPT_BUTTON4: return BTN4 "Right Kick";
15752 } /* end of switch */
15753
15754 return joy4way_labels(type);
15755 }
15756
15757 const struct ControlInfo tekken2_ctrl =
15758 {
15759 false, /* 45_degree_rotation for joystick(s) */
15760 false, /* alternating_controls */
15761 true, /* mirrored_controls */
15762 "The cpo itself in this game labels the punch and kick buttons as just 'punch' and 'kick' grouped. The bezel labes them in detail. Please note that the punch buttons are on the top row of the tekken games, so remap accordingly.", /* control_details */
15763 &tekken2_get_ctrl_name
15764 };
15765
tekken2_get_ctrl_name(int type)15766 const char *tekken2_get_ctrl_name(int type)
15767 {
15768 switch(type)
15769 {
15770 case IPT_BUTTON1: return BTN1 "Left Punch";
15771 case IPT_BUTTON2: return BTN2 "Right Punch";
15772 case IPT_BUTTON3: return BTN3 "Left Kick";
15773 case IPT_BUTTON4: return BTN4 "Right Kick";
15774 } /* end of switch */
15775
15776 return joy4way_labels(type);
15777 }
15778
15779 const struct ControlInfo tekken3_ctrl =
15780 {
15781 false, /* 45_degree_rotation for joystick(s) */
15782 false, /* alternating_controls */
15783 true, /* mirrored_controls */
15784 "The cpo itself in this game labels the punch and kick buttons as just 'punch' and 'kick' grouped. The bezel labes them in detail. Please note that the punch buttons are on the top row of the tekken games, so remap accordingly.", /* control_details */
15785 &tekken3_get_ctrl_name
15786 };
15787
tekken3_get_ctrl_name(int type)15788 const char *tekken3_get_ctrl_name(int type)
15789 {
15790 switch(type)
15791 {
15792 case IPT_BUTTON1: return BTN1 "Left Punch";
15793 case IPT_BUTTON2: return BTN2 "Right Punch";
15794 case IPT_BUTTON3: return BTN3 "Left Kick";
15795 case IPT_BUTTON4: return BTN4 "Right Kick";
15796 } /* end of switch */
15797
15798 return joy4way_labels(type);
15799 }
15800
15801 const struct ControlInfo tempest_ctrl =
15802 {
15803 false, /* 45_degree_rotation for joystick(s) */
15804 true, /* alternating_controls */
15805 true, /* mirrored_controls */
15806 "Super Zapper kills all enemies. Three Zaps per level.", /* control_details */
15807 &tempest_get_ctrl_name
15808 };
15809
tempest_get_ctrl_name(int type)15810 const char *tempest_get_ctrl_name(int type)
15811 {
15812 switch(type)
15813 {
15814 case IPT_BUTTON1: return BTN1 "Fire";
15815 case IPT_BUTTON2: return BTN2 "Super Zapper";
15816 case IPT_DIAL: return "Left";
15817 case (IPT_DIAL + IPT_EXTENSION): return "Right";
15818 } /* end of switch */
15819
15820 return "";
15821 }
15822
15823 const struct ControlInfo tengai_ctrl =
15824 {
15825 false, /* 45_degree_rotation for joystick(s) */
15826 false, /* alternating_controls */
15827 true, /* mirrored_controls */
15828 "Mame lists 3 buttons although only 2 actually work", /* control_details */
15829 &tengai_get_ctrl_name
15830 };
15831
tengai_get_ctrl_name(int type)15832 const char *tengai_get_ctrl_name(int type)
15833 {
15834 switch(type)
15835 {
15836 case IPT_BUTTON1: return BTN1 "Fire";
15837 case IPT_BUTTON2: return BTN2 "Bomb";
15838 case IPT_BUTTON3: return BTN3 "??";
15839 } /* end of switch */
15840
15841 return joy4way_labels(type);
15842 }
15843
15844 const struct ControlInfo term2_ctrl =
15845 {
15846 false, /* 45_degree_rotation for joystick(s) */
15847 false, /* alternating_controls */
15848 true, /* mirrored_controls */
15849 "", /* control_details */
15850 &term2_get_ctrl_name
15851 };
15852
term2_get_ctrl_name(int type)15853 const char *term2_get_ctrl_name(int type)
15854 {
15855 switch(type)
15856 {
15857 case IPT_BUTTON1: return BTN1 "Trigger";
15858 case IPT_BUTTON2: return BTN2 "Bomb";
15859 case IPT_LIGHTGUN_X: return "Aim Left";
15860 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
15861 case IPT_LIGHTGUN_Y: return "Aim Up";
15862 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
15863 } /* end of switch */
15864
15865 return "";
15866 }
15867
15868 const struct ControlInfo terracre_ctrl =
15869 {
15870 false, /* 45_degree_rotation for joystick(s) */
15871 true, /* alternating_controls */
15872 true, /* mirrored_controls */
15873 "", /* control_details */
15874 &terracre_get_ctrl_name
15875 };
15876
terracre_get_ctrl_name(int type)15877 const char *terracre_get_ctrl_name(int type)
15878 {
15879 switch(type)
15880 {
15881 case IPT_BUTTON1: return BTN1 "Fire";
15882 case IPT_BUTTON2: return BTN2 "Formation";
15883 } /* end of switch */
15884
15885 return joy4way_labels(type);
15886 }
15887
15888 const struct ControlInfo terraf_ctrl =
15889 {
15890 false, /* 45_degree_rotation for joystick(s) */
15891 true, /* alternating_controls */
15892 true, /* mirrored_controls */
15893 "", /* control_details */
15894 &terraf_get_ctrl_name
15895 };
15896
terraf_get_ctrl_name(int type)15897 const char *terraf_get_ctrl_name(int type)
15898 {
15899 switch(type)
15900 {
15901 case IPT_BUTTON1: return BTN1 "Fire";
15902 case IPT_BUTTON2: return BTN2 "Formation";
15903 } /* end of switch */
15904
15905 return joy4way_labels(type);
15906 }
15907
15908 const struct ControlInfo atetris_ctrl =
15909 {
15910 false, /* 45_degree_rotation for joystick(s) */
15911 false, /* alternating_controls */
15912 true, /* mirrored_controls */
15913 "Atari Tetris uses a 4-way joystick, though only 3 positions are connected/used (left,right,down). Also the rotate button starts the game. We don't label it start though because on every single tetris machine there is a seperate start button which is apparently wired to button 1 to avoid confusion.", /* control_details */
15914 &atetris_get_ctrl_name
15915 };
15916
atetris_get_ctrl_name(int type)15917 const char *atetris_get_ctrl_name(int type)
15918 {
15919 switch(type)
15920 {
15921 case IPT_BUTTON1: return BTN1 "Rotate";
15922 case IPT_JOYSTICK_RIGHT: return "Right";
15923 case IPT_JOYSTICK_LEFT: return "Left";
15924 case IPT_JOYSTICK_DOWN: return "Down";
15925 } /* end of switch */
15926
15927 return "";
15928 }
15929
15930 const struct ControlInfo tetris_ctrl =
15931 {
15932 false, /* 45_degree_rotation for joystick(s) */
15933 false, /* alternating_controls */
15934 true, /* mirrored_controls */
15935 "", /* control_details */
15936 &tetris_get_ctrl_name
15937 };
15938
tetris_get_ctrl_name(int type)15939 const char *tetris_get_ctrl_name(int type)
15940 {
15941 switch(type)
15942 {
15943 case IPT_BUTTON1: return BTN1 "Rotate";
15944 case IPT_JOYSTICK_DOWN: return "Drop";
15945 case IPT_JOYSTICK_LEFT: return "Left";
15946 case IPT_JOYSTICK_RIGHT: return "Right";
15947 } /* end of switch */
15948
15949 return "";
15950 }
15951
15952 const struct ControlInfo tetrisp_ctrl =
15953 {
15954 false, /* 45_degree_rotation for joystick(s) */
15955 false, /* alternating_controls */
15956 true, /* mirrored_controls */
15957 "", /* control_details */
15958 &tetrisp_get_ctrl_name
15959 };
15960
tetrisp_get_ctrl_name(int type)15961 const char *tetrisp_get_ctrl_name(int type)
15962 {
15963 switch(type)
15964 {
15965 case IPT_BUTTON1: return BTN1 "Rotate";
15966 case IPT_BUTTON2: return BTN2 "Rotate";
15967 } /* end of switch */
15968
15969 return joy4way_labels(type);
15970 }
15971
15972 const struct ControlInfo tetrisp2_ctrl =
15973 {
15974 false, /* 45_degree_rotation for joystick(s) */
15975 false, /* alternating_controls */
15976 true, /* mirrored_controls */
15977 "As everybody knows how to play tetris by the time this game was relased, the controls are completely un-labeled on the real panel.", /* control_details */
15978 &tetrisp2_get_ctrl_name
15979 };
15980
tetrisp2_get_ctrl_name(int type)15981 const char *tetrisp2_get_ctrl_name(int type)
15982 {
15983 switch(type)
15984 {
15985 case IPT_BUTTON1: return BTN1 "Rotate Clockwise";
15986 case IPT_BUTTON2: return BTN2 "Rotate Anti Clockwise";
15987 case IPT_BUTTON3: return BTN3 "Bomb";
15988 case IPT_JOYSTICK_DOWN: return "Drop";
15989 case IPT_JOYSTICK_LEFT: return "Left";
15990 case IPT_JOYSTICK_RIGHT: return "Right";
15991 } /* end of switch */
15992
15993 return "";
15994 }
15995
15996 const struct ControlInfo ctribe_ctrl =
15997 {
15998 false, /* 45_degree_rotation for joystick(s) */
15999 false, /* alternating_controls */
16000 true, /* mirrored_controls */
16001 "", /* control_details */
16002 &ctribe_get_ctrl_name
16003 };
16004
ctribe_get_ctrl_name(int type)16005 const char *ctribe_get_ctrl_name(int type)
16006 {
16007 switch(type)
16008 {
16009 case IPT_BUTTON1: return BTN1 "Punch";
16010 case IPT_BUTTON2: return BTN2 "Kick";
16011 } /* end of switch */
16012
16013 return joy4way_labels(type);
16014 }
16015
16016 const struct ControlInfo elecyoyo_ctrl =
16017 {
16018 false, /* 45_degree_rotation for joystick(s) */
16019 true, /* alternating_controls */
16020 true, /* mirrored_controls */
16021 "", /* control_details */
16022 &elecyoyo_get_ctrl_name
16023 };
16024
elecyoyo_get_ctrl_name(int type)16025 const char *elecyoyo_get_ctrl_name(int type)
16026 {
16027 return joy4way_labels(type);
16028 }
16029
16030 const struct ControlInfo esb_ctrl =
16031 {
16032 false, /* 45_degree_rotation for joystick(s) */
16033 false, /* alternating_controls */
16034 true, /* mirrored_controls */
16035 "Buttons 1 and 4 correspond to the Yoke triggers. Buttons 2 and 3 correspond to the Yoke thumb buttons. These shoot TOW cables on the Probots stages and Fire on the other stages. Game uses aircraft style controls, i.e. pulling the yoke grips down in MAME causes the cursor to move upward.", /* control_details */
16036 &esb_get_ctrl_name
16037 };
16038
esb_get_ctrl_name(int type)16039 const char *esb_get_ctrl_name(int type)
16040 {
16041 switch(type)
16042 {
16043 case IPT_BUTTON1: return BTN1 "Fire";
16044 case IPT_BUTTON2: return BTN2 "Fire / Shoot TOW Cable";
16045 case IPT_BUTTON3: return BTN3 "Fire / Shoot TOW Cable";
16046 case IPT_BUTTON4: return BTN4 "Fire";
16047 case IPT_AD_STICK_Y: return "Up";
16048 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
16049 case IPT_AD_STICK_X: return "Left";
16050 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
16051 } /* end of switch */
16052
16053 return "";
16054 }
16055
16056 const struct ControlInfo theend_ctrl =
16057 {
16058 false, /* 45_degree_rotation for joystick(s) */
16059 true, /* alternating_controls */
16060 true, /* mirrored_controls */
16061 "", /* control_details */
16062 &theend_get_ctrl_name
16063 };
16064
theend_get_ctrl_name(int type)16065 const char *theend_get_ctrl_name(int type)
16066 {
16067 switch(type)
16068 {
16069 case IPT_BUTTON1: return BTN1 "Fire";
16070 } /* end of switch */
16071
16072 return joy2way_labels(type);
16073 }
16074
16075 const struct ControlInfo lkage_ctrl =
16076 {
16077 false, /* 45_degree_rotation for joystick(s) */
16078 true, /* alternating_controls */
16079 true, /* mirrored_controls */
16080 "", /* control_details */
16081 &lkage_get_ctrl_name
16082 };
16083
lkage_get_ctrl_name(int type)16084 const char *lkage_get_ctrl_name(int type)
16085 {
16086 switch(type)
16087 {
16088 case IPT_BUTTON1: return BTN1 "Sword";
16089 case IPT_BUTTON2: return BTN2 "Star Knives";
16090 } /* end of switch */
16091
16092 return joy4way_labels(type);
16093 }
16094
16095 const struct ControlInfo mainevt_ctrl =
16096 {
16097 false, /* 45_degree_rotation for joystick(s) */
16098 false, /* alternating_controls */
16099 true, /* mirrored_controls */
16100 "The action button was one of those huge, round, lighted buttons.", /* control_details */
16101 &mainevt_get_ctrl_name
16102 };
16103
mainevt_get_ctrl_name(int type)16104 const char *mainevt_get_ctrl_name(int type)
16105 {
16106 switch(type)
16107 {
16108 case IPT_BUTTON1: return BTN1 "Action";
16109 case IPT_BUTTON2: return BTN2 "Tag";
16110 } /* end of switch */
16111
16112 return joy4way_labels(type);
16113 }
16114
16115 const struct ControlInfo ninjaw_ctrl =
16116 {
16117 false, /* 45_degree_rotation for joystick(s) */
16118 false, /* alternating_controls */
16119 true, /* mirrored_controls */
16120 "", /* control_details */
16121 &ninjaw_get_ctrl_name
16122 };
16123
ninjaw_get_ctrl_name(int type)16124 const char *ninjaw_get_ctrl_name(int type)
16125 {
16126 switch(type)
16127 {
16128 case IPT_BUTTON1: return BTN1 "Dagger";
16129 case IPT_BUTTON2: return BTN2 "Ninja Star";
16130 } /* end of switch */
16131
16132 return joy4way_labels(type);
16133 }
16134
16135 const struct ControlInfo thepit_ctrl =
16136 {
16137 false, /* 45_degree_rotation for joystick(s) */
16138 true, /* alternating_controls */
16139 true, /* mirrored_controls */
16140 "", /* control_details */
16141 &thepit_get_ctrl_name
16142 };
16143
thepit_get_ctrl_name(int type)16144 const char *thepit_get_ctrl_name(int type)
16145 {
16146 switch(type)
16147 {
16148 case IPT_BUTTON1: return BTN1 "Fire";
16149 } /* end of switch */
16150
16151 return joy4way_labels(type);
16152 }
16153
16154 const struct ControlInfo punisher_ctrl =
16155 {
16156 false, /* 45_degree_rotation for joystick(s) */
16157 false, /* alternating_controls */
16158 true, /* mirrored_controls */
16159 "", /* control_details */
16160 &punisher_get_ctrl_name
16161 };
16162
punisher_get_ctrl_name(int type)16163 const char *punisher_get_ctrl_name(int type)
16164 {
16165 switch(type)
16166 {
16167 case IPT_BUTTON1: return BTN1 "Attack";
16168 case IPT_BUTTON2: return BTN2 "Jump";
16169 } /* end of switch */
16170
16171 return joy4way_labels(type);
16172 }
16173
16174 const struct ControlInfo ghostb_ctrl =
16175 {
16176 false, /* 45_degree_rotation for joystick(s) */
16177 false, /* alternating_controls */
16178 true, /* mirrored_controls */
16179 "In the versions in mame, there aren't seperate start buttons. The shoot button doubles as the start button. Mame's driver, however, includes normal seperate start buttons /* control_details */ they don't work. However, it seems like there were versions of this game that had the normal seperate start buttons. There also is a 3 player version. The Mame driver includes player 3 inputs in the 2 player game even though they aren't used.", /* control_details */
16180 &ghostb_get_ctrl_name
16181 };
16182
ghostb_get_ctrl_name(int type)16183 const char *ghostb_get_ctrl_name(int type)
16184 {
16185 switch(type)
16186 {
16187 case IPT_BUTTON1: return BTN1 "Shoot / Start";
16188 case IPT_BUTTON2: return BTN2 "Beam";
16189 } /* end of switch */
16190
16191 return joy4way_labels(type);
16192 }
16193
16194 const struct ControlInfo simpsons_ctrl =
16195 {
16196 false, /* 45_degree_rotation for joystick(s) */
16197 false, /* alternating_controls */
16198 true, /* mirrored_controls */
16199 "", /* control_details */
16200 &simpsons_get_ctrl_name
16201 };
16202
simpsons_get_ctrl_name(int type)16203 const char *simpsons_get_ctrl_name(int type)
16204 {
16205 switch(type)
16206 {
16207 case IPT_BUTTON1: return BTN1 "Attack";
16208 case IPT_BUTTON2: return BTN2 "Jump";
16209 } /* end of switch */
16210
16211 return joy4way_labels(type);
16212 }
16213
16214 const struct ControlInfo srumbler_ctrl =
16215 {
16216 false, /* 45_degree_rotation for joystick(s) */
16217 true, /* alternating_controls */
16218 true, /* mirrored_controls */
16219 "", /* control_details */
16220 &srumbler_get_ctrl_name
16221 };
16222
srumbler_get_ctrl_name(int type)16223 const char *srumbler_get_ctrl_name(int type)
16224 {
16225 switch(type)
16226 {
16227 case IPT_BUTTON1: return BTN1 "Fire";
16228 case IPT_BUTTON2: return BTN2 "Escape";
16229 } /* end of switch */
16230
16231 return joy4way_labels(type);
16232 }
16233
16234 const struct ControlInfo a3stooges_ctrl =
16235 {
16236 false, /* 45_degree_rotation for joystick(s) */
16237 false, /* alternating_controls */
16238 true, /* mirrored_controls */
16239 "In this three player game, which player you are determines which stooge you are. P1=Larry P2=Curly P3=Moe", /* control_details */
16240 &a3stooges_get_ctrl_name
16241 };
16242
a3stooges_get_ctrl_name(int type)16243 const char *a3stooges_get_ctrl_name(int type)
16244 {
16245 switch(type)
16246 {
16247 case IPT_BUTTON1: return BTN1 "Slap / Throw";
16248 } /* end of switch */
16249
16250 return joy4way_labels(type);
16251 }
16252
16253 const struct ControlInfo tinstar_ctrl =
16254 {
16255 false, /* 45_degree_rotation for joystick(s) */
16256 true, /* alternating_controls */
16257 true, /* mirrored_controls */
16258 "The game actually had a unique digital dial to aim with. Also mame strangely puts the firing controls on the left stick, even though the dial is on the right of the joystick.", /* control_details */
16259 &tinstar_get_ctrl_name
16260 };
16261
tinstar_get_ctrl_name(int type)16262 const char *tinstar_get_ctrl_name(int type)
16263 {
16264 switch(type)
16265 {
16266 case IPT_BUTTON1: return BTN1 "Fire";
16267 case IPT_JOYSTICKLEFT_UP: return "Aim Up";
16268 case IPT_JOYSTICKLEFT_DOWN: return "Aim Down";
16269 case IPT_JOYSTICKLEFT_LEFT: return "Aim Left";
16270 case IPT_JOYSTICKLEFT_RIGHT: return "Aim Right";
16271 case IPT_JOYSTICKRIGHT_UP: return "Move Up";
16272 case IPT_JOYSTICKRIGHT_DOWN: return "Move Down";
16273 case IPT_JOYSTICKRIGHT_LEFT: return "Move Left";
16274 case IPT_JOYSTICKRIGHT_RIGHT: return "Move Right";
16275 } /* end of switch */
16276
16277 return "";
16278 }
16279
16280 const struct ControlInfo thief_ctrl =
16281 {
16282 false, /* 45_degree_rotation for joystick(s) */
16283 true, /* alternating_controls */
16284 true, /* mirrored_controls */
16285 "Pacman like game.", /* control_details */
16286 &thief_get_ctrl_name
16287 };
16288
thief_get_ctrl_name(int type)16289 const char *thief_get_ctrl_name(int type)
16290 {
16291 return joy4way_labels(type);
16292 }
16293
16294 const struct ControlInfo a3wonders_ctrl =
16295 {
16296 false, /* 45_degree_rotation for joystick(s) */
16297 false, /* alternating_controls */
16298 true, /* mirrored_controls */
16299 "3rd button mapped in mame but not used (AFAIK). This game has 3 games in 1 and the 2 buttons act differently in each game. There doesn't seem to be anything written on the control panel but for game 1 - Attack, Jump 2 - Attack, Special Attack 3 - Push Block, Push Block", /* control_details */
16300 &a3wonders_get_ctrl_name
16301 };
16302
a3wonders_get_ctrl_name(int type)16303 const char *a3wonders_get_ctrl_name(int type)
16304 {
16305 switch(type)
16306 {
16307 case IPT_BUTTON1: return BTN1 "Attack";
16308 case IPT_BUTTON2: return BTN2 "Jump";
16309 case IPT_BUTTON3: return BTN3 "??";
16310 } /* end of switch */
16311
16312 return joy4way_labels(type);
16313 }
16314
16315 const struct ControlInfo thndrbld_ctrl =
16316 {
16317 false, /* 45_degree_rotation for joystick(s) */
16318 false, /* alternating_controls */
16319 false, /* mirrored_controls */
16320 "The upright version of this game sported a force-feedback joystick, while the cockpit version used the force-feedback to shake the whole cockpit!", /* control_details */
16321 &thndrbld_get_ctrl_name
16322 };
16323
thndrbld_get_ctrl_name(int type)16324 const char *thndrbld_get_ctrl_name(int type)
16325 {
16326 switch(type)
16327 {
16328 case IPT_BUTTON1: return BTN1 "Fire";
16329 case IPT_BUTTON2: return BTN2 "Grenade";
16330 case IPT_AD_STICK_X: return "Left";
16331 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
16332 case IPT_AD_STICK_Y: return "Up";
16333 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
16334 case IPT_AD_STICK_Z: return "Fast";
16335 case (IPT_AD_STICK_Z + IPT_EXTENSION): return "Slow";
16336 } /* end of switch */
16337
16338 return "";
16339 }
16340
16341 const struct ControlInfo thundfox_ctrl =
16342 {
16343 false, /* 45_degree_rotation for joystick(s) */
16344 false, /* alternating_controls */
16345 true, /* mirrored_controls */
16346 "Couldn't find a control panel pic. Press Button 1 for close range attack (punching, stabbing), press button 3 to use the weapon (throw grenade, shoot gun). Need to kneel down to pick up the weapons", /* control_details */
16347 &thundfox_get_ctrl_name
16348 };
16349
thundfox_get_ctrl_name(int type)16350 const char *thundfox_get_ctrl_name(int type)
16351 {
16352 switch(type)
16353 {
16354 case IPT_BUTTON1: return BTN1 "Attack";
16355 case IPT_BUTTON2: return BTN2 "Jump";
16356 case IPT_BUTTON3: return BTN3 "Weapon";
16357 } /* end of switch */
16358
16359 return joy4way_labels(type);
16360 }
16361
16362 const struct ControlInfo thunderj_ctrl =
16363 {
16364 false, /* 45_degree_rotation for joystick(s) */
16365 false, /* alternating_controls */
16366 true, /* mirrored_controls */
16367 "", /* control_details */
16368 &thunderj_get_ctrl_name
16369 };
16370
thunderj_get_ctrl_name(int type)16371 const char *thunderj_get_ctrl_name(int type)
16372 {
16373 switch(type)
16374 {
16375 case IPT_BUTTON1: return BTN1 "Fire";
16376 case IPT_BUTTON2: return BTN2 "Jump";
16377 } /* end of switch */
16378
16379 return joy4way_labels(type);
16380 }
16381
16382 const struct ControlInfo tickee_ctrl =
16383 {
16384 false, /* 45_degree_rotation for joystick(s) */
16385 false, /* alternating_controls */
16386 true, /* mirrored_controls */
16387 "", /* control_details */
16388 &tickee_get_ctrl_name
16389 };
16390
tickee_get_ctrl_name(int type)16391 const char *tickee_get_ctrl_name(int type)
16392 {
16393 switch(type)
16394 {
16395 case IPT_BUTTON1: return BTN1 "Trigger";
16396 case IPT_LIGHTGUN_X: return "Left";
16397 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
16398 case IPT_LIGHTGUN_Y: return "Up";
16399 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
16400 } /* end of switch */
16401
16402 return "";
16403 }
16404
16405 const struct ControlInfo tigerh_ctrl =
16406 {
16407 false, /* 45_degree_rotation for joystick(s) */
16408 true, /* alternating_controls */
16409 true, /* mirrored_controls */
16410 "Shooting the colored crosses provides the following power-ups: White - Forward firing Little Heli, Red - Side Firing Little Heli, Blue - Bomb. A max of two bombs and two little helis are possible. Shooting 10 yellow diamonds awards an additional life.", /* control_details */
16411 &tigerh_get_ctrl_name
16412 };
16413
tigerh_get_ctrl_name(int type)16414 const char *tigerh_get_ctrl_name(int type)
16415 {
16416 switch(type)
16417 {
16418 case IPT_BUTTON1: return BTN1 "Mini-Gun";
16419 case IPT_BUTTON2: return BTN2 "Bomb";
16420 } /* end of switch */
16421
16422 return joy4way_labels(type);
16423 }
16424
16425 const struct ControlInfo tigeroad_ctrl =
16426 {
16427 false, /* 45_degree_rotation for joystick(s) */
16428 true, /* alternating_controls */
16429 true, /* mirrored_controls */
16430 "", /* control_details */
16431 &tigeroad_get_ctrl_name
16432 };
16433
tigeroad_get_ctrl_name(int type)16434 const char *tigeroad_get_ctrl_name(int type)
16435 {
16436 switch(type)
16437 {
16438 case IPT_BUTTON1: return BTN1 "Attack";
16439 case IPT_BUTTON2: return BTN2 "Jump";
16440 } /* end of switch */
16441
16442 return joy4way_labels(type);
16443 }
16444
16445 const struct ControlInfo timber_ctrl =
16446 {
16447 false, /* 45_degree_rotation for joystick(s) */
16448 false, /* alternating_controls */
16449 true, /* mirrored_controls */
16450 "OTHER: The two buttons in mame are actually a two-way joystick. The 4-way joystick is for moving and pushing, the buttons (2-way) chops the wood.", /* control_details */
16451 &timber_get_ctrl_name
16452 };
16453
timber_get_ctrl_name(int type)16454 const char *timber_get_ctrl_name(int type)
16455 {
16456 switch(type)
16457 {
16458 case IPT_BUTTON1: return BTN1 "Chop Left";
16459 case IPT_BUTTON2: return BTN2 "Chop Right";
16460 } /* end of switch */
16461
16462 return joy4way_labels(type);
16463 }
16464
16465 const struct ControlInfo timecris_ctrl =
16466 {
16467 false, /* 45_degree_rotation for joystick(s) */
16468 false, /* alternating_controls */
16469 false, /* mirrored_controls */
16470 "The player uses the pedal to rise up from behind cover. teh cryptic label is posted on the control panel, with a giant arrow pointing down. This is probably to make the player aware that there is a pedal on a gun game, which is obviously quite odd.", /* control_details */
16471 &timecris_get_ctrl_name
16472 };
16473
timecris_get_ctrl_name(int type)16474 const char *timecris_get_ctrl_name(int type)
16475 {
16476 switch(type)
16477 {
16478 case IPT_BUTTON1: return BTN1 "Fire";
16479 case IPT_BUTTON2: return BTN2 "Step on It!";
16480 case IPT_LIGHTGUN_X: return "Aim Left";
16481 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
16482 case IPT_LIGHTGUN_Y: return "Aim Up";
16483 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
16484 } /* end of switch */
16485
16486 return "";
16487 }
16488
16489 const struct ControlInfo timekill_ctrl =
16490 {
16491 false, /* 45_degree_rotation for joystick(s) */
16492 false, /* alternating_controls */
16493 true, /* mirrored_controls */
16494 "The distinction of left and right on these labels isn't which limb you use, but describes the position of the buttons on the control panel. Each player has two arm and leg buttons and they both do different things, even though they are labeld different. On the original control panel the arm buttons are on the top row and the legs are on the bottom with the head button centered, above both rows. So to play this game properly, some remapping will probably be required.", /* control_details */
16495 &timekill_get_ctrl_name
16496 };
16497
timekill_get_ctrl_name(int type)16498 const char *timekill_get_ctrl_name(int type)
16499 {
16500 switch(type)
16501 {
16502 case IPT_BUTTON1: return BTN1 "Left Arm";
16503 case IPT_BUTTON2: return BTN2 "Right Arm";
16504 case IPT_BUTTON3: return BTN3 "Left Leg";
16505 case IPT_BUTTON4: return BTN4 "Right Leg";
16506 case IPT_BUTTON5: return BTN5 "Head";
16507 } /* end of switch */
16508
16509 return joy4way_labels(type);
16510 }
16511
16512 const struct ControlInfo timeplt_ctrl =
16513 {
16514 false, /* 45_degree_rotation for joystick(s) */
16515 true, /* alternating_controls */
16516 true, /* mirrored_controls */
16517 "", /* control_details */
16518 &timeplt_get_ctrl_name
16519 };
16520
timeplt_get_ctrl_name(int type)16521 const char *timeplt_get_ctrl_name(int type)
16522 {
16523 switch(type)
16524 {
16525 case IPT_BUTTON1: return BTN1 "Fire";
16526 } /* end of switch */
16527
16528 return joy4way_labels(type);
16529 }
16530
16531 const struct ControlInfo timesold_ctrl =
16532 {
16533 false, /* 45_degree_rotation for joystick(s) */
16534 false, /* alternating_controls */
16535 true, /* mirrored_controls */
16536 "This game used a 12 direction mechanical rotary (SNK LS-30).", /* control_details */
16537 ×old_get_ctrl_name
16538 };
16539
timesold_get_ctrl_name(int type)16540 const char *timesold_get_ctrl_name(int type)
16541 {
16542 switch(type)
16543 {
16544 case IPT_BUTTON1: return BTN1 "Fire";
16545 case IPT_BUTTON2: return BTN2 "Hyper Weapon";
16546 case IPT_DIAL: return "Rotate Left";
16547 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
16548 } /* end of switch */
16549
16550 return joy4way_labels(type);
16551 }
16552
16553 const struct ControlInfo titlef_ctrl =
16554 {
16555 false, /* 45_degree_rotation for joystick(s) */
16556 false, /* alternating_controls */
16557 true, /* mirrored_controls */
16558 "The game actually used a pair of digital 'twist sticks' basically, you moved them up and down as normal, but to press left or right you twist them. Explaining how to play is rather complicated as the game uses combinations of both stick movements to do moves.", /* control_details */
16559 &titlef_get_ctrl_name
16560 };
16561
titlef_get_ctrl_name(int type)16562 const char *titlef_get_ctrl_name(int type)
16563 {
16564 switch(type)
16565 {
16566 case IPT_JOYSTICKLEFT_UP: return "Left Fist Up";
16567 case IPT_JOYSTICKLEFT_DOWN: return "Left Fist Down";
16568 case IPT_JOYSTICKLEFT_LEFT: return "Left Fist Left";
16569 case IPT_JOYSTICKLEFT_RIGHT: return "Left Fist Right";
16570 case IPT_JOYSTICKRIGHT_UP: return "Right Fist Up";
16571 case IPT_JOYSTICKRIGHT_DOWN: return "Right Fist Down";
16572 case IPT_JOYSTICKRIGHT_LEFT: return "Right Fist Left";
16573 case IPT_JOYSTICKRIGHT_RIGHT: return "Right Fist Right";
16574 } /* end of switch */
16575
16576 return "";
16577 }
16578
16579 const struct ControlInfo toki_ctrl =
16580 {
16581 false, /* 45_degree_rotation for joystick(s) */
16582 true, /* alternating_controls */
16583 true, /* mirrored_controls */
16584 "", /* control_details */
16585 &toki_get_ctrl_name
16586 };
16587
toki_get_ctrl_name(int type)16588 const char *toki_get_ctrl_name(int type)
16589 {
16590 switch(type)
16591 {
16592 case IPT_BUTTON1: return BTN1 "Fire";
16593 case IPT_BUTTON2: return BTN2 "Jump";
16594 } /* end of switch */
16595
16596 return joy4way_labels(type);
16597 }
16598
16599 const struct ControlInfo tomahawk_ctrl =
16600 {
16601 false, /* 45_degree_rotation for joystick(s) */
16602 true, /* alternating_controls */
16603 true, /* mirrored_controls */
16604 "The cpo has the generic 'control' label under the joystick, which was popular in that era.", /* control_details */
16605 &tomahawk_get_ctrl_name
16606 };
16607
tomahawk_get_ctrl_name(int type)16608 const char *tomahawk_get_ctrl_name(int type)
16609 {
16610 switch(type)
16611 {
16612 case IPT_BUTTON1: return BTN1 "Fire";
16613 } /* end of switch */
16614
16615 return joy4way_labels(type);
16616 }
16617
16618 const struct ControlInfo toobin_ctrl =
16619 {
16620 false, /* 45_degree_rotation for joystick(s) */
16621 false, /* alternating_controls */
16622 true, /* mirrored_controls */
16623 "The buttons are arranged in a flattened pentagon shape, with the point on the bottom. The throw button is the bottom point, above that are the two forward buttons, and the two back buttons on the top. The original CP used the throw button also as the start /* control_details */ Mame has a seperate 'start' button, but both mame's 'throw' and 'start' buttons throw and start. Mame labels the five buttons a little differently than the original CP: 'throw', 'R Paddle Forward', 'L Paddle Forward', 'L Paddle Backward', and 'R Paddle backward'.", /* control_details */
16624 &toobin_get_ctrl_name
16625 };
16626
toobin_get_ctrl_name(int type)16627 const char *toobin_get_ctrl_name(int type)
16628 {
16629 switch(type)
16630 {
16631 case IPT_BUTTON1: return BTN1 "Throw Can / Start";
16632 case IPT_BUTTON2: return BTN2 "Paddle Forward (Right)";
16633 case IPT_BUTTON3: return BTN3 "Paddle Forward (Left)";
16634 case IPT_BUTTON4: return BTN4 "Back Paddle (Left)";
16635 case IPT_BUTTON5: return BTN5 "Back Paddle (Right)";
16636 } /* end of switch */
16637
16638 return "";
16639 }
16640
16641 const struct ControlInfo topspeed_ctrl =
16642 {
16643 false, /* 45_degree_rotation for joystick(s) */
16644 false, /* alternating_controls */
16645 false, /* mirrored_controls */
16646 "This game has a ton of extra inputs that show up do to a digital hack. Ignore them as buttons 1-4 is all you need.", /* control_details */
16647 &topspeed_get_ctrl_name
16648 };
16649
topspeed_get_ctrl_name(int type)16650 const char *topspeed_get_ctrl_name(int type)
16651 {
16652 switch(type)
16653 {
16654 case IPT_BUTTON1: return BTN1 "Accelerate";
16655 case IPT_BUTTON2: return BTN2 "Brake";
16656 case IPT_BUTTON3: return BTN3 "Nitro";
16657 case IPT_BUTTON4: return BTN4 "Hi / Lo";
16658 case IPT_PADDLE: return "Left";
16659 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
16660 } /* end of switch */
16661
16662 return "";
16663 }
16664
16665 const struct ControlInfo totcarn_ctrl =
16666 {
16667 false, /* 45_degree_rotation for joystick(s) */
16668 false, /* alternating_controls */
16669 true, /* mirrored_controls */
16670 "The start button is used in the game to speed up or skip hints, and to place mines/bombs.", /* control_details */
16671 &totcarn_get_ctrl_name
16672 };
16673
totcarn_get_ctrl_name(int type)16674 const char *totcarn_get_ctrl_name(int type)
16675 {
16676 switch(type)
16677 {
16678 case IPT_JOYSTICKLEFT_UP: return "Move Up";
16679 case IPT_JOYSTICKLEFT_DOWN: return "Move Down";
16680 case IPT_JOYSTICKLEFT_LEFT: return "Move Left";
16681 case IPT_JOYSTICKLEFT_RIGHT: return "Move Right";
16682 case IPT_JOYSTICKRIGHT_UP: return "Fire Up";
16683 case IPT_JOYSTICKRIGHT_DOWN: return "Fire Down";
16684 case IPT_JOYSTICKRIGHT_LEFT: return "Fire Left";
16685 case IPT_JOYSTICKRIGHT_RIGHT: return "Fire Right";
16686 } /* end of switch */
16687
16688 return "";
16689 }
16690
16691 const struct ControlInfo tdfever_ctrl =
16692 {
16693 false, /* 45_degree_rotation for joystick(s) */
16694 false, /* alternating_controls */
16695 true, /* mirrored_controls */
16696 "You'll usually only see a two player version of this game as the 4 player used a specialized cocktail cabinet.", /* control_details */
16697 &tdfever_get_ctrl_name
16698 };
16699
tdfever_get_ctrl_name(int type)16700 const char *tdfever_get_ctrl_name(int type)
16701 {
16702 switch(type)
16703 {
16704 case IPT_BUTTON1: return BTN1 "Run";
16705 case IPT_BUTTON2: return BTN2 "Pass";
16706 case IPT_DIAL: return "Rotate Left";
16707 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
16708 } /* end of switch */
16709
16710 return joy4way_labels(type);
16711 }
16712
16713 const struct ControlInfo toypop_ctrl =
16714 {
16715 false, /* 45_degree_rotation for joystick(s) */
16716 false, /* alternating_controls */
16717 true, /* mirrored_controls */
16718 "The only know control panel image of this game shows two trivia style buttons labeled 'shoot' on either side of the joysticks. Of course this is just a mirrored layout.", /* control_details */
16719 &toypop_get_ctrl_name
16720 };
16721
toypop_get_ctrl_name(int type)16722 const char *toypop_get_ctrl_name(int type)
16723 {
16724 switch(type)
16725 {
16726 case IPT_BUTTON1: return BTN1 "Shoot";
16727 } /* end of switch */
16728
16729 return joy4way_labels(type);
16730 }
16731
16732 const struct ControlInfo trackfld_ctrl =
16733 {
16734 false, /* 45_degree_rotation for joystick(s) */
16735 false, /* alternating_controls */
16736 true, /* mirrored_controls */
16737 "", /* control_details */
16738 &trackfld_get_ctrl_name
16739 };
16740
trackfld_get_ctrl_name(int type)16741 const char *trackfld_get_ctrl_name(int type)
16742 {
16743 switch(type)
16744 {
16745 case IPT_BUTTON1: return BTN1 "Run";
16746 case IPT_BUTTON2: return BTN2 "Jump/Throw";
16747 case IPT_BUTTON3: return BTN3 "Run";
16748 } /* end of switch */
16749
16750 return "";
16751 }
16752
16753 const struct ControlInfo tranqgun_ctrl =
16754 {
16755 false, /* 45_degree_rotation for joystick(s) */
16756 true, /* alternating_controls */
16757 true, /* mirrored_controls */
16758 "", /* control_details */
16759 &tranqgun_get_ctrl_name
16760 };
16761
tranqgun_get_ctrl_name(int type)16762 const char *tranqgun_get_ctrl_name(int type)
16763 {
16764 switch(type)
16765 {
16766 case IPT_BUTTON1: return BTN1 "Fire";
16767 } /* end of switch */
16768
16769 return joy4way_labels(type);
16770 }
16771
16772 const struct ControlInfo trisport_ctrl =
16773 {
16774 false, /* 45_degree_rotation for joystick(s) */
16775 true, /* alternating_controls */
16776 true, /* mirrored_controls */
16777 "", /* control_details */
16778 &trisport_get_ctrl_name
16779 };
16780
trisport_get_ctrl_name(int type)16781 const char *trisport_get_ctrl_name(int type)
16782 {
16783 switch(type)
16784 {
16785 case IPT_BUTTON1: return BTN1 "Set / Start";
16786 case IPT_BUTTON2: return BTN2 "Select";
16787 case IPT_TRACKBALL_X: return "Left";
16788 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
16789 case IPT_TRACKBALL_Y: return "Up";
16790 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
16791 } /* end of switch */
16792
16793 return "";
16794 }
16795
16796 const struct ControlInfo triplhnt_ctrl =
16797 {
16798 false, /* 45_degree_rotation for joystick(s) */
16799 false, /* alternating_controls */
16800 false, /* mirrored_controls */
16801 "This lightgun is actually a shotgun mounted to the cabinet.", /* control_details */
16802 &triplhnt_get_ctrl_name
16803 };
16804
triplhnt_get_ctrl_name(int type)16805 const char *triplhnt_get_ctrl_name(int type)
16806 {
16807 switch(type)
16808 {
16809 case IPT_BUTTON1: return BTN1 "Fire";
16810 case IPT_LIGHTGUN_X: return "Aim Left";
16811 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
16812 case IPT_LIGHTGUN_Y: return "Aim Up";
16813 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
16814 } /* end of switch */
16815
16816 return "";
16817 }
16818
16819 const struct ControlInfo statriv2_ctrl =
16820 {
16821 false, /* 45_degree_rotation for joystick(s) */
16822 false, /* alternating_controls */
16823 false, /* mirrored_controls */
16824 "The game also has two 'play 1000' buttons defined in mame. These appear to be service buttons to change the question packs.", /* control_details */
16825 &statriv2_get_ctrl_name
16826 };
16827
statriv2_get_ctrl_name(int type)16828 const char *statriv2_get_ctrl_name(int type)
16829 {
16830 switch(type)
16831 {
16832 case IPT_BUTTON1: return BTN1 "A";
16833 case IPT_BUTTON2: return BTN2 "B";
16834 case IPT_BUTTON3: return BTN3 "C";
16835 case IPT_BUTTON4: return BTN4 "D";
16836 } /* end of switch */
16837
16838 return "";
16839 }
16840
16841 const struct ControlInfo gtsers8_ctrl =
16842 {
16843 false, /* 45_degree_rotation for joystick(s) */
16844 true, /* alternating_controls */
16845 true, /* mirrored_controls */
16846 "The lighted trivia buttons are actually blank, as is the control panel overlay. There are labeled arrows on the screen that point to the appropriate button. (Note: even though all sources, evne the original game machines point ot alternating 2 player gameplay, it doesn't seem to work in mame... it's probably a bug.)", /* control_details */
16847 >sers8_get_ctrl_name
16848 };
16849
gtsers8_get_ctrl_name(int type)16850 const char *gtsers8_get_ctrl_name(int type)
16851 {
16852 switch(type)
16853 {
16854 case IPT_BUTTON1: return BTN1 "1";
16855 case IPT_BUTTON2: return BTN2 "2";
16856 case IPT_BUTTON3: return BTN3 "3";
16857 case IPT_BUTTON4: return BTN4 "4";
16858 case IPT_BUTTON5: return BTN5 "5";
16859 } /* end of switch */
16860
16861 return "";
16862 }
16863
16864 const struct ControlInfo gt507uk_ctrl =
16865 {
16866 false, /* 45_degree_rotation for joystick(s) */
16867 true, /* alternating_controls */
16868 true, /* mirrored_controls */
16869 "The lighted trivia buttons are actually blank, as is the control panel overlay. There are labeled arrows on the screen that point to the appropriate button. (Note: even though all sources, evne the original game machines point ot alternating 2 player gameplay, it doesn't seem to work in mame... it's probably a bug.)", /* control_details */
16870 >507uk_get_ctrl_name
16871 };
16872
gt507uk_get_ctrl_name(int type)16873 const char *gt507uk_get_ctrl_name(int type)
16874 {
16875 switch(type)
16876 {
16877 case IPT_BUTTON1: return BTN1 "1";
16878 case IPT_BUTTON2: return BTN2 "2";
16879 case IPT_BUTTON3: return BTN3 "3";
16880 case IPT_BUTTON4: return BTN4 "4";
16881 case IPT_BUTTON5: return BTN5 "5";
16882 } /* end of switch */
16883
16884 return "";
16885 }
16886
16887 const struct ControlInfo gt5_ctrl =
16888 {
16889 false, /* 45_degree_rotation for joystick(s) */
16890 true, /* alternating_controls */
16891 true, /* mirrored_controls */
16892 "The lighted trivia buttons are actually blank, as is the control panel overlay. There are labeled arrows on the screen that point to the appropriate button. (Note: even though all sources, evne the original game machines point ot alternating 2 player gameplay, it doesn't seem to work in mame... it's probably a bug.)", /* control_details */
16893 >5_get_ctrl_name
16894 };
16895
gt5_get_ctrl_name(int type)16896 const char *gt5_get_ctrl_name(int type)
16897 {
16898 switch(type)
16899 {
16900 case IPT_BUTTON1: return BTN1 "1";
16901 case IPT_BUTTON2: return BTN2 "2";
16902 case IPT_BUTTON3: return BTN3 "3";
16903 case IPT_BUTTON4: return BTN4 "4";
16904 case IPT_BUTTON5: return BTN5 "5";
16905 } /* end of switch */
16906
16907 return "";
16908 }
16909
16910 const struct ControlInfo trvgns_ctrl =
16911 {
16912 false, /* 45_degree_rotation for joystick(s) */
16913 true, /* alternating_controls */
16914 true, /* mirrored_controls */
16915 "The lighted trivia buttons are actually blank, as is the contorl panel overlay. The game itself has arrows pointing down to the appropriate button. Also note that buttons a-d also act as the star buttons, again with an arrow pointing towards which is which. (A = 1 player game, B= 2 players, ect)", /* control_details */
16916 &trvgns_get_ctrl_name
16917 };
16918
trvgns_get_ctrl_name(int type)16919 const char *trvgns_get_ctrl_name(int type)
16920 {
16921 switch(type)
16922 {
16923 case IPT_BUTTON1: return BTN1 "A";
16924 case IPT_BUTTON2: return BTN2 "B";
16925 case IPT_BUTTON3: return BTN3 "C";
16926 case IPT_BUTTON4: return BTN4 "D";
16927 } /* end of switch */
16928
16929 return "";
16930 }
16931
16932 const struct ControlInfo triviasp_ctrl =
16933 {
16934 false, /* 45_degree_rotation for joystick(s) */
16935 true, /* alternating_controls */
16936 true, /* mirrored_controls */
16937 "When a question is asked, a possible answer is displayed. You either press correct to select the given answer, or press incorrect until the correct answer is displayed and then press correct to confirm. Mame has a bunch of extra inputs defined, but all you should be concerned with are the 'red' (incorrect) and 'green' (correct) buttons.", /* control_details */
16938 &triviasp_get_ctrl_name
16939 };
16940
triviasp_get_ctrl_name(int type)16941 const char *triviasp_get_ctrl_name(int type)
16942 {
16943 switch(type)
16944 {
16945 case IPT_BUTTON1: return BTN1 "Correct";
16946 case IPT_BUTTON2: return BTN2 "Incorrect";
16947 } /* end of switch */
16948
16949 return "";
16950 }
16951
16952 const struct ControlInfo triviabb_ctrl =
16953 {
16954 false, /* 45_degree_rotation for joystick(s) */
16955 true, /* alternating_controls */
16956 true, /* mirrored_controls */
16957 "When a question is asked, a possible answer is displayed. You either press correct to select the given answer, or press incorrect until the correct answer is displayed and then press correct to confirm. Mame has a bunch of extra inputs defined, but all you should be concerned with are the 'red' (incorrect) and 'green' (correct) buttons.", /* control_details */
16958 &triviabb_get_ctrl_name
16959 };
16960
triviabb_get_ctrl_name(int type)16961 const char *triviabb_get_ctrl_name(int type)
16962 {
16963 switch(type)
16964 {
16965 case IPT_BUTTON1: return BTN1 "Correct";
16966 case IPT_BUTTON2: return BTN2 "Incorrect";
16967 } /* end of switch */
16968
16969 return "";
16970 }
16971
16972 const struct ControlInfo triviag1_ctrl =
16973 {
16974 false, /* 45_degree_rotation for joystick(s) */
16975 true, /* alternating_controls */
16976 true, /* mirrored_controls */
16977 "When a question is asked, a possible answer is displayed. You either press correct to select the given answer, or press incorrect until the correct answer is displayed and then press correct to confirm. Mame has a bunch of extra inputs defined, but all you should be concerned with are the 'red' (incorrect) and 'green' (correct) buttons.", /* control_details */
16978 &triviag1_get_ctrl_name
16979 };
16980
triviag1_get_ctrl_name(int type)16981 const char *triviag1_get_ctrl_name(int type)
16982 {
16983 switch(type)
16984 {
16985 case IPT_BUTTON1: return BTN1 "Correct";
16986 case IPT_BUTTON2: return BTN2 "Incorrect";
16987 } /* end of switch */
16988
16989 return "";
16990 }
16991
16992 const struct ControlInfo triviag2_ctrl =
16993 {
16994 false, /* 45_degree_rotation for joystick(s) */
16995 true, /* alternating_controls */
16996 true, /* mirrored_controls */
16997 "When a question is asked, a possible answer is displayed. You either press correct to select the given answer, or press incorrect until the correct answer is displayed and then press correct to confirm. Mame has a bunch of extra inputs defined, but all you should be concerned with are the 'red' (incorrect) and 'green' (correct) buttons.", /* control_details */
16998 &triviag2_get_ctrl_name
16999 };
17000
triviag2_get_ctrl_name(int type)17001 const char *triviag2_get_ctrl_name(int type)
17002 {
17003 switch(type)
17004 {
17005 case IPT_BUTTON1: return BTN1 "Correct";
17006 case IPT_BUTTON2: return BTN2 "Incorrect";
17007 } /* end of switch */
17008
17009 return "";
17010 }
17011
17012 const struct ControlInfo triviayp_ctrl =
17013 {
17014 false, /* 45_degree_rotation for joystick(s) */
17015 true, /* alternating_controls */
17016 true, /* mirrored_controls */
17017 "When a question is asked, a possible answer is displayed. You either press correct to select the given answer, or press incorrect until the correct answer is displayed and then press correct to confirm. Mame has a bunch of extra inputs defined, but all you should be concerned with are the 'red' (incorrect) and 'green' (correct) buttons.", /* control_details */
17018 &triviayp_get_ctrl_name
17019 };
17020
triviayp_get_ctrl_name(int type)17021 const char *triviayp_get_ctrl_name(int type)
17022 {
17023 switch(type)
17024 {
17025 case IPT_BUTTON1: return BTN1 "Correct";
17026 case IPT_BUTTON2: return BTN2 "Incorrect";
17027 } /* end of switch */
17028
17029 return "";
17030 }
17031
17032 const struct ControlInfo trojan_ctrl =
17033 {
17034 false, /* 45_degree_rotation for joystick(s) */
17035 true, /* alternating_controls */
17036 true, /* mirrored_controls */
17037 "Tatakai no Banka/Trojan features an 8-way joystick, two action buttons, and alternating two-player gamepay.", /* control_details */
17038 &trojan_get_ctrl_name
17039 };
17040
trojan_get_ctrl_name(int type)17041 const char *trojan_get_ctrl_name(int type)
17042 {
17043 switch(type)
17044 {
17045 case IPT_BUTTON1: return BTN1 "Sword/Punch";
17046 case IPT_BUTTON2: return BTN1 "Shield/Kick";
17047 } /* end of switch */
17048
17049 return joy4way_labels(type);
17050 }
17051
17052 const struct ControlInfo trog_ctrl =
17053 {
17054 false, /* 45_degree_rotation for joystick(s) */
17055 false, /* alternating_controls */
17056 true, /* mirrored_controls */
17057 "Like many 4 player games, which character you choose determines which controls you'll use and vice-versa.", /* control_details */
17058 &trog_get_ctrl_name
17059 };
17060
trog_get_ctrl_name(int type)17061 const char *trog_get_ctrl_name(int type)
17062 {
17063 switch(type)
17064 {
17065 case IPT_BUTTON1: return BTN1 "Punch";
17066 } /* end of switch */
17067
17068 return joy4way_labels(type);
17069 }
17070
17071 const struct ControlInfo tron_ctrl =
17072 {
17073 false, /* 45_degree_rotation for joystick(s) */
17074 true, /* alternating_controls */
17075 true, /* mirrored_controls */
17076 "The joystick in this game was unique. It was an 8-way leaf joystick with a larqe actuator and a diagonal 4-way restrictor making it possible (but difficult) to hit the diagonals. The 4-way mode was useful for the Tanks stage, and necessary for the Light Cycle stage. Controls worked as follows: Light Cycles: The joystick controls the direction of travel and the trigger controls the speed of the bike. Grid Bugs: The stick controls the movement of your character and the spinner controls the direction of fire. Tanks: The stick controls the movement of your tank and the spinner controls the direction of fire. MCP Cone: The stick controls the movement of your character and the spinner controls the direction of fire.", /* control_details */
17077 &tron_get_ctrl_name
17078 };
17079
tron_get_ctrl_name(int type)17080 const char *tron_get_ctrl_name(int type)
17081 {
17082 switch(type)
17083 {
17084 case IPT_BUTTON1: return BTN1 "Fire";
17085 case IPT_DIAL: return "Aim Left";
17086 case (IPT_DIAL + IPT_EXTENSION): return "Aim Right";
17087 } /* end of switch */
17088
17089 return joy4way_labels(type);
17090 }
17091
17092 const struct ControlInfo tubep_ctrl =
17093 {
17094 false, /* 45_degree_rotation for joystick(s) */
17095 true, /* alternating_controls */
17096 true, /* mirrored_controls */
17097 "this game doesn't have any labels.", /* control_details */
17098 &tubep_get_ctrl_name
17099 };
17100
tubep_get_ctrl_name(int type)17101 const char *tubep_get_ctrl_name(int type)
17102 {
17103 switch(type)
17104 {
17105 case IPT_BUTTON1: return BTN1 "Fire";
17106 } /* end of switch */
17107
17108 return joy4way_labels(type);
17109 }
17110
17111 const struct ControlInfo tunhunt_ctrl =
17112 {
17113 false, /* 45_degree_rotation for joystick(s) */
17114 false, /* alternating_controls */
17115 false, /* mirrored_controls */
17116 "", /* control_details */
17117 &tunhunt_get_ctrl_name
17118 };
17119
tunhunt_get_ctrl_name(int type)17120 const char *tunhunt_get_ctrl_name(int type)
17121 {
17122 switch(type)
17123 {
17124 case IPT_BUTTON1: return BTN1 "Fire";
17125 case IPT_BUTTON2: return BTN2 "Shield";
17126 case IPT_AD_STICK_X: return "Left";
17127 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
17128 case IPT_AD_STICK_Y: return "Up";
17129 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
17130 } /* end of switch */
17131
17132 return "";
17133 }
17134
17135 const struct ControlInfo turbo_ctrl =
17136 {
17137 false, /* 45_degree_rotation for joystick(s) */
17138 false, /* alternating_controls */
17139 false, /* mirrored_controls */
17140 "The shifter doesn't appear to work properly. The lo button seems to act more like a brake than anything else even though the game doesn't have a brake. The hi button toggles gears.", /* control_details */
17141 &turbo_get_ctrl_name
17142 };
17143
turbo_get_ctrl_name(int type)17144 const char *turbo_get_ctrl_name(int type)
17145 {
17146 switch(type)
17147 {
17148 case IPT_BUTTON1: return BTN1 "Accelerate";
17149 case IPT_BUTTON2: return BTN2 "Lo";
17150 case IPT_BUTTON3: return BTN3 "Hi";
17151 case IPT_DIAL: return "Left";
17152 case (IPT_DIAL + IPT_EXTENSION): return "Right";
17153 } /* end of switch */
17154
17155 return "";
17156 }
17157
17158 const struct ControlInfo turbofrc_ctrl =
17159 {
17160 false, /* 45_degree_rotation for joystick(s) */
17161 false, /* alternating_controls */
17162 true, /* mirrored_controls */
17163 "3rd player in mame not working??", /* control_details */
17164 &turbofrc_get_ctrl_name
17165 };
17166
turbofrc_get_ctrl_name(int type)17167 const char *turbofrc_get_ctrl_name(int type)
17168 {
17169 switch(type)
17170 {
17171 case IPT_BUTTON1: return BTN1 "Fire";
17172 } /* end of switch */
17173
17174 return joy4way_labels(type);
17175 }
17176
17177 const struct ControlInfo toutrun_ctrl =
17178 {
17179 false, /* 45_degree_rotation for joystick(s) */
17180 false, /* alternating_controls */
17181 false, /* mirrored_controls */
17182 "The shifter has a side button for turbo, thus the name of the game.", /* control_details */
17183 &toutrun_get_ctrl_name
17184 };
17185
toutrun_get_ctrl_name(int type)17186 const char *toutrun_get_ctrl_name(int type)
17187 {
17188 switch(type)
17189 {
17190 case IPT_BUTTON1: return BTN1 "High / Low";
17191 case IPT_BUTTON2: return BTN2 "Turbo";
17192 case IPT_PADDLE: return "Left";
17193 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
17194 case IPT_PEDAL: return "Accelerate";
17195 case IPT_PEDAL2: return "Brake";
17196 } /* end of switch */
17197
17198 return "";
17199 }
17200
17201 const struct ControlInfo tshoot_ctrl =
17202 {
17203 false, /* 45_degree_rotation for joystick(s) */
17204 true, /* alternating_controls */
17205 true, /* mirrored_controls */
17206 "The Grenade Button is actually mounted on top of the machine gun. Technically it counts as a part of the gun, but the button itself is a stock lighted button. This game had an interesting gimmick where feathers were blown in front of the screen between two layers of plexi if a round was successful. Somone should take advantage of mame's switchable artwork system and re-create this effect via a series of feather animations.", /* control_details */
17207 &tshoot_get_ctrl_name
17208 };
17209
tshoot_get_ctrl_name(int type)17210 const char *tshoot_get_ctrl_name(int type)
17211 {
17212 switch(type)
17213 {
17214 case IPT_BUTTON1: return BTN1 "Fire";
17215 case IPT_BUTTON2: return BTN2 "Grenade";
17216 case IPT_BUTTON3: return BTN3 "Gobble!";
17217 case IPT_LIGHTGUN_X: return "Aim Left";
17218 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
17219 case IPT_LIGHTGUN_Y: return "Aim Up";
17220 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
17221 } /* end of switch */
17222
17223 return "";
17224 }
17225
17226 const struct ControlInfo tutankhm_ctrl =
17227 {
17228 false, /* 45_degree_rotation for joystick(s) */
17229 true, /* alternating_controls */
17230 true, /* mirrored_controls */
17231 "The fire buttons are actually supposed to be a 2 way joystick, but for whatever reason, the mame driver sets them as buttons.", /* control_details */
17232 &tutankhm_get_ctrl_name
17233 };
17234
tutankhm_get_ctrl_name(int type)17235 const char *tutankhm_get_ctrl_name(int type)
17236 {
17237 switch(type)
17238 {
17239 case IPT_BUTTON1: return BTN1 "Fire Left";
17240 case IPT_BUTTON2: return BTN2 "Fire Right";
17241 case IPT_BUTTON3: return BTN3 "Flash";
17242 } /* end of switch */
17243
17244 return joy4way_labels(type);
17245 }
17246
17247 const struct ControlInfo twincobr_ctrl =
17248 {
17249 false, /* 45_degree_rotation for joystick(s) */
17250 false, /* alternating_controls */
17251 true, /* mirrored_controls */
17252 "", /* control_details */
17253 &twincobr_get_ctrl_name
17254 };
17255
twincobr_get_ctrl_name(int type)17256 const char *twincobr_get_ctrl_name(int type)
17257 {
17258 switch(type)
17259 {
17260 case IPT_BUTTON1: return BTN1 "Fire";
17261 case IPT_BUTTON2: return BTN2 "Bomb";
17262 } /* end of switch */
17263
17264 return joy4way_labels(type);
17265 }
17266
17267 const struct ControlInfo twineagl_ctrl =
17268 {
17269 false, /* 45_degree_rotation for joystick(s) */
17270 false, /* alternating_controls */
17271 true, /* mirrored_controls */
17272 "The conversion kit came with ?Button? and ?Missile? labels even though the flyer and the conversion manual state they are ?Bomb? and ?Missile? buttons", /* control_details */
17273 &twineagl_get_ctrl_name
17274 };
17275
twineagl_get_ctrl_name(int type)17276 const char *twineagl_get_ctrl_name(int type)
17277 {
17278 switch(type)
17279 {
17280 case IPT_BUTTON1: return BTN1 "Missile";
17281 case IPT_BUTTON2: return BTN2 "Bomb";
17282 } /* end of switch */
17283
17284 return joy4way_labels(type);
17285 }
17286
17287 const struct ControlInfo twineag2_ctrl =
17288 {
17289 false, /* 45_degree_rotation for joystick(s) */
17290 false, /* alternating_controls */
17291 true, /* mirrored_controls */
17292 "", /* control_details */
17293 &twineag2_get_ctrl_name
17294 };
17295
twineag2_get_ctrl_name(int type)17296 const char *twineag2_get_ctrl_name(int type)
17297 {
17298 switch(type)
17299 {
17300 case IPT_BUTTON1: return BTN1 "Fire";
17301 case IPT_BUTTON2: return BTN2 "Bomb";
17302 case IPT_BUTTON3: return BTN3 "Special";
17303 } /* end of switch */
17304
17305 return joy4way_labels(type);
17306 }
17307
17308 const struct ControlInfo twotiger_ctrl =
17309 {
17310 false, /* 45_degree_rotation for joystick(s) */
17311 false, /* alternating_controls */
17312 true, /* mirrored_controls */
17313 "Mame used to incorrectly define this game as a spinner. Now it properly shows up as a one-axis yoke. The 'misc' entry was added to show that it doesn't use the traditional star wars, 2-axis yoke. The three player start button selects dogfight mode.", /* control_details */
17314 &twotiger_get_ctrl_name
17315 };
17316
twotiger_get_ctrl_name(int type)17317 const char *twotiger_get_ctrl_name(int type)
17318 {
17319 switch(type)
17320 {
17321 case IPT_BUTTON1: return BTN1 "Shoot";
17322 case IPT_BUTTON2: return BTN2 "Bomb";
17323 case IPT_BUTTON3: return BTN3 "Speed";
17324 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Right";
17325 case IPT_AD_STICK_X: return "Left";
17326 case IPT_AD_STICK_Y: return "";
17327 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "";
17328 } /* end of switch */
17329
17330 return "";
17331 }
17332
17333 const struct ControlInfo earthjkr_ctrl =
17334 {
17335 false, /* 45_degree_rotation for joystick(s) */
17336 false, /* alternating_controls */
17337 true, /* mirrored_controls */
17338 "Hold down A to increase shot power", /* control_details */
17339 &earthjkr_get_ctrl_name
17340 };
17341
earthjkr_get_ctrl_name(int type)17342 const char *earthjkr_get_ctrl_name(int type)
17343 {
17344 switch(type)
17345 {
17346 case IPT_BUTTON1: return BTN1 "A-Shoot";
17347 case IPT_BUTTON2: return BTN2 "B-Bomb";
17348 } /* end of switch */
17349
17350 return joy4way_labels(type);
17351 }
17352
17353 const struct ControlInfo unsquad_ctrl =
17354 {
17355 false, /* 45_degree_rotation for joystick(s) */
17356 false, /* alternating_controls */
17357 true, /* mirrored_controls */
17358 "", /* control_details */
17359 &unsquad_get_ctrl_name
17360 };
17361
unsquad_get_ctrl_name(int type)17362 const char *unsquad_get_ctrl_name(int type)
17363 {
17364 switch(type)
17365 {
17366 case IPT_BUTTON1: return BTN1 "Fire";
17367 case IPT_BUTTON2: return BTN2 "Special Weapon";
17368 } /* end of switch */
17369
17370 return joy4way_labels(type);
17371 }
17372
17373 const struct ControlInfo vball_ctrl =
17374 {
17375 false, /* 45_degree_rotation for joystick(s) */
17376 false, /* alternating_controls */
17377 true, /* mirrored_controls */
17378 "A hits the ball and B jumps.", /* control_details */
17379 &vball_get_ctrl_name
17380 };
17381
vball_get_ctrl_name(int type)17382 const char *vball_get_ctrl_name(int type)
17383 {
17384 switch(type)
17385 {
17386 case IPT_BUTTON1: return BTN1 "A";
17387 case IPT_BUTTON2: return BTN2 "B";
17388 } /* end of switch */
17389
17390 return joy4way_labels(type);
17391 }
17392
17393 const struct ControlInfo usclssic_ctrl =
17394 {
17395 false, /* 45_degree_rotation for joystick(s) */
17396 true, /* alternating_controls */
17397 true, /* mirrored_controls */
17398 "", /* control_details */
17399 &usclssic_get_ctrl_name
17400 };
17401
usclssic_get_ctrl_name(int type)17402 const char *usclssic_get_ctrl_name(int type)
17403 {
17404 switch(type)
17405 {
17406 case IPT_BUTTON1: return BTN1 "Select Club";
17407 case IPT_TRACKBALL_X: return "Left";
17408 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
17409 case IPT_TRACKBALL_Y: return "Up";
17410 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
17411 } /* end of switch */
17412
17413 return "";
17414 }
17415
17416 const struct ControlInfo ultratnk_ctrl =
17417 {
17418 false, /* 45_degree_rotation for joystick(s) */
17419 false, /* alternating_controls */
17420 true, /* mirrored_controls */
17421 "", /* control_details */
17422 &ultratnk_get_ctrl_name
17423 };
17424
ultratnk_get_ctrl_name(int type)17425 const char *ultratnk_get_ctrl_name(int type)
17426 {
17427 switch(type)
17428 {
17429 case IPT_BUTTON1: return BTN1 "Fire";
17430 case IPT_JOYSTICKLEFT_UP: return "Up";
17431 case IPT_JOYSTICKLEFT_DOWN: return "Down";
17432 case IPT_JOYSTICKRIGHT_UP: return "Up";
17433 case IPT_JOYSTICKRIGHT_DOWN: return "Down";
17434 } /* end of switch */
17435
17436 return "";
17437 }
17438
17439 const struct ControlInfo utoukond_ctrl =
17440 {
17441 false, /* 45_degree_rotation for joystick(s) */
17442 false, /* alternating_controls */
17443 true, /* mirrored_controls */
17444 "", /* control_details */
17445 &utoukond_get_ctrl_name
17446 };
17447
utoukond_get_ctrl_name(int type)17448 const char *utoukond_get_ctrl_name(int type)
17449 {
17450 switch(type)
17451 {
17452 case IPT_BUTTON1: return BTN1 "Attack";
17453 case IPT_BUTTON2: return BTN2 "Jump";
17454 case IPT_BUTTON3: return BTN3 "Bomb";
17455 } /* end of switch */
17456
17457 return joy4way_labels(type);
17458 }
17459
17460 const struct ControlInfo undrfire_ctrl =
17461 {
17462 false, /* 45_degree_rotation for joystick(s) */
17463 false, /* alternating_controls */
17464 true, /* mirrored_controls */
17465 "The guns second buton is a shotgun pump.", /* control_details */
17466 &undrfire_get_ctrl_name
17467 };
17468
undrfire_get_ctrl_name(int type)17469 const char *undrfire_get_ctrl_name(int type)
17470 {
17471 switch(type)
17472 {
17473 case IPT_BUTTON1: return BTN1 "Fire";
17474 case IPT_BUTTON2: return BTN2 "Bomb";
17475 case IPT_LIGHTGUN_X: return "Aim Left";
17476 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Aim Right";
17477 case IPT_LIGHTGUN_Y: return "Aim Up";
17478 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Aim Down";
17479 } /* end of switch */
17480
17481 return "";
17482 }
17483
17484 const struct ControlInfo uniwars_ctrl =
17485 {
17486 false, /* 45_degree_rotation for joystick(s) */
17487 true, /* alternating_controls */
17488 true, /* mirrored_controls */
17489 "", /* control_details */
17490 &uniwars_get_ctrl_name
17491 };
17492
uniwars_get_ctrl_name(int type)17493 const char *uniwars_get_ctrl_name(int type)
17494 {
17495 switch(type)
17496 {
17497 case IPT_BUTTON1: return BTN1 "Firing Button";
17498 case IPT_JOYSTICK_LEFT: return "Control Lever (Left)";
17499 case IPT_JOYSTICK_RIGHT: return "Control Lever (Right)";
17500 } /* end of switch */
17501
17502 return "";
17503 }
17504
17505 const struct ControlInfo upndown_ctrl =
17506 {
17507 false, /* 45_degree_rotation for joystick(s) */
17508 true, /* alternating_controls */
17509 true, /* mirrored_controls */
17510 "", /* control_details */
17511 &upndown_get_ctrl_name
17512 };
17513
upndown_get_ctrl_name(int type)17514 const char *upndown_get_ctrl_name(int type)
17515 {
17516 switch(type)
17517 {
17518 case IPT_BUTTON1: return BTN1 "Jump";
17519 } /* end of switch */
17520
17521 return joy4way_labels(type);
17522 }
17523
17524 const struct ControlInfo valkyrie_ctrl =
17525 {
17526 false, /* 45_degree_rotation for joystick(s) */
17527 false, /* alternating_controls */
17528 true, /* mirrored_controls */
17529 "Hold down attack button to use magic.", /* control_details */
17530 &valkyrie_get_ctrl_name
17531 };
17532
valkyrie_get_ctrl_name(int type)17533 const char *valkyrie_get_ctrl_name(int type)
17534 {
17535 switch(type)
17536 {
17537 case IPT_BUTTON1: return BTN1 "Attack";
17538 case IPT_BUTTON2: return BTN2 "Jump";
17539 case IPT_BUTTON3: return BTN3 "??";
17540 } /* end of switch */
17541
17542 return joy4way_labels(type);
17543 }
17544
17545 const struct ControlInfo vandyke_ctrl =
17546 {
17547 false, /* 45_degree_rotation for joystick(s) */
17548 false, /* alternating_controls */
17549 true, /* mirrored_controls */
17550 "", /* control_details */
17551 &vandyke_get_ctrl_name
17552 };
17553
vandyke_get_ctrl_name(int type)17554 const char *vandyke_get_ctrl_name(int type)
17555 {
17556 switch(type)
17557 {
17558 case IPT_BUTTON1: return BTN1 "Attack";
17559 case IPT_BUTTON2: return BTN2 "Jump";
17560 } /* end of switch */
17561
17562 return joy4way_labels(type);
17563 }
17564
17565 const struct ControlInfo vanguard_ctrl =
17566 {
17567 false, /* 45_degree_rotation for joystick(s) */
17568 true, /* alternating_controls */
17569 true, /* mirrored_controls */
17570 "The buttons on this control panel are arranged in a diamond shape. As each button fires in a different direction it is very difficult to play this game without a diamond patterened layout. Also the joystick is labeled control, but for obvious reasons the labels in this entry have the usual labeling.", /* control_details */
17571 &vanguard_get_ctrl_name
17572 };
17573
vanguard_get_ctrl_name(int type)17574 const char *vanguard_get_ctrl_name(int type)
17575 {
17576 switch(type)
17577 {
17578 case IPT_BUTTON1: return BTN1 "Fire Back";
17579 case IPT_BUTTON2: return BTN2 "Fire Forward";
17580 case IPT_BUTTON3: return BTN3 "Fire Down";
17581 case IPT_BUTTON4: return BTN4 "Fire Up";
17582 } /* end of switch */
17583
17584 return joy4way_labels(type);
17585 }
17586
17587 const struct ControlInfo varth_ctrl =
17588 {
17589 false, /* 45_degree_rotation for joystick(s) */
17590 false, /* alternating_controls */
17591 true, /* mirrored_controls */
17592 "", /* control_details */
17593 &varth_get_ctrl_name
17594 };
17595
varth_get_ctrl_name(int type)17596 const char *varth_get_ctrl_name(int type)
17597 {
17598 switch(type)
17599 {
17600 case IPT_BUTTON1: return BTN1 "Fire";
17601 case IPT_BUTTON2: return BTN2 "Special";
17602 } /* end of switch */
17603
17604 return joy4way_labels(type);
17605 }
17606
17607 const struct ControlInfo vendetta_ctrl =
17608 {
17609 false, /* 45_degree_rotation for joystick(s) */
17610 false, /* alternating_controls */
17611 true, /* mirrored_controls */
17612 "", /* control_details */
17613 &vendetta_get_ctrl_name
17614 };
17615
vendetta_get_ctrl_name(int type)17616 const char *vendetta_get_ctrl_name(int type)
17617 {
17618 switch(type)
17619 {
17620 case IPT_BUTTON1: return BTN1 "Punch";
17621 case IPT_BUTTON2: return BTN2 "Kick";
17622 } /* end of switch */
17623
17624 return joy4way_labels(type);
17625 }
17626
17627 const struct ControlInfo venture_ctrl =
17628 {
17629 false, /* 45_degree_rotation for joystick(s) */
17630 true, /* alternating_controls */
17631 true, /* mirrored_controls */
17632 "", /* control_details */
17633 &venture_get_ctrl_name
17634 };
17635
venture_get_ctrl_name(int type)17636 const char *venture_get_ctrl_name(int type)
17637 {
17638 switch(type)
17639 {
17640 case IPT_BUTTON1: return BTN1 "Fire";
17641 } /* end of switch */
17642
17643 return joy4way_labels(type);
17644 }
17645
17646 const struct ControlInfo victory_ctrl =
17647 {
17648 false, /* 45_degree_rotation for joystick(s) */
17649 true, /* alternating_controls */
17650 true, /* mirrored_controls */
17651 "The game used a tempest style spinner, three round lighted buttons for normal functions, and a large, rectangular, trivia-style button for the doomsday weapon activation.", /* control_details */
17652 &victory_get_ctrl_name
17653 };
17654
victory_get_ctrl_name(int type)17655 const char *victory_get_ctrl_name(int type)
17656 {
17657 switch(type)
17658 {
17659 case IPT_BUTTON1: return BTN1 "Fire";
17660 case IPT_BUTTON2: return BTN2 "Thrust";
17661 case IPT_BUTTON3: return BTN3 "Shields";
17662 case IPT_BUTTON4: return BTN4 "Doomsday";
17663 case IPT_DIAL: return "Rotate Left";
17664 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
17665 } /* end of switch */
17666
17667 return "";
17668 }
17669
17670 const struct ControlInfo victroad_ctrl =
17671 {
17672 false, /* 45_degree_rotation for joystick(s) */
17673 false, /* alternating_controls */
17674 true, /* mirrored_controls */
17675 "", /* control_details */
17676 &victroad_get_ctrl_name
17677 };
17678
victroad_get_ctrl_name(int type)17679 const char *victroad_get_ctrl_name(int type)
17680 {
17681 switch(type)
17682 {
17683 case IPT_BUTTON1: return BTN1 "Fire";
17684 case IPT_BUTTON2: return BTN2 "Grenade";
17685 case IPT_DIAL: return "Rotate Left";
17686 case (IPT_DIAL + IPT_EXTENSION): return "Rotate Right";
17687 } /* end of switch */
17688
17689 return joy4way_labels(type);
17690 }
17691
17692 const struct ControlInfo hustler_ctrl =
17693 {
17694 false, /* 45_degree_rotation for joystick(s) */
17695 true, /* alternating_controls */
17696 true, /* mirrored_controls */
17697 "The joystick is a twist joystick.", /* control_details */
17698 &hustler_get_ctrl_name
17699 };
17700
hustler_get_ctrl_name(int type)17701 const char *hustler_get_ctrl_name(int type)
17702 {
17703 switch(type)
17704 {
17705 case IPT_BUTTON1: return BTN1 "Shoot";
17706 } /* end of switch */
17707
17708 return joy2way_labels(type);
17709 }
17710
17711 const struct ControlInfo videopin_ctrl =
17712 {
17713 false, /* 45_degree_rotation for joystick(s) */
17714 true, /* alternating_controls */
17715 true, /* mirrored_controls */
17716 "This game had a control panel that repliactes real pinball controls. It even had a section you could nudge in the front and a plunger. The plunger appears to be digital, but since it really adds to the feel of the game, I tacked on the 'other' flag. The hardcoded defaults for the flippers are left ctrl and right ctrl. It is suggested that you place a videopin.ini in your personal ctrlr folder and remap them to match visual pinball defaults.", /* control_details */
17717 &videopin_get_ctrl_name
17718 };
17719
videopin_get_ctrl_name(int type)17720 const char *videopin_get_ctrl_name(int type)
17721 {
17722 switch(type)
17723 {
17724 case IPT_BUTTON1: return BTN1 "Left Flipper";
17725 case IPT_BUTTON2: return BTN2 "Right Flipper";
17726 case IPT_BUTTON3: return BTN3 "Nudge";
17727 case IPT_JOYSTICK_UP: return "";
17728 case IPT_JOYSTICK_DOWN: return "Pull plunger";
17729 } /* end of switch */
17730
17731 return "";
17732 }
17733
17734 const struct ControlInfo vigilant_ctrl =
17735 {
17736 false, /* 45_degree_rotation for joystick(s) */
17737 false, /* alternating_controls */
17738 true, /* mirrored_controls */
17739 "This game lacks labels for the buttons, even on the official cpo and in the manual. These are simply the actions they do. Trivia: The cpo of this game has 'I'm Bad!' graffiti on it which is a tribute to the game BadDudes, relased by the same company eariler that year. In that game the character would yell the phrase at the end of each level.", /* control_details */
17740 &vigilant_get_ctrl_name
17741 };
17742
vigilant_get_ctrl_name(int type)17743 const char *vigilant_get_ctrl_name(int type)
17744 {
17745 switch(type)
17746 {
17747 case IPT_BUTTON1: return BTN1 "Punch";
17748 case IPT_BUTTON2: return BTN2 "Kick";
17749 case IPT_JOYSTICK_UP: return "Jump";
17750 case IPT_JOYSTICK_DOWN: return "Duck";
17751 case IPT_JOYSTICK_LEFT: return "Left";
17752 case IPT_JOYSTICK_RIGHT: return "Right";
17753 } /* end of switch */
17754
17755 return "";
17756 }
17757
17758 const struct ControlInfo vimana_ctrl =
17759 {
17760 false, /* 45_degree_rotation for joystick(s) */
17761 false, /* alternating_controls */
17762 true, /* mirrored_controls */
17763 "If you hold the shoot button for a while you increase the spread of your bullets.", /* control_details */
17764 &vimana_get_ctrl_name
17765 };
17766
vimana_get_ctrl_name(int type)17767 const char *vimana_get_ctrl_name(int type)
17768 {
17769 switch(type)
17770 {
17771 case IPT_BUTTON1: return BTN1 "Shoot";
17772 case IPT_BUTTON2: return BTN2 "Circle Bomb";
17773 case IPT_BUTTON3: return BTN3 "??";
17774 } /* end of switch */
17775
17776 return joy4way_labels(type);
17777 }
17778
17779 const struct ControlInfo vindictr_ctrl =
17780 {
17781 false, /* 45_degree_rotation for joystick(s) */
17782 false, /* alternating_controls */
17783 true, /* mirrored_controls */
17784 "There are two button on each stick (trigger and thumb buttons). The thumb buttons are to rotate the tanks' turrent if you bought the ability to rotate (and it's not damaged). The right trigger is the normal fire button, the left trigger button is to fire the special weapon. If you have different types of special weapons, the start is used to switch between the different types. The odd numbered buttons are the triggers and the even numbered ones are the thumb switches for the left and right joysticks respectively. Note: If you have cheats enabled the game inputs are hacked to use a 4way joystick as the controls. There isn't an option to turn it off in the cheat menu, so if you wish to play the game correctly, turn cheats off.", /* control_details */
17785 &vindictr_get_ctrl_name
17786 };
17787
vindictr_get_ctrl_name(int type)17788 const char *vindictr_get_ctrl_name(int type)
17789 {
17790 switch(type)
17791 {
17792 case IPT_BUTTON1: return BTN1 "Special";
17793 case IPT_BUTTON2: return BTN2 "Rotate left";
17794 case IPT_BUTTON3: return BTN3 "Fire";
17795 case IPT_BUTTON4: return BTN4 "Rotate right";
17796 case IPT_JOYSTICKRIGHT_UP: return "Right forward";
17797 case IPT_JOYSTICKLEFT_DOWN: return "Left back";
17798 case IPT_JOYSTICKLEFT_UP: return "Left forward";
17799 case IPT_JOYSTICKRIGHT_DOWN: return "Right back";
17800 } /* end of switch */
17801
17802 return "";
17803 }
17804
17805 const struct ControlInfo vindctr2_ctrl =
17806 {
17807 false, /* 45_degree_rotation for joystick(s) */
17808 false, /* alternating_controls */
17809 true, /* mirrored_controls */
17810 "There are two button on each stick (trigger and thumb buttons). The thumb buttons are to rotate the tanks' turrent if you bought the ability to rotate (and it's not damaged). The right trigger is the normal fire button, the left trigger button is to fire the special weapon. If you have different types of special weapons, the start is used to switch between the different types. The odd numbered buttons are the trigger sticks and the even numbered ones are the thumbsticks on the left and right stck respectively.", /* control_details */
17811 &vindctr2_get_ctrl_name
17812 };
17813
vindctr2_get_ctrl_name(int type)17814 const char *vindctr2_get_ctrl_name(int type)
17815 {
17816 switch(type)
17817 {
17818 case IPT_BUTTON1: return BTN1 "special";
17819 case IPT_BUTTON2: return BTN2 "rotate left";
17820 case IPT_BUTTON3: return BTN3 "fire";
17821 case IPT_BUTTON4: return BTN4 "rotate right";
17822 case IPT_JOYSTICKRIGHT_UP: return "Right forward";
17823 case IPT_JOYSTICKLEFT_DOWN: return "Left back";
17824 case IPT_JOYSTICKLEFT_UP: return "Left forward";
17825 case IPT_JOYSTICKRIGHT_DOWN: return "Right back";
17826 } /* end of switch */
17827
17828 return "";
17829 }
17830
17831 const struct ControlInfo viofight_ctrl =
17832 {
17833 false, /* 45_degree_rotation for joystick(s) */
17834 false, /* alternating_controls */
17835 true, /* mirrored_controls */
17836 "As this game is a taito game, it is generally sold as a convrsion kit with the buttons mounted in a 'double dragon' layout with the punch/kick buttons at the bottom of the triangle. Pressing punch and jump at the smae time does a special move. Also the offical cpo doesn't have any labels for anything. This is based on parts of the manual and documentation for teh game.", /* control_details */
17837 &viofight_get_ctrl_name
17838 };
17839
viofight_get_ctrl_name(int type)17840 const char *viofight_get_ctrl_name(int type)
17841 {
17842 switch(type)
17843 {
17844 case IPT_BUTTON1: return BTN1 "Punch";
17845 case IPT_BUTTON2: return BTN2 "Jump";
17846 case IPT_BUTTON3: return BTN3 "Kick";
17847 } /* end of switch */
17848
17849 return joy4way_labels(type);
17850 }
17851
17852 const struct ControlInfo viper_ctrl =
17853 {
17854 false, /* 45_degree_rotation for joystick(s) */
17855 false, /* alternating_controls */
17856 false, /* mirrored_controls */
17857 "This game actually uses two trigger sticks that are mounted stationary on the montior, which moves as you pull on the sticks. As you pull, the area of the screen moves as well. This gives the illusion that you are manning a gun turrent. Each stick has two thumb buttons but there are only two inputs. To confuse things even more, both inputs do the same thing. (Fire)", /* control_details */
17858 &viper_get_ctrl_name
17859 };
17860
viper_get_ctrl_name(int type)17861 const char *viper_get_ctrl_name(int type)
17862 {
17863 switch(type)
17864 {
17865 case IPT_BUTTON1: return BTN1 "Fire";
17866 case IPT_BUTTON2: return BTN2 "Fire";
17867 case IPT_TRACKBALL_X: return "Left";
17868 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
17869 case IPT_TRACKBALL_Y: return "Up";
17870 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
17871 } /* end of switch */
17872
17873 return "";
17874 }
17875
17876 const struct ControlInfo vf_ctrl =
17877 {
17878 false, /* 45_degree_rotation for joystick(s) */
17879 false, /* alternating_controls */
17880 true, /* mirrored_controls */
17881 "Note that on a real vf cabinet the defense button was to the left adn slightly below the punch button. Those of you with neogeo layouts shoudl have not problem replicating the layout.", /* control_details */
17882 &vf_get_ctrl_name
17883 };
17884
vf_get_ctrl_name(int type)17885 const char *vf_get_ctrl_name(int type)
17886 {
17887 switch(type)
17888 {
17889 case IPT_BUTTON1: return BTN1 "Punch";
17890 case IPT_BUTTON2: return BTN2 "Kick";
17891 case IPT_BUTTON3: return BTN3 "Defense";
17892 } /* end of switch */
17893
17894 return joy4way_labels(type);
17895 }
17896
17897 const struct ControlInfo vf2_ctrl =
17898 {
17899 false, /* 45_degree_rotation for joystick(s) */
17900 false, /* alternating_controls */
17901 true, /* mirrored_controls */
17902 "Note that on a real vf2 cabinet the defense button was to the left adn slightly below the punch button. Those of you with neogeo layouts shoudl have not problem replicating the layout.", /* control_details */
17903 &vf2_get_ctrl_name
17904 };
17905
vf2_get_ctrl_name(int type)17906 const char *vf2_get_ctrl_name(int type)
17907 {
17908 switch(type)
17909 {
17910 case IPT_BUTTON1: return BTN1 "Punch";
17911 case IPT_BUTTON2: return BTN2 "Kick";
17912 case IPT_BUTTON3: return BTN3 "Defense";
17913 } /* end of switch */
17914
17915 return joy4way_labels(type);
17916 }
17917
17918 const struct ControlInfo vsgongf_ctrl =
17919 {
17920 false, /* 45_degree_rotation for joystick(s) */
17921 true, /* alternating_controls */
17922 true, /* mirrored_controls */
17923 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
17924 &vsgongf_get_ctrl_name
17925 };
17926
vsgongf_get_ctrl_name(int type)17927 const char *vsgongf_get_ctrl_name(int type)
17928 {
17929 switch(type)
17930 {
17931 case IPT_BUTTON1: return BTN1 "B";
17932 case IPT_BUTTON2: return BTN2 "A";
17933 } /* end of switch */
17934
17935 return joy4way_labels(type);
17936 }
17937
17938 const struct ControlInfo rbibb_ctrl =
17939 {
17940 false, /* 45_degree_rotation for joystick(s) */
17941 true, /* alternating_controls */
17942 true, /* mirrored_controls */
17943 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
17944 &rbibb_get_ctrl_name
17945 };
17946
rbibb_get_ctrl_name(int type)17947 const char *rbibb_get_ctrl_name(int type)
17948 {
17949 switch(type)
17950 {
17951 case IPT_BUTTON1: return BTN1 "B";
17952 case IPT_BUTTON2: return BTN2 "A";
17953 } /* end of switch */
17954
17955 return joy4way_labels(type);
17956 }
17957
17958 const struct ControlInfo balonfgt_ctrl =
17959 {
17960 false, /* 45_degree_rotation for joystick(s) */
17961 true, /* alternating_controls */
17962 true, /* mirrored_controls */
17963 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
17964 &balonfgt_get_ctrl_name
17965 };
17966
balonfgt_get_ctrl_name(int type)17967 const char *balonfgt_get_ctrl_name(int type)
17968 {
17969 switch(type)
17970 {
17971 case IPT_BUTTON1: return BTN1 "B";
17972 case IPT_BUTTON2: return BTN2 "A";
17973 } /* end of switch */
17974
17975 return joy4way_labels(type);
17976 }
17977
17978 const struct ControlInfo vsbball_ctrl =
17979 {
17980 false, /* 45_degree_rotation for joystick(s) */
17981 true, /* alternating_controls */
17982 true, /* mirrored_controls */
17983 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
17984 &vsbball_get_ctrl_name
17985 };
17986
vsbball_get_ctrl_name(int type)17987 const char *vsbball_get_ctrl_name(int type)
17988 {
17989 switch(type)
17990 {
17991 case IPT_BUTTON1: return BTN1 "B";
17992 case IPT_BUTTON2: return BTN2 "A";
17993 } /* end of switch */
17994
17995 return joy4way_labels(type);
17996 }
17997
17998 const struct ControlInfo btlecity_ctrl =
17999 {
18000 false, /* 45_degree_rotation for joystick(s) */
18001 true, /* alternating_controls */
18002 true, /* mirrored_controls */
18003 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18004 &btlecity_get_ctrl_name
18005 };
18006
btlecity_get_ctrl_name(int type)18007 const char *btlecity_get_ctrl_name(int type)
18008 {
18009 switch(type)
18010 {
18011 case IPT_BUTTON1: return BTN1 "B";
18012 case IPT_BUTTON2: return BTN2 "A";
18013 } /* end of switch */
18014
18015 return joy4way_labels(type);
18016 }
18017
18018 const struct ControlInfo cstlevna_ctrl =
18019 {
18020 false, /* 45_degree_rotation for joystick(s) */
18021 true, /* alternating_controls */
18022 true, /* mirrored_controls */
18023 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18024 &cstlevna_get_ctrl_name
18025 };
18026
cstlevna_get_ctrl_name(int type)18027 const char *cstlevna_get_ctrl_name(int type)
18028 {
18029 switch(type)
18030 {
18031 case IPT_BUTTON1: return BTN1 "B";
18032 case IPT_BUTTON2: return BTN2 "A";
18033 } /* end of switch */
18034
18035 return joy4way_labels(type);
18036 }
18037
18038 const struct ControlInfo cluclu_ctrl =
18039 {
18040 false, /* 45_degree_rotation for joystick(s) */
18041 true, /* alternating_controls */
18042 true, /* mirrored_controls */
18043 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18044 &cluclu_get_ctrl_name
18045 };
18046
cluclu_get_ctrl_name(int type)18047 const char *cluclu_get_ctrl_name(int type)
18048 {
18049 switch(type)
18050 {
18051 case IPT_BUTTON1: return BTN1 "B";
18052 case IPT_BUTTON2: return BTN2 "A";
18053 } /* end of switch */
18054
18055 return joy4way_labels(type);
18056 }
18057
18058 const struct ControlInfo drmario_ctrl =
18059 {
18060 false, /* 45_degree_rotation for joystick(s) */
18061 true, /* alternating_controls */
18062 true, /* mirrored_controls */
18063 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18064 &drmario_get_ctrl_name
18065 };
18066
drmario_get_ctrl_name(int type)18067 const char *drmario_get_ctrl_name(int type)
18068 {
18069 switch(type)
18070 {
18071 case IPT_BUTTON1: return BTN1 "B";
18072 case IPT_BUTTON2: return BTN2 "A";
18073 } /* end of switch */
18074
18075 return joy4way_labels(type);
18076 }
18077
18078 const struct ControlInfo duckhunt_ctrl =
18079 {
18080 false, /* 45_degree_rotation for joystick(s) */
18081 true, /* alternating_controls */
18082 true, /* mirrored_controls */
18083 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18084 &duckhunt_get_ctrl_name
18085 };
18086
duckhunt_get_ctrl_name(int type)18087 const char *duckhunt_get_ctrl_name(int type)
18088 {
18089 switch(type)
18090 {
18091 case IPT_BUTTON1: return BTN1 "B";
18092 case IPT_BUTTON2: return BTN2 "A";
18093 } /* end of switch */
18094
18095 return joy4way_labels(type);
18096 }
18097
18098 const struct ControlInfo excitebk_ctrl =
18099 {
18100 false, /* 45_degree_rotation for joystick(s) */
18101 true, /* alternating_controls */
18102 true, /* mirrored_controls */
18103 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18104 &excitebk_get_ctrl_name
18105 };
18106
excitebk_get_ctrl_name(int type)18107 const char *excitebk_get_ctrl_name(int type)
18108 {
18109 switch(type)
18110 {
18111 case IPT_BUTTON1: return BTN1 "B";
18112 case IPT_BUTTON2: return BTN2 "A";
18113 } /* end of switch */
18114
18115 return joy4way_labels(type);
18116 }
18117
18118 const struct ControlInfo vsfdf_ctrl =
18119 {
18120 false, /* 45_degree_rotation for joystick(s) */
18121 true, /* alternating_controls */
18122 true, /* mirrored_controls */
18123 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18124 &vsfdf_get_ctrl_name
18125 };
18126
vsfdf_get_ctrl_name(int type)18127 const char *vsfdf_get_ctrl_name(int type)
18128 {
18129 switch(type)
18130 {
18131 case IPT_BUTTON1: return BTN1 "B";
18132 case IPT_BUTTON2: return BTN2 "A";
18133 } /* end of switch */
18134
18135 return joy4way_labels(type);
18136 }
18137
18138 const struct ControlInfo vsgradus_ctrl =
18139 {
18140 false, /* 45_degree_rotation for joystick(s) */
18141 true, /* alternating_controls */
18142 true, /* mirrored_controls */
18143 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18144 &vsgradus_get_ctrl_name
18145 };
18146
vsgradus_get_ctrl_name(int type)18147 const char *vsgradus_get_ctrl_name(int type)
18148 {
18149 switch(type)
18150 {
18151 case IPT_BUTTON1: return BTN1 "B";
18152 case IPT_BUTTON2: return BTN2 "A";
18153 } /* end of switch */
18154
18155 return joy4way_labels(type);
18156 }
18157
18158 const struct ControlInfo vsgshoe_ctrl =
18159 {
18160 false, /* 45_degree_rotation for joystick(s) */
18161 true, /* alternating_controls */
18162 true, /* mirrored_controls */
18163 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18164 &vsgshoe_get_ctrl_name
18165 };
18166
vsgshoe_get_ctrl_name(int type)18167 const char *vsgshoe_get_ctrl_name(int type)
18168 {
18169 switch(type)
18170 {
18171 case IPT_BUTTON1: return BTN1 "Fire";
18172 case IPT_LIGHTGUN_X: return "Left";
18173 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
18174 case IPT_LIGHTGUN_Y: return "Up";
18175 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
18176 } /* end of switch */
18177
18178 return "";
18179 }
18180
18181 const struct ControlInfo hogalley_ctrl =
18182 {
18183 false, /* 45_degree_rotation for joystick(s) */
18184 true, /* alternating_controls */
18185 true, /* mirrored_controls */
18186 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18187 &hogalley_get_ctrl_name
18188 };
18189
hogalley_get_ctrl_name(int type)18190 const char *hogalley_get_ctrl_name(int type)
18191 {
18192 switch(type)
18193 {
18194 case IPT_BUTTON1: return BTN1 "Fire";
18195 case IPT_LIGHTGUN_X: return "Left";
18196 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
18197 case IPT_LIGHTGUN_Y: return "Up";
18198 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
18199 } /* end of switch */
18200
18201 return "";
18202 }
18203
18204 const struct ControlInfo hotsmash_ctrl =
18205 {
18206 false, /* 45_degree_rotation for joystick(s) */
18207 false, /* alternating_controls */
18208 true, /* mirrored_controls */
18209 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. This game is unique to the system in that it uses a spinner. As it's one of the last games released for the system, it can be assumed that this is the only vs game to do so.", /* control_details */
18210 &hotsmash_get_ctrl_name
18211 };
18212
hotsmash_get_ctrl_name(int type)18213 const char *hotsmash_get_ctrl_name(int type)
18214 {
18215 switch(type)
18216 {
18217 case IPT_DIAL: return "Left";
18218 case (IPT_DIAL + IPT_EXTENSION): return "Right";
18219 } /* end of switch */
18220
18221 return "";
18222 }
18223
18224 const struct ControlInfo iceclimb_ctrl =
18225 {
18226 false, /* 45_degree_rotation for joystick(s) */
18227 true, /* alternating_controls */
18228 true, /* mirrored_controls */
18229 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18230 &iceclimb_get_ctrl_name
18231 };
18232
iceclimb_get_ctrl_name(int type)18233 const char *iceclimb_get_ctrl_name(int type)
18234 {
18235 switch(type)
18236 {
18237 case IPT_BUTTON1: return BTN1 "B";
18238 case IPT_BUTTON2: return BTN2 "A";
18239 } /* end of switch */
18240
18241 return joy4way_labels(type);
18242 }
18243
18244 const struct ControlInfo iceclmrj_ctrl =
18245 {
18246 false, /* 45_degree_rotation for joystick(s) */
18247 false, /* alternating_controls */
18248 true, /* mirrored_controls */
18249 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18250 &iceclmrj_get_ctrl_name
18251 };
18252
iceclmrj_get_ctrl_name(int type)18253 const char *iceclmrj_get_ctrl_name(int type)
18254 {
18255 switch(type)
18256 {
18257 case IPT_BUTTON1: return BTN1 "B";
18258 case IPT_BUTTON2: return BTN2 "A";
18259 } /* end of switch */
18260
18261 return joy4way_labels(type);
18262 }
18263
18264 const struct ControlInfo machridr_ctrl =
18265 {
18266 false, /* 45_degree_rotation for joystick(s) */
18267 true, /* alternating_controls */
18268 true, /* mirrored_controls */
18269 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18270 &machridr_get_ctrl_name
18271 };
18272
machridr_get_ctrl_name(int type)18273 const char *machridr_get_ctrl_name(int type)
18274 {
18275 switch(type)
18276 {
18277 case IPT_BUTTON1: return BTN1 "B";
18278 case IPT_BUTTON2: return BTN2 "A";
18279 } /* end of switch */
18280
18281 return joy4way_labels(type);
18282 }
18283
18284 const struct ControlInfo mightybj_ctrl =
18285 {
18286 false, /* 45_degree_rotation for joystick(s) */
18287 true, /* alternating_controls */
18288 true, /* mirrored_controls */
18289 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18290 &mightybj_get_ctrl_name
18291 };
18292
mightybj_get_ctrl_name(int type)18293 const char *mightybj_get_ctrl_name(int type)
18294 {
18295 switch(type)
18296 {
18297 case IPT_BUTTON1: return BTN1 "B";
18298 case IPT_BUTTON2: return BTN2 "A";
18299 } /* end of switch */
18300
18301 return joy4way_labels(type);
18302 }
18303
18304 const struct ControlInfo jajamaru_ctrl =
18305 {
18306 false, /* 45_degree_rotation for joystick(s) */
18307 true, /* alternating_controls */
18308 true, /* mirrored_controls */
18309 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18310 &jajamaru_get_ctrl_name
18311 };
18312
jajamaru_get_ctrl_name(int type)18313 const char *jajamaru_get_ctrl_name(int type)
18314 {
18315 switch(type)
18316 {
18317 case IPT_BUTTON1: return BTN1 "B";
18318 case IPT_BUTTON2: return BTN2 "A";
18319 } /* end of switch */
18320
18321 return joy4way_labels(type);
18322 }
18323
18324 const struct ControlInfo vspinbal_ctrl =
18325 {
18326 false, /* 45_degree_rotation for joystick(s) */
18327 true, /* alternating_controls */
18328 true, /* mirrored_controls */
18329 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18330 &vspinbal_get_ctrl_name
18331 };
18332
vspinbal_get_ctrl_name(int type)18333 const char *vspinbal_get_ctrl_name(int type)
18334 {
18335 switch(type)
18336 {
18337 case IPT_BUTTON1: return BTN1 "B";
18338 case IPT_BUTTON2: return BTN2 "A";
18339 } /* end of switch */
18340
18341 return joy4way_labels(type);
18342 }
18343
18344 const struct ControlInfo platoon_ctrl =
18345 {
18346 false, /* 45_degree_rotation for joystick(s) */
18347 true, /* alternating_controls */
18348 true, /* mirrored_controls */
18349 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18350 &platoon_get_ctrl_name
18351 };
18352
platoon_get_ctrl_name(int type)18353 const char *platoon_get_ctrl_name(int type)
18354 {
18355 switch(type)
18356 {
18357 case IPT_BUTTON1: return BTN1 "B";
18358 case IPT_BUTTON2: return BTN2 "A";
18359 } /* end of switch */
18360
18361 return joy4way_labels(type);
18362 }
18363
18364 const struct ControlInfo bnglngby_ctrl =
18365 {
18366 false, /* 45_degree_rotation for joystick(s) */
18367 true, /* alternating_controls */
18368 true, /* mirrored_controls */
18369 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18370 &bnglngby_get_ctrl_name
18371 };
18372
bnglngby_get_ctrl_name(int type)18373 const char *bnglngby_get_ctrl_name(int type)
18374 {
18375 switch(type)
18376 {
18377 case IPT_BUTTON1: return BTN1 "B";
18378 case IPT_BUTTON2: return BTN2 "A";
18379 } /* end of switch */
18380
18381 return joy4way_labels(type);
18382 }
18383
18384 const struct ControlInfo vsslalom_ctrl =
18385 {
18386 false, /* 45_degree_rotation for joystick(s) */
18387 true, /* alternating_controls */
18388 true, /* mirrored_controls */
18389 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18390 &vsslalom_get_ctrl_name
18391 };
18392
vsslalom_get_ctrl_name(int type)18393 const char *vsslalom_get_ctrl_name(int type)
18394 {
18395 switch(type)
18396 {
18397 case IPT_BUTTON1: return BTN1 "Jump";
18398 case IPT_JOYSTICK_UP: return "Lean Forward";
18399 case IPT_JOYSTICK_DOWN: return "Brake";
18400 case IPT_JOYSTICK_LEFT: return "Left";
18401 case IPT_JOYSTICK_RIGHT: return "Right";
18402 } /* end of switch */
18403
18404 return "";
18405 }
18406
18407 const struct ControlInfo vssoccer_ctrl =
18408 {
18409 false, /* 45_degree_rotation for joystick(s) */
18410 true, /* alternating_controls */
18411 true, /* mirrored_controls */
18412 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18413 &vssoccer_get_ctrl_name
18414 };
18415
vssoccer_get_ctrl_name(int type)18416 const char *vssoccer_get_ctrl_name(int type)
18417 {
18418 switch(type)
18419 {
18420 case IPT_BUTTON1: return BTN1 "B";
18421 case IPT_BUTTON2: return BTN2 "A";
18422 } /* end of switch */
18423
18424 return joy4way_labels(type);
18425 }
18426
18427 const struct ControlInfo starlstr_ctrl =
18428 {
18429 false, /* 45_degree_rotation for joystick(s) */
18430 true, /* alternating_controls */
18431 true, /* mirrored_controls */
18432 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18433 &starlstr_get_ctrl_name
18434 };
18435
starlstr_get_ctrl_name(int type)18436 const char *starlstr_get_ctrl_name(int type)
18437 {
18438 switch(type)
18439 {
18440 case IPT_BUTTON1: return BTN1 "B";
18441 case IPT_BUTTON2: return BTN2 "A";
18442 } /* end of switch */
18443
18444 return joy4way_labels(type);
18445 }
18446
18447 const struct ControlInfo smgolf_ctrl =
18448 {
18449 false, /* 45_degree_rotation for joystick(s) */
18450 true, /* alternating_controls */
18451 true, /* mirrored_controls */
18452 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18453 &smgolf_get_ctrl_name
18454 };
18455
smgolf_get_ctrl_name(int type)18456 const char *smgolf_get_ctrl_name(int type)
18457 {
18458 switch(type)
18459 {
18460 case IPT_BUTTON1: return BTN1 "B";
18461 case IPT_BUTTON2: return BTN2 "A";
18462 } /* end of switch */
18463
18464 return joy4way_labels(type);
18465 }
18466
18467 const struct ControlInfo suprmrio_ctrl =
18468 {
18469 false, /* 45_degree_rotation for joystick(s) */
18470 true, /* alternating_controls */
18471 true, /* mirrored_controls */
18472 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18473 &suprmrio_get_ctrl_name
18474 };
18475
suprmrio_get_ctrl_name(int type)18476 const char *suprmrio_get_ctrl_name(int type)
18477 {
18478 switch(type)
18479 {
18480 case IPT_BUTTON1: return BTN1 "B";
18481 case IPT_BUTTON2: return BTN2 "A";
18482 } /* end of switch */
18483
18484 return joy4way_labels(type);
18485 }
18486
18487 const struct ControlInfo vsskykid_ctrl =
18488 {
18489 false, /* 45_degree_rotation for joystick(s) */
18490 true, /* alternating_controls */
18491 true, /* mirrored_controls */
18492 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18493 &vsskykid_get_ctrl_name
18494 };
18495
vsskykid_get_ctrl_name(int type)18496 const char *vsskykid_get_ctrl_name(int type)
18497 {
18498 switch(type)
18499 {
18500 case IPT_BUTTON1: return BTN1 "B";
18501 case IPT_BUTTON2: return BTN2 "A";
18502 } /* end of switch */
18503
18504 return joy4way_labels(type);
18505 }
18506
18507 const struct ControlInfo supxevs_ctrl =
18508 {
18509 false, /* 45_degree_rotation for joystick(s) */
18510 true, /* alternating_controls */
18511 true, /* mirrored_controls */
18512 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18513 &supxevs_get_ctrl_name
18514 };
18515
supxevs_get_ctrl_name(int type)18516 const char *supxevs_get_ctrl_name(int type)
18517 {
18518 switch(type)
18519 {
18520 case IPT_BUTTON1: return BTN1 "B";
18521 case IPT_BUTTON2: return BTN2 "A";
18522 } /* end of switch */
18523
18524 return joy4way_labels(type);
18525 }
18526
18527 const struct ControlInfo tkoboxng_ctrl =
18528 {
18529 false, /* 45_degree_rotation for joystick(s) */
18530 true, /* alternating_controls */
18531 true, /* mirrored_controls */
18532 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18533 &tkoboxng_get_ctrl_name
18534 };
18535
tkoboxng_get_ctrl_name(int type)18536 const char *tkoboxng_get_ctrl_name(int type)
18537 {
18538 switch(type)
18539 {
18540 case IPT_BUTTON1: return BTN1 "B";
18541 case IPT_BUTTON2: return BTN2 "A";
18542 } /* end of switch */
18543
18544 return joy4way_labels(type);
18545 }
18546
18547 const struct ControlInfo vstennis_ctrl =
18548 {
18549 false, /* 45_degree_rotation for joystick(s) */
18550 false, /* alternating_controls */
18551 true, /* mirrored_controls */
18552 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B button, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18553 &vstennis_get_ctrl_name
18554 };
18555
vstennis_get_ctrl_name(int type)18556 const char *vstennis_get_ctrl_name(int type)
18557 {
18558 switch(type)
18559 {
18560 case IPT_BUTTON1: return BTN1 "B";
18561 case IPT_BUTTON2: return BTN2 "A";
18562 } /* end of switch */
18563
18564 return joy4way_labels(type);
18565 }
18566
18567 const struct ControlInfo vstetris_ctrl =
18568 {
18569 false, /* 45_degree_rotation for joystick(s) */
18570 true, /* alternating_controls */
18571 true, /* mirrored_controls */
18572 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18573 &vstetris_get_ctrl_name
18574 };
18575
vstetris_get_ctrl_name(int type)18576 const char *vstetris_get_ctrl_name(int type)
18577 {
18578 switch(type)
18579 {
18580 case IPT_BUTTON1: return BTN1 "B";
18581 case IPT_BUTTON2: return BTN2 "A";
18582 } /* end of switch */
18583
18584 return joy4way_labels(type);
18585 }
18586
18587 const struct ControlInfo goonies_ctrl =
18588 {
18589 false, /* 45_degree_rotation for joystick(s) */
18590 true, /* alternating_controls */
18591 true, /* mirrored_controls */
18592 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18593 &goonies_get_ctrl_name
18594 };
18595
goonies_get_ctrl_name(int type)18596 const char *goonies_get_ctrl_name(int type)
18597 {
18598 switch(type)
18599 {
18600 case IPT_BUTTON1: return BTN1 "B";
18601 case IPT_BUTTON2: return BTN2 "A";
18602 } /* end of switch */
18603
18604 return joy4way_labels(type);
18605 }
18606
18607 const struct ControlInfo topgun_ctrl =
18608 {
18609 false, /* 45_degree_rotation for joystick(s) */
18610 true, /* alternating_controls */
18611 true, /* mirrored_controls */
18612 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. Although the cabinets had buttons for 3 and 4 player start, most of the games were only two player.", /* control_details */
18613 &topgun_get_ctrl_name
18614 };
18615
topgun_get_ctrl_name(int type)18616 const char *topgun_get_ctrl_name(int type)
18617 {
18618 switch(type)
18619 {
18620 case IPT_BUTTON1: return BTN1 "B";
18621 case IPT_BUTTON2: return BTN2 "A";
18622 } /* end of switch */
18623
18624 return joy4way_labels(type);
18625 }
18626
18627 const struct ControlInfo wrecking_ctrl =
18628 {
18629 false, /* 45_degree_rotation for joystick(s) */
18630 true, /* alternating_controls */
18631 true, /* mirrored_controls */
18632 "The Nintendo Vs. System was released along side the original NES game console. The games it plays are virtually identical. This is the earliest known mvs cabinet. Almost all Vs cabinets had a layout exactly like the NES at home, with a joystick, A and B buttons, or a zapper. This cabinet is really two cabinets joined together. Two pairs of people can play two different games at the same time.", /* control_details */
18633 &wrecking_get_ctrl_name
18634 };
18635
wrecking_get_ctrl_name(int type)18636 const char *wrecking_get_ctrl_name(int type)
18637 {
18638 switch(type)
18639 {
18640 case IPT_BUTTON1: return BTN1 "B";
18641 case IPT_BUTTON2: return BTN2 "A";
18642 } /* end of switch */
18643
18644 return joy4way_labels(type);
18645 }
18646
18647 const struct ControlInfo wacko_ctrl =
18648 {
18649 false, /* 45_degree_rotation for joystick(s) */
18650 true, /* alternating_controls */
18651 true, /* mirrored_controls */
18652 "The trackball moves the player. There are two 4-way joysticks, one one each side of the trackball, but they are both wired to the same input. Mame maps both sticks to the left stick of a dual stick combo to avoid the conflicting default keyboard mapping of the normal joystick and the trackball /* control_details */ mame's right stick input type is not used. (Note for HowardC: Accepted for now, but I'll try to get the mame devs to accept a fixed one. Remapping to avoid conflict is silly as almost everyone maps the 'left joystick' to match their regular joystick. Now if it was mapped to joystick right then I could have seen it.) Keep an eye on this game for driver changes.", /* control_details */
18653 &wacko_get_ctrl_name
18654 };
18655
wacko_get_ctrl_name(int type)18656 const char *wacko_get_ctrl_name(int type)
18657 {
18658 switch(type)
18659 {
18660 case IPT_JOYSTICKRIGHT_RIGHT: return "-";
18661 case IPT_JOYSTICKRIGHT_LEFT: return "-";
18662 case IPT_JOYSTICKRIGHT_DOWN: return "-";
18663 case IPT_JOYSTICKRIGHT_UP: return "-";
18664 case IPT_JOYSTICKLEFT_RIGHT: return "Zap Right";
18665 case IPT_JOYSTICKLEFT_LEFT: return "Zap Left";
18666 case IPT_JOYSTICKLEFT_DOWN: return "Zap Down";
18667 case IPT_JOYSTICKLEFT_UP: return "Zap Up";
18668 case IPT_TRACKBALL_X: return "Krooz Left";
18669 case IPT_TRACKBALL_Y: return "Krooz Up";
18670 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Krooz Right";
18671 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Krooz Down";
18672 } /* end of switch */
18673
18674 return "";
18675 }
18676
18677 const struct ControlInfo wargods_ctrl =
18678 {
18679 false, /* 45_degree_rotation for joystick(s) */
18680 false, /* alternating_controls */
18681 true, /* mirrored_controls */
18682 "The game uses the same williams/midway classic 'X' layout, so remapping will be required. The only difference is the run button hs ben replaced with a lighted 3d button, which allows you to move on the z-axis. It should be noted that not all revisions use the lighted button and many use a standard pushbutton with the mk3 layout.", /* control_details */
18683 &wargods_get_ctrl_name
18684 };
18685
wargods_get_ctrl_name(int type)18686 const char *wargods_get_ctrl_name(int type)
18687 {
18688 switch(type)
18689 {
18690 case IPT_BUTTON1: return BTN1 "High Punch";
18691 case IPT_BUTTON2: return BTN2 "Block";
18692 case IPT_BUTTON3: return BTN3 "High Kick";
18693 case IPT_BUTTON4: return BTN4 "Low Punch";
18694 case IPT_BUTTON5: return BTN5 "Low Kick";
18695 case IPT_BUTTON6: return BTN6 "3D";
18696 } /* end of switch */
18697
18698 return joy4way_labels(type);
18699 }
18700
18701 const struct ControlInfo warofbug_ctrl =
18702 {
18703 false, /* 45_degree_rotation for joystick(s) */
18704 false, /* alternating_controls */
18705 true, /* mirrored_controls */
18706 "", /* control_details */
18707 &warofbug_get_ctrl_name
18708 };
18709
warofbug_get_ctrl_name(int type)18710 const char *warofbug_get_ctrl_name(int type)
18711 {
18712 switch(type)
18713 {
18714 case IPT_BUTTON1: return BTN1 "Fire";
18715 } /* end of switch */
18716
18717 return joy4way_labels(type); /* generic "Left" and "Right" labels */
18718 }
18719
18720
18721 const struct ControlInfo wotw_ctrl =
18722 {
18723 false, /* 45_degree_rotation for joystick(s) */
18724 true, /* alternating_controls */
18725 true, /* mirrored_controls */
18726 "", /* control_details */
18727 &wotw_get_ctrl_name
18728 };
18729
wotw_get_ctrl_name(int type)18730 const char *wotw_get_ctrl_name(int type)
18731 {
18732 switch(type)
18733 {
18734 case IPT_BUTTON1: return BTN1 "Fire";
18735 case IPT_BUTTON2: return BTN2 "Shield";
18736 } /* end of switch */
18737
18738 return joy2way_labels(type);
18739 }
18740
18741 const struct ControlInfo warlords_ctrl =
18742 {
18743 false, /* 45_degree_rotation for joystick(s) */
18744 false, /* alternating_controls */
18745 true, /* mirrored_controls */
18746 "The player buttons simply start the game. They do not do anything else and the mame start buttons are deactivated in this game.", /* control_details */
18747 &warlords_get_ctrl_name
18748 };
18749
warlords_get_ctrl_name(int type)18750 const char *warlords_get_ctrl_name(int type)
18751 {
18752 switch(type)
18753 {
18754 case IPT_BUTTON1: return BTN1 "Start";
18755 case IPT_PADDLE: return "Left";
18756 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
18757 } /* end of switch */
18758
18759 return "";
18760 }
18761
18762 const struct ControlInfo warpwarp_ctrl =
18763 {
18764 false, /* 45_degree_rotation for joystick(s) */
18765 true, /* alternating_controls */
18766 true, /* mirrored_controls */
18767 "This game is also known as Warp Warp.", /* control_details */
18768 &warpwarp_get_ctrl_name
18769 };
18770
warpwarp_get_ctrl_name(int type)18771 const char *warpwarp_get_ctrl_name(int type)
18772 {
18773 switch(type)
18774 {
18775 case IPT_BUTTON1: return BTN1 "Fire";
18776 } /* end of switch */
18777
18778 return joy4way_labels(type);
18779 }
18780
18781 const struct ControlInfo warrior_ctrl =
18782 {
18783 false, /* 45_degree_rotation for joystick(s) */
18784 false, /* alternating_controls */
18785 true, /* mirrored_controls */
18786 "Warrior had two top fire style joysticks, one per player. Moving the joystick would move your knight. Moving the joystick while pressing the button swings the knights sword. You cannot move and fight simultaneously. Movement directions are relative to the screen, not the direction the night is fighting. ie: Left is always toward the left of the screen. The knights are almost always facing each other.", /* control_details */
18787 &warrior_get_ctrl_name
18788 };
18789
warrior_get_ctrl_name(int type)18790 const char *warrior_get_ctrl_name(int type)
18791 {
18792 switch(type)
18793 {
18794 case IPT_BUTTON1: return BTN1 "Sword";
18795 } /* end of switch */
18796
18797 return joy4way_labels(type);
18798 }
18799
18800 const struct ControlInfo suzume_ctrl =
18801 {
18802 false, /* 45_degree_rotation for joystick(s) */
18803 true, /* alternating_controls */
18804 true, /* mirrored_controls */
18805 "Mahjong games are NOT compatable with ctrlr files. As a matter of fact they pretty much all have the same layout and all have the same controls. The controls are hardcoded, so remapping isn't reccomended, especially considering the fact that a full keyboard of buttons are required to play.", /* control_details */
18806 &suzume_get_ctrl_name
18807 };
18808
suzume_get_ctrl_name(int type)18809 const char *suzume_get_ctrl_name(int type)
18810 {
18811 switch(type)
18812 {
18813 } /* end of switch */
18814
18815 return "";
18816 }
18817
18818 const struct ControlInfo wecleman_ctrl =
18819 {
18820 false, /* 45_degree_rotation for joystick(s) */
18821 false, /* alternating_controls */
18822 false, /* mirrored_controls */
18823 "", /* control_details */
18824 &wecleman_get_ctrl_name
18825 };
18826
wecleman_get_ctrl_name(int type)18827 const char *wecleman_get_ctrl_name(int type)
18828 {
18829 switch(type)
18830 {
18831 case IPT_BUTTON1: return BTN1 "Accelerate";
18832 case IPT_BUTTON2: return BTN2 "Brake";
18833 case IPT_BUTTON3: return BTN3 "Low Gear";
18834 case IPT_BUTTON4: return BTN4 "High Gear";
18835 case IPT_PADDLE: return "Left";
18836 case (IPT_PADDLE + IPT_EXTENSION): return "Right";
18837 } /* end of switch */
18838
18839 return "";
18840 }
18841
18842 const struct ControlInfo wfortune_ctrl =
18843 {
18844 false, /* 45_degree_rotation for joystick(s) */
18845 false, /* alternating_controls */
18846 false, /* mirrored_controls */
18847 "This game is just like the tv show. Everyone spins the same wheel which is mapped to player one's controls. The wheel is a glorified, oversized, spinner with a wof 'wheel' sticker on top of it. When not spinning, the wheel moves the cursor while the select button selects the action highlighted. It should be noted that the wheel won't spin left while in 'spin the wheel' mode.", /* control_details */
18848 &wfortune_get_ctrl_name
18849 };
18850
wfortune_get_ctrl_name(int type)18851 const char *wfortune_get_ctrl_name(int type)
18852 {
18853 switch(type)
18854 {
18855 case (IPT_BUTTON1 | IPF_PLAYER3): return "Select";
18856 case (IPT_BUTTON1 | IPF_PLAYER2): return "Select";
18857 case IPT_BUTTON1: return BTN1 "Select";
18858 case IPT_DIAL: return "Spin Left";
18859 case (IPT_DIAL + IPT_EXTENSION): return "Spin Right";
18860 } /* end of switch */
18861
18862 return "";
18863 }
18864
18865 const struct ControlInfo whodunit_ctrl =
18866 {
18867 false, /* 45_degree_rotation for joystick(s) */
18868 true, /* alternating_controls */
18869 true, /* mirrored_controls */
18870 "This game actually used a mounted lightgun (or light shotgun I should say) but the 'other' flag that we generally tag onto special controls isn't needed as the game plays just fine with an unmounted lightgun and there have been arcade conversions utilizing unmounted guns.", /* control_details */
18871 &whodunit_get_ctrl_name
18872 };
18873
whodunit_get_ctrl_name(int type)18874 const char *whodunit_get_ctrl_name(int type)
18875 {
18876 switch(type)
18877 {
18878 case IPT_BUTTON1: return BTN1 "Fire";
18879 case IPT_LIGHTGUN_X: return "Left";
18880 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
18881 case IPT_LIGHTGUN_Y: return "Up";
18882 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
18883 } /* end of switch */
18884
18885 return "";
18886 }
18887
18888 const struct ControlInfo wildfang_ctrl =
18889 {
18890 false, /* 45_degree_rotation for joystick(s) */
18891 false, /* alternating_controls */
18892 true, /* mirrored_controls */
18893 "Special transforms your warrior into a small guy riding a tiger", /* control_details */
18894 &wildfang_get_ctrl_name
18895 };
18896
wildfang_get_ctrl_name(int type)18897 const char *wildfang_get_ctrl_name(int type)
18898 {
18899 switch(type)
18900 {
18901 case IPT_BUTTON1: return BTN1 "Attack";
18902 case IPT_BUTTON2: return BTN2 "Jump";
18903 case IPT_BUTTON3: return BTN3 "Special";
18904 } /* end of switch */
18905
18906 return joy4way_labels(type);
18907 }
18908
18909 const struct ControlInfo moo_ctrl =
18910 {
18911 false, /* 45_degree_rotation for joystick(s) */
18912 false, /* alternating_controls */
18913 true, /* mirrored_controls */
18914 "Combinations of Jump, Shoot and a Direction perform various special moves. They are listed on screen as you run across them.", /* control_details */
18915 &moo_get_ctrl_name
18916 };
18917
moo_get_ctrl_name(int type)18918 const char *moo_get_ctrl_name(int type)
18919 {
18920 switch(type)
18921 {
18922 case IPT_BUTTON1: return BTN1 "Shoot";
18923 case IPT_BUTTON2: return BTN2 "Jump";
18924 } /* end of switch */
18925
18926 return joy4way_labels(type);
18927 }
18928
18929 const struct ControlInfo willow_ctrl =
18930 {
18931 false, /* 45_degree_rotation for joystick(s) */
18932 true, /* alternating_controls */
18933 true, /* mirrored_controls */
18934 "Holding attack button will increase the power of the attack", /* control_details */
18935 &willow_get_ctrl_name
18936 };
18937
willow_get_ctrl_name(int type)18938 const char *willow_get_ctrl_name(int type)
18939 {
18940 switch(type)
18941 {
18942 case IPT_BUTTON1: return BTN1 "Attack";
18943 case IPT_BUTTON2: return BTN2 "Jump";
18944 } /* end of switch */
18945
18946 return joy4way_labels(type);
18947 }
18948
18949 const struct ControlInfo wizdfire_ctrl =
18950 {
18951 false, /* 45_degree_rotation for joystick(s) */
18952 false, /* alternating_controls */
18953 true, /* mirrored_controls */
18954 "", /* control_details */
18955 &wizdfire_get_ctrl_name
18956 };
18957
wizdfire_get_ctrl_name(int type)18958 const char *wizdfire_get_ctrl_name(int type)
18959 {
18960 switch(type)
18961 {
18962 case IPT_BUTTON1: return BTN1 "Attack";
18963 case IPT_BUTTON2: return BTN2 "Magic";
18964 } /* end of switch */
18965
18966 return joy4way_labels(type);
18967 }
18968
18969 const struct ControlInfo wow_ctrl =
18970 {
18971 false, /* 45_degree_rotation for joystick(s) */
18972 false, /* alternating_controls */
18973 true, /* mirrored_controls */
18974 "The original game had a fire button on the left and a ball top joystick on the left.", /* control_details */
18975 &wow_get_ctrl_name
18976 };
18977
wow_get_ctrl_name(int type)18978 const char *wow_get_ctrl_name(int type)
18979 {
18980 switch(type)
18981 {
18982 case IPT_BUTTON1: return BTN1 "Fire";
18983 } /* end of switch */
18984
18985 return joy4way_labels(type);
18986 }
18987
18988 const struct ControlInfo wolfpack_ctrl =
18989 {
18990 false, /* 45_degree_rotation for joystick(s) */
18991 false, /* alternating_controls */
18992 false, /* mirrored_controls */
18993 "", /* control_details */
18994 &wolfpack_get_ctrl_name
18995 };
18996
wolfpack_get_ctrl_name(int type)18997 const char *wolfpack_get_ctrl_name(int type)
18998 {
18999 switch(type)
19000 {
19001 case IPT_BUTTON1: return BTN1 "Fire";
19002 case IPT_DIAL: return "Left";
19003 case (IPT_DIAL + IPT_EXTENSION): return "Right";
19004 } /* end of switch */
19005
19006 return "";
19007 }
19008
19009 const struct ControlInfo wboy_ctrl =
19010 {
19011 false, /* 45_degree_rotation for joystick(s) */
19012 true, /* alternating_controls */
19013 true, /* mirrored_controls */
19014 "", /* control_details */
19015 &wboy_get_ctrl_name
19016 };
19017
wboy_get_ctrl_name(int type)19018 const char *wboy_get_ctrl_name(int type)
19019 {
19020 switch(type)
19021 {
19022 case IPT_BUTTON1: return BTN1 "Speed / Attack";
19023 case IPT_BUTTON2: return BTN2 "Jump";
19024 } /* end of switch */
19025
19026 return joy2way_labels(type);
19027 }
19028
19029 const struct ControlInfo wbml_ctrl =
19030 {
19031 false, /* 45_degree_rotation for joystick(s) */
19032 true, /* alternating_controls */
19033 true, /* mirrored_controls */
19034 "", /* control_details */
19035 &wbml_get_ctrl_name
19036 };
19037
wbml_get_ctrl_name(int type)19038 const char *wbml_get_ctrl_name(int type)
19039 {
19040 switch(type)
19041 {
19042 case IPT_BUTTON1: return BTN1 "Sword";
19043 case IPT_BUTTON2: return BTN2 "Jump";
19044 } /* end of switch */
19045
19046 return joy4way_labels(type);
19047 }
19048
19049 const struct ControlInfo wbeachvl_ctrl =
19050 {
19051 false, /* 45_degree_rotation for joystick(s) */
19052 false, /* alternating_controls */
19053 true, /* mirrored_controls */
19054 "3rd button is mapped but not known what it does", /* control_details */
19055 &wbeachvl_get_ctrl_name
19056 };
19057
wbeachvl_get_ctrl_name(int type)19058 const char *wbeachvl_get_ctrl_name(int type)
19059 {
19060 switch(type)
19061 {
19062 case IPT_BUTTON1: return BTN1 "Hit";
19063 case IPT_BUTTON2: return BTN2 "Jump";
19064 case IPT_BUTTON3: return BTN3 "Unknown";
19065 case IPT_JOYSTICK_UP: return "Up-Left";
19066 case IPT_JOYSTICK_DOWN: return "Down-Right";
19067 case IPT_JOYSTICK_LEFT: return "Left-Down";
19068 case IPT_JOYSTICK_RIGHT: return "Right-Up";
19069 } /* end of switch */
19070
19071 return "";
19072 }
19073
19074 const struct ControlInfo wcbowl_ctrl =
19075 {
19076 false, /* 45_degree_rotation for joystick(s) */
19077 true, /* alternating_controls */
19078 true, /* mirrored_controls */
19079 "When looking in the tab menu it would seem the game is only 2 player, however it is a 4 player game with each player entering the game by pressing the Player1 start button (on the control panel it is just a Start button). Player 2 start button is mapped but doesn?t do anything", /* control_details */
19080 &wcbowl_get_ctrl_name
19081 };
19082
wcbowl_get_ctrl_name(int type)19083 const char *wcbowl_get_ctrl_name(int type)
19084 {
19085 switch(type)
19086 {
19087 case IPT_BUTTON1: return BTN1 "Hook Left";
19088 case IPT_BUTTON2: return BTN2 "Hook Right";
19089 case IPT_TRACKBALL_X: return "Left";
19090 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
19091 case IPT_TRACKBALL_Y: return "Up";
19092 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
19093 } /* end of switch */
19094
19095 return "";
19096 }
19097
19098 const struct ControlInfo wcbowldx_ctrl =
19099 {
19100 false, /* 45_degree_rotation for joystick(s) */
19101 true, /* alternating_controls */
19102 true, /* mirrored_controls */
19103 "", /* control_details */
19104 &wcbowldx_get_ctrl_name
19105 };
19106
wcbowldx_get_ctrl_name(int type)19107 const char *wcbowldx_get_ctrl_name(int type)
19108 {
19109 switch(type)
19110 {
19111 case IPT_BUTTON1: return BTN1 "Hook Left";
19112 case IPT_BUTTON2: return BTN2 "Hook Right";
19113 case IPT_TRACKBALL_X: return "Left";
19114 case (IPT_TRACKBALL_X + IPT_EXTENSION): return "Right";
19115 case IPT_TRACKBALL_Y: return "Up";
19116 case (IPT_TRACKBALL_Y + IPT_EXTENSION): return "Down";
19117 } /* end of switch */
19118
19119 return "";
19120 }
19121
19122 const struct ControlInfo wseries_ctrl =
19123 {
19124 false, /* 45_degree_rotation for joystick(s) */
19125 false, /* alternating_controls */
19126 false, /* mirrored_controls */
19127 "This is a simultaneous 2 player alternating game /* control_details */ a player is on the left side when pitching, on the right side when batting. The aim button is shown with two physical buttons wired to one pin in the schematics. All buttons are on one input port in the machine; mame puts them all as player 1 inputs, but on the 2 player game, the aim button(s) is more like a player 2 button. (On a one player game, all inputs are like player 1 inputs.)", /* control_details */
19128 &wseries_get_ctrl_name
19129 };
19130
wseries_get_ctrl_name(int type)19131 const char *wseries_get_ctrl_name(int type)
19132 {
19133 switch(type)
19134 {
19135 case (IPT_AD_STICK_X | IPF_PLAYER2): return "Left";
19136 case ((IPT_AD_STICK_X + IPT_EXTENSION) | IPF_PLAYER2): return "Right";
19137 case (IPT_AD_STICK_Y | IPF_PLAYER2): return "Pitch";
19138 case ((IPT_AD_STICK_Y + IPT_EXTENSION) | IPF_PLAYER2): return "Windup";
19139 case IPT_BUTTON1: return BTN1 "Go Back";
19140 case IPT_BUTTON2: return BTN2 "Xtra Base";
19141 case IPT_BUTTON3: return BTN3 "Aim";
19142 case IPT_AD_STICK_X: return "Swing";
19143 case (IPT_AD_STICK_X + IPT_EXTENSION): return "Swing";
19144 case IPT_AD_STICK_Y: return "Up";
19145 case (IPT_AD_STICK_Y + IPT_EXTENSION): return "Down";
19146 } /* end of switch */
19147
19148 return "";
19149 }
19150
19151 const struct ControlInfo wsf_ctrl =
19152 {
19153 false, /* 45_degree_rotation for joystick(s) */
19154 false, /* alternating_controls */
19155 true, /* mirrored_controls */
19156 "A and B both do varouis things, depending upon the situation.", /* control_details */
19157 &wsf_get_ctrl_name
19158 };
19159
wsf_get_ctrl_name(int type)19160 const char *wsf_get_ctrl_name(int type)
19161 {
19162 switch(type)
19163 {
19164 case IPT_BUTTON1: return BTN1 "A";
19165 case IPT_BUTTON2: return BTN2 "B";
19166 } /* end of switch */
19167
19168 return joy4way_labels(type);
19169 }
19170
19171 const struct ControlInfo wtennis_ctrl =
19172 {
19173 false, /* 45_degree_rotation for joystick(s) */
19174 true, /* alternating_controls */
19175 true, /* mirrored_controls */
19176 "The label for the button is unknown. I took an educated guess and take full responsibility for it's accuracy.", /* control_details */
19177 &wtennis_get_ctrl_name
19178 };
19179
wtennis_get_ctrl_name(int type)19180 const char *wtennis_get_ctrl_name(int type)
19181 {
19182 switch(type)
19183 {
19184 case IPT_BUTTON1: return BTN1 "Swing";
19185 } /* end of switch */
19186
19187 return joy4way_labels(type);
19188 }
19189
19190 const struct ControlInfo wwfsstar_ctrl =
19191 {
19192 false, /* 45_degree_rotation for joystick(s) */
19193 false, /* alternating_controls */
19194 true, /* mirrored_controls */
19195 "Press button A to punch, button B to kick. As with all WWF games, the two buttons do a number of things by pressing different combinations at different times including pin, ect. If anyone wishes to make a list please do so here.", /* control_details */
19196 &wwfsstar_get_ctrl_name
19197 };
19198
wwfsstar_get_ctrl_name(int type)19199 const char *wwfsstar_get_ctrl_name(int type)
19200 {
19201 switch(type)
19202 {
19203 case IPT_BUTTON1: return BTN1 "A";
19204 case IPT_BUTTON2: return BTN2 "B";
19205 } /* end of switch */
19206
19207 return joy4way_labels(type);
19208 }
19209
19210 const struct ControlInfo wwfwfest_ctrl =
19211 {
19212 false, /* 45_degree_rotation for joystick(s) */
19213 false, /* alternating_controls */
19214 true, /* mirrored_controls */
19215 "The A and B buttons do various things depending upon the wrestler and the situation. Generally when you can do something special you recieve a message on the screen on how to do so.", /* control_details */
19216 &wwfwfest_get_ctrl_name
19217 };
19218
wwfwfest_get_ctrl_name(int type)19219 const char *wwfwfest_get_ctrl_name(int type)
19220 {
19221 switch(type)
19222 {
19223 case IPT_BUTTON1: return BTN1 "A";
19224 case IPT_BUTTON2: return BTN2 "B";
19225 } /* end of switch */
19226
19227 return joy4way_labels(type);
19228 }
19229
19230 const struct ControlInfo wwfmania_ctrl =
19231 {
19232 false, /* 45_degree_rotation for joystick(s) */
19233 false, /* alternating_controls */
19234 true, /* mirrored_controls */
19235 "This game has the same mame-related layout problems as the mk games. The X pattern applies. Press punch and kick at the same time to run. Note that the punch buttons are on the top row and the kick buttons are on the bottom, unlike the mk games and similar to sf games.", /* control_details */
19236 &wwfmania_get_ctrl_name
19237 };
19238
wwfmania_get_ctrl_name(int type)19239 const char *wwfmania_get_ctrl_name(int type)
19240 {
19241 switch(type)
19242 {
19243 case IPT_BUTTON1: return BTN1 "Punch";
19244 case IPT_BUTTON2: return BTN2 "Defense";
19245 case IPT_BUTTON3: return BTN3 "Power Punch";
19246 case IPT_BUTTON4: return BTN4 "Kick";
19247 case IPT_BUTTON5: return BTN5 "Power Kick";
19248 case IPT_JOYSTICK_RIGHT: return "Move Right";
19249 case IPT_JOYSTICK_LEFT: return "Move Left";
19250 case IPT_JOYSTICK_DOWN: return "Move Down";
19251 case IPT_JOYSTICK_UP: return "Move Up";
19252 } /* end of switch */
19253
19254 return "";
19255 }
19256
19257 const struct ControlInfo xmen_ctrl =
19258 {
19259 false, /* 45_degree_rotation for joystick(s) */
19260 false, /* alternating_controls */
19261 true, /* mirrored_controls */
19262 "", /* control_details */
19263 &xmen_get_ctrl_name
19264 };
19265
xmen_get_ctrl_name(int type)19266 const char *xmen_get_ctrl_name(int type)
19267 {
19268 switch(type)
19269 {
19270 case IPT_BUTTON1: return BTN1 "Attack";
19271 case IPT_BUTTON2: return BTN2 "Jump";
19272 case IPT_BUTTON3: return BTN3 "Mutant Power";
19273 } /* end of switch */
19274
19275 return joy4way_labels(type);
19276 }
19277
19278 const struct ControlInfo xmvsf_ctrl =
19279 {
19280 false, /* 45_degree_rotation for joystick(s) */
19281 false, /* alternating_controls */
19282 true, /* mirrored_controls */
19283 "", /* control_details */
19284 &xmvsf_get_ctrl_name
19285 };
19286
xmvsf_get_ctrl_name(int type)19287 const char *xmvsf_get_ctrl_name(int type)
19288 {
19289 switch(type)
19290 {
19291 case IPT_BUTTON1: return BTN1 "Punch - Light";
19292 case IPT_BUTTON2: return BTN2 "Punch - Medium";
19293 case IPT_BUTTON3: return BTN3 "Punch - Heavy";
19294 case IPT_BUTTON4: return BTN4 "Kick - Light";
19295 case IPT_BUTTON5: return BTN5 "Kick - Medium";
19296 case IPT_BUTTON6: return BTN6 "Kick - Heavy";
19297 } /* end of switch */
19298
19299 return joy4way_labels(type);
19300 }
19301
19302 const struct ControlInfo xmcota_ctrl =
19303 {
19304 false, /* 45_degree_rotation for joystick(s) */
19305 false, /* alternating_controls */
19306 true, /* mirrored_controls */
19307 "", /* control_details */
19308 &xmcota_get_ctrl_name
19309 };
19310
xmcota_get_ctrl_name(int type)19311 const char *xmcota_get_ctrl_name(int type)
19312 {
19313 switch(type)
19314 {
19315 case IPT_BUTTON1: return BTN1 "Punch - Jab ";
19316 case IPT_BUTTON2: return BTN2 "Punch - Strong";
19317 case IPT_BUTTON3: return BTN3 "Punch - Fierce";
19318 case IPT_BUTTON4: return BTN4 "Kick - Short";
19319 case IPT_BUTTON5: return BTN5 "Kick - Forward";
19320 case IPT_BUTTON6: return BTN6 "Kick - Roundhouse";
19321 } /* end of switch */
19322
19323 return joy4way_labels(type);
19324 }
19325
19326 const struct ControlInfo xsleena_ctrl =
19327 {
19328 false, /* 45_degree_rotation for joystick(s) */
19329 true, /* alternating_controls */
19330 true, /* mirrored_controls */
19331 "Pressing the jump button while already in the air will do a second jump boost. Much of the data on this game is purely speculative as it is a copy of Solar Warrior. It is assumed that they use the same labels.", /* control_details */
19332 &xsleena_get_ctrl_name
19333 };
19334
xsleena_get_ctrl_name(int type)19335 const char *xsleena_get_ctrl_name(int type)
19336 {
19337 switch(type)
19338 {
19339 case IPT_BUTTON1: return BTN1 "Fire";
19340 case IPT_BUTTON2: return BTN2 "Jump";
19341 } /* end of switch */
19342
19343 return joy4way_labels(type);
19344 }
19345
19346 const struct ControlInfo xenophob_ctrl =
19347 {
19348 false, /* 45_degree_rotation for joystick(s) */
19349 false, /* alternating_controls */
19350 true, /* mirrored_controls */
19351 "This trigger stick has two thumb buttons in additon to the normal fire button. The left and right buttons each do over a dozen things, with what they do depending upon the message displayed on the screen at the time. They are appropriately labeled 'left button' and 'right button' on the screen.", /* control_details */
19352 &xenophob_get_ctrl_name
19353 };
19354
xenophob_get_ctrl_name(int type)19355 const char *xenophob_get_ctrl_name(int type)
19356 {
19357 switch(type)
19358 {
19359 case IPT_BUTTON1: return BTN1 "Fire / Punch";
19360 case IPT_BUTTON2: return BTN2 "Left Button";
19361 case IPT_BUTTON3: return BTN3 "Right Button";
19362 } /* end of switch */
19363
19364 return joy4way_labels(type);
19365 }
19366
19367 const struct ControlInfo xevious_ctrl =
19368 {
19369 false, /* 45_degree_rotation for joystick(s) */
19370 true, /* alternating_controls */
19371 true, /* mirrored_controls */
19372 "", /* control_details */
19373 &xevious_get_ctrl_name
19374 };
19375
xevious_get_ctrl_name(int type)19376 const char *xevious_get_ctrl_name(int type)
19377 {
19378 switch(type)
19379 {
19380 case IPT_BUTTON1: return BTN1 "Zapper";
19381 case IPT_BUTTON2: return BTN2 "Blaster";
19382 } /* end of switch */
19383
19384 return joy4way_labels(type);
19385 }
19386
19387 const struct ControlInfo xybots_ctrl =
19388 {
19389 false, /* 45_degree_rotation for joystick(s) */
19390 false, /* alternating_controls */
19391 true, /* mirrored_controls */
19392 "This game used a twist stick, not to be confused with a rotary mechanical stick. Basically you can twist the stick left and right for two additional inputs.", /* control_details */
19393 &xybots_get_ctrl_name
19394 };
19395
xybots_get_ctrl_name(int type)19396 const char *xybots_get_ctrl_name(int type)
19397 {
19398 switch(type)
19399 {
19400 case IPT_BUTTON1: return BTN1 "Fire";
19401 case IPT_BUTTON2: return BTN2 "Turn Left";
19402 case IPT_BUTTON3: return BTN3 "Turn Right";
19403 } /* end of switch */
19404
19405 return joy4way_labels(type);
19406 }
19407
19408 const struct ControlInfo yesnoj_ctrl =
19409 {
19410 false, /* 45_degree_rotation for joystick(s) */
19411 false, /* alternating_controls */
19412 true, /* mirrored_controls */
19413 "", /* control_details */
19414 &yesnoj_get_ctrl_name
19415 };
19416
yesnoj_get_ctrl_name(int type)19417 const char *yesnoj_get_ctrl_name(int type)
19418 {
19419 switch(type)
19420 {
19421 case IPT_BUTTON1: return BTN1 "Yes";
19422 case IPT_BUTTON2: return BTN2 "No";
19423 } /* end of switch */
19424
19425 return "";
19426 }
19427
19428 const struct ControlInfo yiear_ctrl =
19429 {
19430 false, /* 45_degree_rotation for joystick(s) */
19431 true, /* alternating_controls */
19432 true, /* mirrored_controls */
19433 "", /* control_details */
19434 &yiear_get_ctrl_name
19435 };
19436
yiear_get_ctrl_name(int type)19437 const char *yiear_get_ctrl_name(int type)
19438 {
19439 switch(type)
19440 {
19441 case IPT_BUTTON1: return BTN1 "Punch";
19442 case IPT_BUTTON2: return BTN2 "Kick";
19443 case IPT_JOYSTICK_UP: return "Jump";
19444 case IPT_JOYSTICK_DOWN: return "Stoop Down";
19445 case IPT_JOYSTICK_LEFT: return "Left";
19446 case IPT_JOYSTICK_RIGHT: return "Right";
19447 } /* end of switch */
19448
19449 return "";
19450 }
19451
19452 const struct ControlInfo yosakdon_ctrl =
19453 {
19454 false, /* 45_degree_rotation for joystick(s) */
19455 true, /* alternating_controls */
19456 true, /* mirrored_controls */
19457 "", /* control_details */
19458 &yosakdon_get_ctrl_name
19459 };
19460
yosakdon_get_ctrl_name(int type)19461 const char *yosakdon_get_ctrl_name(int type)
19462 {
19463 switch(type)
19464 {
19465 case IPT_BUTTON1: return BTN1 "Fire";
19466 } /* end of switch */
19467
19468 return joy2way_labels(type);
19469 }
19470
19471 const struct ControlInfo yuyugogo_ctrl =
19472 {
19473 false, /* 45_degree_rotation for joystick(s) */
19474 false, /* alternating_controls */
19475 true, /* mirrored_controls */
19476 "Game in Japanese. No references available. Buttons relate to the numbers on the screen.", /* control_details */
19477 &yuyugogo_get_ctrl_name
19478 };
19479
yuyugogo_get_ctrl_name(int type)19480 const char *yuyugogo_get_ctrl_name(int type)
19481 {
19482 switch(type)
19483 {
19484 case IPT_BUTTON1: return BTN1 "1";
19485 case IPT_BUTTON2: return BTN2 "2";
19486 case IPT_BUTTON3: return BTN3 "3";
19487 case IPT_BUTTON4: return BTN4 "4";
19488 case IPT_BUTTON5: return BTN5 "??";
19489 } /* end of switch */
19490
19491 return "";
19492 }
19493
19494 const struct ControlInfo zaxxon_ctrl =
19495 {
19496 false, /* 45_degree_rotation for joystick(s) */
19497 true, /* alternating_controls */
19498 true, /* mirrored_controls */
19499 "The fire button is also placed on the control panel. The button on the trigger stick lights up when it's time for you to do some shooting.", /* control_details */
19500 &zaxxon_get_ctrl_name
19501 };
19502
zaxxon_get_ctrl_name(int type)19503 const char *zaxxon_get_ctrl_name(int type)
19504 {
19505 switch(type)
19506 {
19507 case IPT_BUTTON1: return BTN1 "Fire";
19508 } /* end of switch */
19509
19510 return joy4way_labels(type);
19511 }
19512
19513 const struct ControlInfo zerohour_ctrl =
19514 {
19515 false, /* 45_degree_rotation for joystick(s) */
19516 true, /* alternating_controls */
19517 true, /* mirrored_controls */
19518 "", /* control_details */
19519 &zerohour_get_ctrl_name
19520 };
19521
zerohour_get_ctrl_name(int type)19522 const char *zerohour_get_ctrl_name(int type)
19523 {
19524 switch(type)
19525 {
19526 case IPT_BUTTON1: return BTN1 "Fire";
19527 } /* end of switch */
19528
19529 return joy4way_labels(type);
19530 }
19531
19532 const struct ControlInfo zeropnt_ctrl =
19533 {
19534 false, /* 45_degree_rotation for joystick(s) */
19535 false, /* alternating_controls */
19536 true, /* mirrored_controls */
19537 "", /* control_details */
19538 &zeropnt_get_ctrl_name
19539 };
19540
zeropnt_get_ctrl_name(int type)19541 const char *zeropnt_get_ctrl_name(int type)
19542 {
19543 switch(type)
19544 {
19545 case IPT_BUTTON1: return BTN1 "Fire";
19546 case IPT_LIGHTGUN_Y: return "Up";
19547 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
19548 case IPT_LIGHTGUN_X: return "Left";
19549 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
19550 } /* end of switch */
19551
19552 return "";
19553 }
19554
19555 const struct ControlInfo zeropnt2_ctrl =
19556 {
19557 false, /* 45_degree_rotation for joystick(s) */
19558 false, /* alternating_controls */
19559 true, /* mirrored_controls */
19560 "", /* control_details */
19561 &zeropnt2_get_ctrl_name
19562 };
19563
zeropnt2_get_ctrl_name(int type)19564 const char *zeropnt2_get_ctrl_name(int type)
19565 {
19566 switch(type)
19567 {
19568 case IPT_BUTTON1: return BTN1 "Fire";
19569 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
19570 case IPT_LIGHTGUN_Y: return "Up";
19571 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
19572 case IPT_LIGHTGUN_X: return "Left";
19573 } /* end of switch */
19574
19575 return "";
19576 }
19577
19578 const struct ControlInfo zerowing_ctrl =
19579 {
19580 false, /* 45_degree_rotation for joystick(s) */
19581 true, /* alternating_controls */
19582 true, /* mirrored_controls */
19583 "Control wise this game is pretty standard, but the game's claim to fame is the wording of the translated text, or more accurately the poor wording of the translated text. This is commonly referred to as 'Engrish' Ever wondered where the 'All Your Base Are Belong To Us.' line comes from? It's this game. So for a good laugh check it out. All your controls are belong to us!!!!", /* control_details */
19584 &zerowing_get_ctrl_name
19585 };
19586
zerowing_get_ctrl_name(int type)19587 const char *zerowing_get_ctrl_name(int type)
19588 {
19589 switch(type)
19590 {
19591 case IPT_BUTTON1: return BTN1 "Fire";
19592 case IPT_BUTTON2: return BTN2 "Shield";
19593 } /* end of switch */
19594
19595 return joy4way_labels(type);
19596 }
19597
19598 const struct ControlInfo zerozone_ctrl =
19599 {
19600 false, /* 45_degree_rotation for joystick(s) */
19601 false, /* alternating_controls */
19602 true, /* mirrored_controls */
19603 "", /* control_details */
19604 &zerozone_get_ctrl_name
19605 };
19606
zerozone_get_ctrl_name(int type)19607 const char *zerozone_get_ctrl_name(int type)
19608 {
19609 switch(type)
19610 {
19611 case IPT_BUTTON1: return BTN1 "Rotate";
19612 } /* end of switch */
19613
19614 return joy4way_labels(type);
19615 }
19616
19617 const struct ControlInfo zingzip_ctrl =
19618 {
19619 false, /* 45_degree_rotation for joystick(s) */
19620 false, /* alternating_controls */
19621 true, /* mirrored_controls */
19622 "", /* control_details */
19623 &zingzip_get_ctrl_name
19624 };
19625
zingzip_get_ctrl_name(int type)19626 const char *zingzip_get_ctrl_name(int type)
19627 {
19628 switch(type)
19629 {
19630 case IPT_BUTTON1: return BTN1 "Fire";
19631 case IPT_BUTTON2: return BTN2 "Bomb";
19632 } /* end of switch */
19633
19634 return joy4way_labels(type);
19635 }
19636
19637 const struct ControlInfo zoar_ctrl =
19638 {
19639 false, /* 45_degree_rotation for joystick(s) */
19640 true, /* alternating_controls */
19641 true, /* mirrored_controls */
19642 "This is probably the only 2d shooter ever to utilize the z axis. Instead of being able to speedup or slowdown with the up and down directions, these directions allow you to make the craft raise or lower to the ground. The top speed key doesn't appear to do anything until you try to move left or right. When you do you will move much more quickly.", /* control_details */
19643 &zoar_get_ctrl_name
19644 };
19645
zoar_get_ctrl_name(int type)19646 const char *zoar_get_ctrl_name(int type)
19647 {
19648 switch(type)
19649 {
19650 case IPT_BUTTON1: return BTN1 "High Missile";
19651 case IPT_BUTTON2: return BTN2 "Low Missile";
19652 case IPT_BUTTON3: return BTN3 "Top Speed";
19653 case IPT_JOYSTICK_UP: return "Gain Altitude";
19654 case IPT_JOYSTICK_DOWN: return "Lose Altitude";
19655 case IPT_JOYSTICK_LEFT: return "Left";
19656 case IPT_JOYSTICK_RIGHT: return "Right";
19657 } /* end of switch */
19658
19659 return "";
19660 }
19661
19662 const struct ControlInfo zodiack_ctrl =
19663 {
19664 false, /* 45_degree_rotation for joystick(s) */
19665 true, /* alternating_controls */
19666 true, /* mirrored_controls */
19667 "", /* control_details */
19668 &zodiack_get_ctrl_name
19669 };
19670
zodiack_get_ctrl_name(int type)19671 const char *zodiack_get_ctrl_name(int type)
19672 {
19673 switch(type)
19674 {
19675 case IPT_BUTTON1: return BTN1 "Fire";
19676 } /* end of switch */
19677
19678 return joy4way_labels(type);
19679 }
19680
19681 const struct ControlInfo zombraid_ctrl =
19682 {
19683 false, /* 45_degree_rotation for joystick(s) */
19684 false, /* alternating_controls */
19685 true, /* mirrored_controls */
19686 "Controls were sawed-off shotguns with pump action reload, this is mapped to button 2", /* control_details */
19687 &zombraid_get_ctrl_name
19688 };
19689
zombraid_get_ctrl_name(int type)19690 const char *zombraid_get_ctrl_name(int type)
19691 {
19692 switch(type)
19693 {
19694 case IPT_BUTTON1: return BTN1 "Fire";
19695 case IPT_BUTTON2: return BTN2 "Reload";
19696 case IPT_LIGHTGUN_Y: return "Up";
19697 case (IPT_LIGHTGUN_X + IPT_EXTENSION): return "Right";
19698 case IPT_LIGHTGUN_X: return "Left";
19699 case (IPT_LIGHTGUN_Y + IPT_EXTENSION): return "Down";
19700 } /* end of switch */
19701
19702 return "";
19703 }
19704
19705 const struct ControlInfo zookeep_ctrl =
19706 {
19707 false, /* 45_degree_rotation for joystick(s) */
19708 true, /* alternating_controls */
19709 true, /* mirrored_controls */
19710 "", /* control_details */
19711 &zookeep_get_ctrl_name
19712 };
19713
zookeep_get_ctrl_name(int type)19714 const char *zookeep_get_ctrl_name(int type)
19715 {
19716 switch(type)
19717 {
19718 case IPT_BUTTON1: return BTN1 "Jump";
19719 } /* end of switch */
19720
19721 return joy4way_labels(type);
19722 }
19723
19724 const struct ControlInfo zunkyou_ctrl =
19725 {
19726 false, /* 45_degree_rotation for joystick(s) */
19727 true, /* alternating_controls */
19728 true, /* mirrored_controls */
19729 "", /* control_details */
19730 &zunkyou_get_ctrl_name
19731 };
19732
zunkyou_get_ctrl_name(int type)19733 const char *zunkyou_get_ctrl_name(int type)
19734 {
19735 switch(type)
19736 {
19737 case IPT_BUTTON1: return BTN1 "Attack";
19738 case IPT_BUTTON2: return BTN2 "Special Attack";
19739 } /* end of switch */
19740
19741 return joy4way_labels(type);
19742 }
19743
19744 const struct ControlInfo zwackery_ctrl =
19745 {
19746 false, /* 45_degree_rotation for joystick(s) */
19747 true, /* alternating_controls */
19748 true, /* mirrored_controls */
19749 "This game has an identical control panel layout as discs of tron. Unfortunately due to the fact that it's a platformer, it is extremely akward to play unless you have those exact controls.", /* control_details */
19750 &zwackery_get_ctrl_name
19751 };
19752
zwackery_get_ctrl_name(int type)19753 const char *zwackery_get_ctrl_name(int type)
19754 {
19755 switch(type)
19756 {
19757 case IPT_BUTTON1: return BTN1 "Sword";
19758 case IPT_BUTTON2: return BTN2 "Shield";
19759 case IPT_BUTTON3: return BTN3 "Pick Up";
19760 case IPT_BUTTON4: return BTN4 "Cast Spell";
19761 case IPT_JOYSTICK_UP: return "Up";
19762 case IPT_JOYSTICK_DOWN: return "Down";
19763 case IPT_JOYSTICK_LEFT: return "Run Left";
19764 case IPT_JOYSTICK_RIGHT: return "Run Right";
19765 case IPT_DIAL: return "Aim Sword Left";
19766 case (IPT_DIAL + IPT_EXTENSION): return "Aim Sword Right";
19767 } /* end of switch */
19768
19769 return "";
19770 }
19771
19772 const struct ControlInfo zzyzzyxx_ctrl =
19773 {
19774 false, /* 45_degree_rotation for joystick(s) */
19775 true, /* alternating_controls */
19776 true, /* mirrored_controls */
19777 "", /* control_details */
19778 &zzyzzyxx_get_ctrl_name
19779 };
19780
zzyzzyxx_get_ctrl_name(int type)19781 const char *zzyzzyxx_get_ctrl_name(int type)
19782 {
19783 switch(type)
19784 {
19785 case IPT_BUTTON1: return BTN1 "Make Brick";
19786 case IPT_JOYSTICK_UP: return "Up";
19787 case IPT_JOYSTICK_DOWN: return "Down";
19788 } /* end of switch */
19789
19790 return "";
19791 }
19792