~ubuntu-branches/ubuntu/maverick/vice/maverick

« back to all changes in this revision

Viewing changes to src/arch/msdos/uijoystick.c

  • Committer: Bazaar Package Importer
  • Author(s): Zed Pobre
  • Date: 2005-02-01 11:30:26 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20050201113026-3eyakzsmmheclvjg
Tags: 1.16-1
* New upstream version
* Fixes crash on 64-bit architectures (closes: #287640)
* x128 working again (closes: #286767)
* Works fine with /dev/dsp in use (not in the main changelog, but tested
  on my local machine as working).  Presumably, this also takes care of
  the issue with dsp being held.  I'm not sure if this is because I'm
  testing it on a 2.6 kernel now -- if you are still having problems
  with /dev/dsp, please reopen the bugs. (closes: #152952, #207942)
* Don't kill Makefile.in on clean

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
#include <conio.h>
30
30
#include <stdio.h>
31
31
 
 
32
#include <allegro.h>
 
33
 
32
34
#include "joy.h"
33
35
#include "lib.h"
34
36
#include "grabkey.h"
65
67
    return "Unknown";
66
68
}
67
69
 
 
70
static TUI_MENU_CALLBACK(get_hw_joystick_type_callback)
 
71
{
 
72
    int value;
 
73
 
 
74
    resources_get_value("HwJoyType", (void *)&value);
 
75
    switch (value) {
 
76
      case 0:
 
77
        return "None";
 
78
#ifdef JOY_TYPE_STANDARD
 
79
      case JOY_TYPE_STANDARD:
 
80
        return "Standard";
 
81
#endif
 
82
#ifdef JOY_TYPE_2PADS
 
83
      case JOY_TYPE_2PADS:
 
84
        return "2 pads";
 
85
#endif
 
86
#ifdef JOY_TYPE_4BUTTON
 
87
      case JOY_TYPE_4BUTTON:
 
88
        return "4 buttons";
 
89
#endif
 
90
#ifdef JOY_TYPE_6BUTTON
 
91
      case JOY_TYPE_6BUTTON:
 
92
        return "6 buttons";
 
93
#endif
 
94
#ifdef JOY_TYPE_8BUTTON
 
95
      case JOY_TYPE_8BUTTON:
 
96
        return "8 buttons";
 
97
#endif
 
98
#ifdef JOY_TYPE_FSPRO
 
99
      case JOY_TYPE_FSPRO:
 
100
        return "Flightstick Pro";
 
101
#endif
 
102
#ifdef JOY_TYPE_WINGEX
 
103
      case JOY_TYPE_WINGEX:
 
104
        return "Wingman Extreme";
 
105
#endif
 
106
#ifdef JOY_TYPE_SIDEWINDER
 
107
      case JOY_TYPE_SIDEWINDER:
 
108
        return "Sidewinder";
 
109
#endif
 
110
#ifdef JOY_TYPE_SIDEWINDER_AG
 
111
      case JOY_TYPE_SIDEWINDER_AG:
 
112
        return "Sidewinder Aggressive";
 
113
#endif
 
114
#ifdef JOY_TYPE_GAMEPAD_PRO
 
115
      case JOY_TYPE_GAMEPAD_PRO:
 
116
        return "GamePad Pro";
 
117
#endif
 
118
#ifdef JOY_TYPE_GRIP
 
119
      case JOY_TYPE_GRIP:
 
120
        return "GrIP";
 
121
#endif
 
122
#ifdef JOY_TYPE_GRIP4
 
123
      case JOY_TYPE_GRIP4:
 
124
        return "GrIP 4-way";
 
125
#endif
 
126
#ifdef JOY_TYPE_SNESPAD_LPT1
 
127
      case JOY_TYPE_SNESPAD_LPT1:
 
128
        return "SNESpad on LPT1";
 
129
#endif
 
130
#ifdef JOY_TYPE_SNESPAD_LPT2
 
131
      case JOY_TYPE_SNESPAD_LPT2:
 
132
        return "SNESpad on LPT2";
 
133
#endif
 
134
#ifdef JOY_TYPE_SNESPAD_LPT3
 
135
      case JOY_TYPE_SNESPAD_LPT3:
 
136
        return "SNESpad on LPT3";
 
137
#endif
 
138
#ifdef JOY_TYPE_PSXPAD_LPT1
 
139
      case JOY_TYPE_PSXPAD_LPT1:
 
140
        return "PSXpad on LPT1";
 
141
#endif
 
142
#ifdef JOY_TYPE_PSXPAD_LPT2
 
143
      case JOY_TYPE_PSXPAD_LPT2:
 
144
        return "PSXpad on LPT2";
 
145
#endif
 
146
#ifdef JOY_TYPE_PSXPAD_LPT3
 
147
      case JOY_TYPE_PSXPAD_LPT3:
 
148
        return "PSXpad on LPT3";
 
149
#endif
 
150
#ifdef JOY_TYPE_N64PAD_LPT1
 
151
      case JOY_TYPE_N64PAD_LPT1:
 
152
        return "N64pad on LPT1";
 
153
#endif
 
154
#ifdef JOY_TYPE_N64PAD_LPT2
 
155
      case JOY_TYPE_N64PAD_LPT2:
 
156
        return "N64pad on LPT2";
 
157
#endif
 
158
#ifdef JOY_TYPE_N64PAD_LPT3
 
159
      case JOY_TYPE_N64PAD_LPT3:
 
160
        return "N64pad on LPT3";
 
161
#endif
 
162
#ifdef JOY_TYPE_DB9_LPT1
 
163
      case JOY_TYPE_DB9_LPT1:
 
164
        return "DB9 on LPT1";
 
165
#endif
 
166
#ifdef JOY_TYPE_DB9_LPT2
 
167
      case JOY_TYPE_DB9_LPT2:
 
168
        return "DB9 on LPT2";
 
169
#endif
 
170
#ifdef JOY_TYPE_DB9_LPT3
 
171
      case JOY_TYPE_DB9_LPT3:
 
172
        return "DB9 on LPT3";
 
173
#endif
 
174
#ifdef JOY_TYPE_TURBOGRAFX_LPT1
 
175
      case JOY_TYPE_TURBOGRAFX_LPT1:
 
176
        return "TurbograFX on LPT1";
 
177
#endif
 
178
#ifdef JOY_TYPE_TURBOGRAFX_LPT2
 
179
      case JOY_TYPE_TURBOGRAFX_LPT2:
 
180
        return "TurbograFX on LPT2";
 
181
#endif
 
182
#ifdef JOY_TYPE_TURBOGRAFX_LPT3
 
183
      case JOY_TYPE_TURBOGRAFX_LPT3:
 
184
        return "TurbograFX on LPT3";
 
185
#endif
 
186
#ifdef JOY_TYPE_IFSEGA_ISA
 
187
      case JOY_TYPE_IFSEGA_ISA:
 
188
        return "IF-SEGA/ISA";
 
189
#endif
 
190
#ifdef JOY_TYPE_IFSEGA_PCI
 
191
      case JOY_TYPE_IFSEGA_PCI:
 
192
        return "IF-SEGA2/PCI";
 
193
#endif
 
194
#ifdef JOY_TYPE_IFSEGA_PCI_FAST
 
195
      case JOY_TYPE_IFSEGA_PCI_FAST:
 
196
        return "IF-SEGA2/PCI (normal)";
 
197
#endif
 
198
#ifdef JOY_TYPE_WINGWARRIOR
 
199
      case JOY_TYPE_WINGWARRIOR:
 
200
        return "Wingman Warrior";
 
201
#endif
 
202
    }
 
203
 
 
204
    return "Unknown";
 
205
}
 
206
 
68
207
static TUI_MENU_CALLBACK(set_joy_device_callback)
69
208
{
70
209
    int port = (int)param >> 8;
84
223
    return NULL;
85
224
}
86
225
 
 
226
static TUI_MENU_CALLBACK(joy_hw_callback)
 
227
{
 
228
    if (been_activated) {
 
229
        resources_set_value("HwJoyType", (resource_value_t)(param));
 
230
        ui_update_menus();
 
231
    } else {
 
232
        int value;
 
233
 
 
234
        resources_get_value("HwJoyType", (void *)&value);
 
235
        if (value == ((int)param))
 
236
            *become_default = 1;
 
237
    }
 
238
 
 
239
    return NULL;
 
240
}
 
241
 
87
242
static TUI_MENU_CALLBACK(swap_joysticks_callback)
88
243
{
89
244
    int value1, value2, tmp;
254
409
DEFINE_KEYSET_MENU(1)
255
410
DEFINE_KEYSET_MENU(2)
256
411
 
 
412
static tui_menu_item_def_t joy_list_submenu[] = {
 
413
        { "N_one",
 
414
          "No PC joystick",
 
415
          joy_hw_callback, (void *)0, 0,
 
416
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
417
#ifdef JOY_TYPE_STANDARD
 
418
        { "_Standard",
 
419
          "Standard PC joystick",
 
420
          joy_hw_callback, (void *)JOY_TYPE_STANDARD, 0,
 
421
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
422
#endif
 
423
#ifdef JOY_TYPE_2PADS
 
424
        { "_2 pads",
 
425
          "Standard PC joystick (2 pads)",
 
426
          joy_hw_callback, (void *)JOY_TYPE_2PADS, 0,
 
427
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
428
#endif
 
429
#ifdef JOY_TYPE_4BUTTON
 
430
        { "_4 buttons",
 
431
          "Standard PC joystick (4 buttons)",
 
432
          joy_hw_callback, (void *)JOY_TYPE_4BUTTON, 0,
 
433
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
434
#endif
 
435
#ifdef JOY_TYPE_6BUTTON
 
436
        { "_6 buttons",
 
437
          "Standard PC joystick (6 buttons)",
 
438
          joy_hw_callback, (void *)JOY_TYPE_8BUTTON, 0,
 
439
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
440
#endif
 
441
#ifdef JOY_TYPE_8BUTTON
 
442
        { "_8 buttons",
 
443
          "Standard PC joystick (8 buttons)",
 
444
          joy_hw_callback, (void *)JOY_TYPE_8BUTTON, 0,
 
445
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
446
#endif
 
447
#ifdef JOY_TYPE_FSPRO
 
448
        { "_Flightstick Pro",
 
449
          "Flightstick Pro",
 
450
          joy_hw_callback, (void *)JOY_TYPE_FSPRO, 0,
 
451
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
452
#endif
 
453
#ifdef JOY_TYPE_WINGEX
 
454
        { "_Wingman Extreme",
 
455
          "Wingman Extreme",
 
456
          joy_hw_callback, (void *)JOY_TYPE_WINGEX, 0,
 
457
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
458
#endif
 
459
#ifdef JOY_TYPE_SIDEWINDER
 
460
        { "S_idewinder",
 
461
          "Sidewinder",
 
462
          joy_hw_callback, (void *)JOY_TYPE_SIDEWINDER, 0,
 
463
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
464
#endif
 
465
#ifdef JOY_TYPE_SIDEWINDER_AG
 
466
        { "Sidewinder Aggressi_ve",
 
467
          "Sidewinder Aggressive",
 
468
          joy_hw_callback, (void *)JOY_TYPE_SIDEWINDER_AG, 0,
 
469
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
470
#endif
 
471
#ifdef JOY_TYPE_GAMEPAD_PRO
 
472
        { "_GamePad Pro",
 
473
          "GamePad Pro",
 
474
          joy_hw_callback, (void *)JOY_TYPE_GAMEPAD_PRO, 0,
 
475
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
476
#endif
 
477
#ifdef JOY_TYPE_GRIP
 
478
        { "G_rIP",
 
479
          "Gravis GrIP",
 
480
          joy_hw_callback, (void *)JOY_TYPE_GRIP, 0,
 
481
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
482
#endif
 
483
#ifdef JOY_TYPE_GRIP4
 
484
        { "GrI_P 4-way",
 
485
          "Gravis GrIP (4-way)",
 
486
          joy_hw_callback, (void *)JOY_TYPE_GRIP4, 0,
 
487
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
488
#endif
 
489
#ifdef JOY_TYPE_SNESPAD_LPT1
 
490
        { "SN_ESpad on LPT1",
 
491
          "Super Nintendo pad connected to parallel port 1",
 
492
          joy_hw_callback, (void *)JOY_TYPE_SNESPAD_LPT1, 0,
 
493
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
494
#endif
 
495
#ifdef JOY_TYPE_SNESPAD_LPT2
 
496
        { "SNESpad on LPT2",
 
497
          "Super Nintendo pad connected to parallel port 2",
 
498
          joy_hw_callback, (void *)JOY_TYPE_SNESPAD_LPT2, 0,
 
499
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
500
#endif
 
501
#ifdef JOY_TYPE_SNESPAD_LPT3
 
502
        { "SNESpad on LPT3",
 
503
          "Super Nintendo pad connected to parallel port 3",
 
504
          joy_hw_callback, (void *)JOY_TYPE_SNESPAD_LPT3, 0,
 
505
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
506
#endif
 
507
#ifdef JOY_TYPE_PSXPAD_LPT1
 
508
        { "PS_Xpad on LPT1",
 
509
          "Playstation pad connected to parallel port 1",
 
510
          joy_hw_callback, (void *)JOY_TYPE_PSXPAD_LPT1, 0,
 
511
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
512
#endif
 
513
#ifdef JOY_TYPE_PSXPAD_LPT2
 
514
        { "PSXpad on LPT2",
 
515
          "Playstation pad connected to parallel port 2",
 
516
          joy_hw_callback, (void *)JOY_TYPE_PSXPAD_LPT2, 0,
 
517
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
518
#endif
 
519
#ifdef JOY_TYPE_PSXPAD_LPT3
 
520
        { "PSXpad on LPT3",
 
521
          "Playstation pad connected to parallel port 3",
 
522
          joy_hw_callback, (void *)JOY_TYPE_PSXPAD_LPT3, 0,
 
523
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
524
#endif
 
525
#ifdef JOY_TYPE_N64PAD_LPT1
 
526
        { "_N64pad on LPT1",
 
527
          "Nintendo 64 pad connected to parallel port 1",
 
528
          joy_hw_callback, (void *)JOY_TYPE_N64PAD_LPT1, 0,
 
529
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
530
#endif
 
531
#ifdef JOY_TYPE_N64PAD_LPT2
 
532
        { "N64pad on LPT2",
 
533
          "Nintendo 64 pad connected to parallel port 2",
 
534
          joy_hw_callback, (void *)JOY_TYPE_N64PAD_LPT2, 0,
 
535
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
536
#endif
 
537
#ifdef JOY_TYPE_N64PAD_LPT3
 
538
        { "N64pad on LPT3",
 
539
          "Nintendo 64 pad connected to parallel port 3",
 
540
          joy_hw_callback, (void *)JOY_TYPE_N64PAD_LPT3, 0,
 
541
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
542
#endif
 
543
#ifdef JOY_TYPE_DB9_LPT1
 
544
        { "DB_9 on LPT1",
 
545
          "Commodore 64 joystick connected to parallel port 1 with DB9 interface",
 
546
          joy_hw_callback, (void *)JOY_TYPE_DB9_LPT1, 0,
 
547
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
548
#endif
 
549
#ifdef JOY_TYPE_DB9_LPT2
 
550
        { "DB9 on LPT2",
 
551
          "Commodore 64 joystick connected to parallel port 2 with DB9 interface",
 
552
          joy_hw_callback, (void *)JOY_TYPE_DB9_LPT2, 0,
 
553
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
554
#endif
 
555
#ifdef JOY_TYPE_DB9_LPT3
 
556
        { "DB9 on LPT3",
 
557
          "Commodore 64 joystick connected to parallel port 3 with DB9 interface",
 
558
          joy_hw_callback, (void *)JOY_TYPE_DB9_LPT3, 0,
 
559
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
560
#endif
 
561
#ifdef JOY_TYPE_TURBOGRAFX_LPT1
 
562
        { "_TurbograFX on LPT1",
 
563
          "Commodore 64 joystick connected to parallel port 1 with TurbograFX interface",
 
564
          joy_hw_callback, (void *)JOY_TYPE_TURBOGRAFX_LPT1, 0,
 
565
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
566
#endif
 
567
#ifdef JOY_TYPE_TURBOGRAFX_LPT2
 
568
        { "TurbograFX on LPT2",
 
569
          "Commodore 64 joystick connected to parallel port 2 with TurbograFX interface",
 
570
          joy_hw_callback, (void *)JOY_TYPE_TURBOGRAFX_LPT2, 0,
 
571
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
572
#endif
 
573
#ifdef JOY_TYPE_TURBOGRAFX_LPT3
 
574
        { "TurbograFX on LPT3",
 
575
          "Commodore 64 joystick connected to parallel port 3 with TurbograFX interface",
 
576
          joy_hw_callback, (void *)JOY_TYPE_TURBOGRAFX_LPT3
 
 
b', 0,'
 
577
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
578
#endif
 
579
#ifdef JOY_TYPE_IFSEGA_ISA
 
580
        { "IF-SEGA/IS_A",
 
581
          "IF-SEGA (ISA)",
 
582
          joy_hw_callback, (void *)JOY_TYPE_IFSEGA_ISA, 0,
 
583
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
584
#endif
 
585
#ifdef JOY_TYPE_IFSEGA_PCI
 
586
        { "IF-SEGA2/P_CI",
 
587
          "IF-SEGA2/PCI",
 
588
          joy_hw_callback, (void *)JOY_TYPE_IFSEGA_PCI, 0,
 
589
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
590
#endif
 
591
#ifdef JOY_TYPE_IFSEGA_PCI_FAST
 
592
        { "IF-SEGA2/PCI (norma_l)",
 
593
          "IF-SEGA2/PCI (normal)",
 
594
          joy_hw_callback, (void *)JOY_TYPE_IFSEGA_PCI_FAST, 0,
 
595
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
596
#endif
 
597
#ifdef JOY_TYPE_WINGWARRIOR
 
598
        { "Wing_man Warrior",
 
599
          "Wingman Warrior",
 
600
          joy_hw_callback, (void *)JOY_TYPE_WINGWARRIOR, 0,
 
601
          TUI_MENU_BEH_CLOSE, NULL, NULL },
 
602
#endif
 
603
    { NULL }
 
604
};
 
605
 
 
606
 
257
607
static tui_menu_item_def_t single_joystick_submenu[] = {
258
608
    { "Joystick _Device:",
259
609
      "Specify device for joystick emulation",
268
618
      "Configure keyboard set B for joystick emulation",
269
619
      NULL, NULL, 0,
270
620
      TUI_MENU_BEH_CONTINUE, keyset_2_submenu, "Keyset B" },
 
621
    { "--" },
 
622
    { "Set joystick _hardware type",
 
623
      "Set type of PC joystick(s)",
 
624
      get_hw_joystick_type_callback, NULL, 21,
 
625
      TUI_MENU_BEH_CONTINUE, joy_list_submenu, "List of joystick types" },
271
626
    { NULL }
272
627
};
273
628
 
294
649
      "Configure keyboard set B for joystick emulation",
295
650
      NULL, NULL, 0,
296
651
      TUI_MENU_BEH_CONTINUE, keyset_2_submenu, "Keyset B" },
 
652
    { "--" },
 
653
    { "Set joystick _hardware type",
 
654
      "Set type of PC joystick(s)",
 
655
      get_hw_joystick_type_callback, NULL, 30,
 
656
      TUI_MENU_BEH_CONTINUE, joy_list_submenu, "List of joystick types" },
297
657
    { NULL }
298
658
};
299
659