home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser-CD 2000 January / LCD_01_2000.iso / games / doom / pmdoom / src / control / joypad.c < prev   
C/C++ Source or Header  |  1999-12-17  |  2KB  |  78 lines

  1. /*
  2.  *     Joypad routine update
  3.  *
  4.  *    Patrice Mandin
  5. */
  6.  
  7. #include <osbind.h>
  8.  
  9. #include "doomdef.h"
  10. #include "d_main.h"
  11. #include "d_event.h"
  12. #include "control/joypad.h"
  13.  
  14. unsigned long cur_joypad=0;
  15.  
  16. void I_UpdateJoypad_hardware(void)
  17. {
  18.     event_t    event;
  19.  
  20.     /* Hardware read joypads */
  21.  
  22.     Supexec(I_Asm_UpdateJoypad);
  23.     
  24.     /* Scan joypad 0 changes */
  25.     /* Simulate keyboard */
  26.  
  27. #define PAD_DOWN(a) (atari_joypad0 & a)
  28. #define PAD_PRESS(a) ( (atari_joypad0 & a) && !(cur_joypad & a) )
  29. #define PAD_WASPRESSED(a) ( (cur_joypad & a) && !(atari_joypad0 & a) )
  30. #define PROCESS_PAD(k,t)                    \
  31.     if (PAD_PRESS(k))                    \
  32.     {                            \
  33.             event.type = ev_keydown;        \
  34.             event.data1 = t;            \
  35.             D_PostEvent(&event);            \
  36.     }                            \
  37.     if (PAD_WASPRESSED(k))                    \
  38.     {                            \
  39.             event.type = ev_keyup;            \
  40.             event.data1 = t;            \
  41.             D_PostEvent(&event);            \
  42.     }
  43.  
  44.     if (atari_joypad0 != cur_joypad)
  45.     {
  46.         PROCESS_PAD(JP_UP,KEY_UPARROW);
  47.         PROCESS_PAD(JP_DOWN,KEY_DOWNARROW);
  48.         PROCESS_PAD(JP_LEFT,KEY_LEFTARROW);
  49.         PROCESS_PAD(JP_RIGHT,KEY_RIGHTARROW);
  50.  
  51.         PROCESS_PAD(JP_OPTION,KEY_ESCAPE);
  52.         PROCESS_PAD(JP_PAUSE,KEY_PAUSE);
  53.  
  54.         PROCESS_PAD(JP_FIRE0,KEY_RALT);
  55.         PROCESS_PAD(JP_FIRE1,KEY_RCTRL);
  56.         PROCESS_PAD(JP_FIRE2,' ');        
  57.  
  58.         PROCESS_PAD(JP_K1,'1');
  59.         PROCESS_PAD(JP_K2,'2');
  60.         PROCESS_PAD(JP_K3,'3');
  61.         PROCESS_PAD(JP_K5,'4');
  62.         PROCESS_PAD(JP_KASTER,'5');
  63.         PROCESS_PAD(JP_K0,'6');
  64.         PROCESS_PAD(JP_KNUM,'7');
  65.  
  66.         PROCESS_PAD(JP_KL,KEY_RALT);
  67.         PROCESS_PAD(JP_KL,KEY_LEFTARROW);
  68.         PROCESS_PAD(JP_KR,KEY_RALT);
  69.         PROCESS_PAD(JP_KR,KEY_RIGHTARROW);
  70.  
  71.         PROCESS_PAD(JP_KX,KEY_RSHIFT);
  72.         PROCESS_PAD(JP_KY,KEY_ENTER);
  73.         PROCESS_PAD(JP_KZ,KEY_TAB);
  74.  
  75.         cur_joypad=atari_joypad0;
  76.     }
  77. }
  78.