Annotation of uae/src/od-win32/joystick.c, revision 1.1.1.1

1.1       root        1: /* 
                      2:  * UAE - The Un*x Amiga Emulator
                      3:  *
                      4:  * Win32 interface
                      5:  *
                      6:  * Copyright 1997 Mathias Ortmann
                      7:  */
                      8: 
                      9: #ifdef __GNUC__
                     10: #define __int64 long long
                     11: #include "machdep/winstuff.h"
                     12: #else
                     13: #include <windows.h>
                     14: #include <ddraw.h>
                     15: #include <stdlib.h>
                     16: #include <stdarg.h>
                     17: #include <commctrl.h>
                     18: #include <commdlg.h>
                     19: #include <stdio.h>
                     20: #include <fcntl.h>
                     21: #include <sys/stat.h>
                     22: #include <io.h>
                     23: #endif
                     24: 
                     25: #include "config.h"
                     26: #include "sysconfig.h"
                     27: #include "sysdeps.h"
                     28: #include "options.h"
                     29: #include "osdep/win32gui.h"
                     30: #include "include/memory.h"
                     31: #include "resource.h"
                     32: #include "osdep/win32.h"
                     33: 
                     34: /* Joystick emulation, Win32 interface */
                     35: #define MAXJOYSTICKS 2
                     36: 
                     37: static int joystickpresent[MAXJOYSTICKS];
                     38: static int unplugged[MAXJOYSTICKS];
                     39: static int warned[MAXJOYSTICKS];
                     40: static JOYCAPS jc[MAXJOYSTICKS];
                     41: static JOYINFOEX ji =
                     42: {sizeof (ji), JOY_RETURNBUTTONS | JOY_RETURNX | JOY_RETURNY};
                     43: 
                     44: void read_joystick (int nr, short *dir, int *button)
                     45: {
                     46:     int left = 0, right = 0, top = 0, bot = 0;
                     47:     int joyerr;
                     48: 
                     49:     *dir = *button = 0;
                     50:     if (!joystickpresent[nr])
                     51:        return;
                     52: 
                     53:     if (unplugged[nr]) {
                     54:        unplugged[nr]--;
                     55:        return;
                     56:     }
                     57:     switch (joyerr = joyGetPosEx (JOYSTICKID1 + nr, &ji)) {
                     58:     case JOYERR_NOERROR:
                     59:        warned[nr] = 0;
                     60:        break;
                     61:     case JOYERR_UNPLUGGED:
                     62:        if (!warned[nr]) {
                     63:            fprintf (stderr, "Joystick %d seems to be unplugged.\n", nr);
                     64:            warned[nr] = 1;
                     65:        }
                     66:        unplugged[nr] = 200;
                     67:        return;
                     68:     default:
                     69:        fprintf (stderr, "Error reading joystick %d: %d.\n", nr, joyerr);
                     70:        unplugged[nr] = 100;
                     71:        return;
                     72:     }
                     73: 
                     74:     if (ji.dwXpos < (jc[nr].wXmin + 2 * (jc[nr].wXmax - jc[nr].wXmin) / 5))
                     75:        left = 1;
                     76:     else if (ji.dwXpos > (jc[nr].wXmin + 3 * (jc[nr].wXmax - jc[nr].wXmin) / 5))
                     77:        right = 1;
                     78: 
                     79:     if (ji.dwYpos < (jc[nr].wYmin + 2 * (jc[nr].wYmax - jc[nr].wYmin) / 5))
                     80:        top = 1;
                     81:     else if (ji.dwYpos > (jc[nr].wYmin + 3 * (jc[nr].wYmax - jc[nr].wYmin) / 5))
                     82:        bot = 1;
                     83: 
                     84:     if (left)
                     85:        top = !top;
                     86:     if (right)
                     87:        bot = !bot;
                     88:     *dir = bot | (right << 1) | (top << 8) | (left << 9);
                     89:     *button = ji.dwButtons;
                     90: }
                     91: 
                     92: void init_joystick (void)
                     93: {
                     94:     int nr;
                     95:     int found = 0;
                     96: 
                     97:     for (nr = 0; nr < MAXJOYSTICKS; nr++) {
                     98:        if (joyGetDevCaps (JOYSTICKID1 + nr, jc + nr, sizeof (jc)) == JOYERR_NOERROR) {
                     99:            printf ("Joystick %d: %s with %d buttons\n", nr, jc[nr].szPname, jc[nr].wNumButtons);
                    100:            joystickpresent[nr] = 1;
                    101:            found++;
                    102:        }
                    103:     }
                    104: 
                    105:     fprintf (stdout, "%d joystick(s) found.\n", found);
                    106: }
                    107: 
                    108: void close_joystick (void)
                    109: {
                    110: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.