home *** CD-ROM | disk | FTP | other *** search
- /*
- * Joypad routine update
- *
- * Patrice Mandin
- */
-
- #include <osbind.h>
-
- #include "doomdef.h"
- #include "d_main.h"
- #include "d_event.h"
- #include "control/joypad.h"
-
- unsigned long cur_joypad=0;
-
- void I_UpdateJoypad_hardware(void)
- {
- event_t event;
-
- /* Hardware read joypads */
-
- Supexec(I_Asm_UpdateJoypad);
-
- /* Scan joypad 0 changes */
- /* Simulate keyboard */
-
- #define PAD_DOWN(a) (atari_joypad0 & a)
- #define PAD_PRESS(a) ( (atari_joypad0 & a) && !(cur_joypad & a) )
- #define PAD_WASPRESSED(a) ( (cur_joypad & a) && !(atari_joypad0 & a) )
- #define PROCESS_PAD(k,t) \
- if (PAD_PRESS(k)) \
- { \
- event.type = ev_keydown; \
- event.data1 = t; \
- D_PostEvent(&event); \
- } \
- if (PAD_WASPRESSED(k)) \
- { \
- event.type = ev_keyup; \
- event.data1 = t; \
- D_PostEvent(&event); \
- }
-
- if (atari_joypad0 != cur_joypad)
- {
- PROCESS_PAD(JP_UP,KEY_UPARROW);
- PROCESS_PAD(JP_DOWN,KEY_DOWNARROW);
- PROCESS_PAD(JP_LEFT,KEY_LEFTARROW);
- PROCESS_PAD(JP_RIGHT,KEY_RIGHTARROW);
-
- PROCESS_PAD(JP_OPTION,KEY_ESCAPE);
- PROCESS_PAD(JP_PAUSE,KEY_PAUSE);
-
- PROCESS_PAD(JP_FIRE0,KEY_RALT);
- PROCESS_PAD(JP_FIRE1,KEY_RCTRL);
- PROCESS_PAD(JP_FIRE2,' ');
-
- PROCESS_PAD(JP_K1,'1');
- PROCESS_PAD(JP_K2,'2');
- PROCESS_PAD(JP_K3,'3');
- PROCESS_PAD(JP_K5,'4');
- PROCESS_PAD(JP_KASTER,'5');
- PROCESS_PAD(JP_K0,'6');
- PROCESS_PAD(JP_KNUM,'7');
-
- PROCESS_PAD(JP_KL,KEY_RALT);
- PROCESS_PAD(JP_KL,KEY_LEFTARROW);
- PROCESS_PAD(JP_KR,KEY_RALT);
- PROCESS_PAD(JP_KR,KEY_RIGHTARROW);
-
- PROCESS_PAD(JP_KX,KEY_RSHIFT);
- PROCESS_PAD(JP_KY,KEY_ENTER);
- PROCESS_PAD(JP_KZ,KEY_TAB);
-
- cur_joypad=atari_joypad0;
- }
- }
-