Annotation of uae/src/od-win32/joystick.c, revision 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.