website logo
Auteur
avatar
thellier

Forum » » Création-Développement » » Help demandée sur routine et programmation C


Posté : 07-03-2018 09:35 icone du post

>Si vous avez aussi un moyen d'utiliser un joystick sans passer par la "lowlevel.library", je suis preneur..

/*============================================================ =====*/
#ifdef DODEBUG
/*=================================================================* /
static void PrintJoyButtons(ULONG joy)
{
    if (joy AND JPF_BUTTON_PLAY)      DEBUGPRINTF("[PLAY/MMB]");
    if (joy AND JPF_BUTTON_REVERSE)   DEBUGPRINTF("[REVERSE]");
    if (joy AND JPF_BUTTON_FORWARD)   DEBUGPRINTF("[FORWARD]");
    if (joy AND JPF_BUTTON_GREEN)     DEBUGPRINTF("[SHUFFLE]");
    if (joy AND JPF_BUTTON_RED)       DEBUGPRINTF("[SELECT/LMB/FIRE]");
    if (joy AND JPF_BUTTON_BLUE)      DEBUGPRINTF("[STOP/RMB]");
}
/*========================================== =======================*/
static void PrintMouseDirection(ULONG joy)
{
    DEBUGPRINTF("[%ld,%ld]", (joy AND JP_MHORZ_MASK), (joy AND JP_MVERT_MASK) >> 8);
}
/*================================================================= */
static void PrintJoyDirection(ULONG joy)
{
    if (joy AND JPF_JOY_UP)       DEBUGPRINTF("[UP]");
    if (joy AND JPF_JOY_DOWN)     DEBUGPRINTF("[DOWN]");
    if (joy AND JPF_JOY_LEFT)     DEBUGPRINTF("[LEFT]");
    if (joy AND JPF_JOY_RIGHT)    DEBUGPRINTF("[RIGHT]");
}
/*============================================= ====================*/
static void PrintJoyport(ULONG unit,ULONG joy)
{
int i;
 
    DEBUGPRINTF("UNIT%ld: ",unit);
    for(i = 31; i >= 0; i--)
    {
        DEBUGPRINTF("%d", (joy AND (1 << i)) ? 1 : 0);
    }
 
    DEBUGPRINTF(" - ");
 
    if ((joy AND JP_TYPE_MASK) == JP_TYPE_NOTAVAIL) DEBUGPRINTF("NOT AVAILABLE");
    if ((joy AND JP_TYPE_MASK) == JP_TYPE_UNKNOWN)  DEBUGPRINTF("UNKNOWN");
 
    if ((joy AND JP_TYPE_MASK) == JP_TYPE_JOYSTK)
    {
        DEBUGPRINTF("JOYSTICK - ");
        PrintJoyDirection(joy);
        PrintJoyButtons(joy);
    }
 
    if ((joy AND JP_TYPE_MASK) == JP_TYPE_GAMECTLR)
    {
        DEBUGPRINTF("GAME CONTROLLER - ");
        PrintJoyDirection(joy);
        PrintJoyButtons(joy);
    }
 
    if ((joy AND JP_TYPE_MASK) == JP_TYPE_MOUSE)
    {
        DEBUGPRINTF("MOUSE - ");
        PrintMouseDirection(joy);
        PrintJoyButtons(joy);
    }

    DEBUGPRINTF("\n");
}
/*================================================== ===============*/
#endif
/*============================================== ===================*/
void OSJoystick(struct GM_Game *G)
{
ULONG joy,n;
BOOL GotJoystick;

    GotJoystick=FALSE;
    NLOOP(4)
    {
    joy = ReadJoyPort(n);
    if(joy)
    if(!((joy AND JP_TYPE_MASK) == JP_TYPE_MOUSE) )
    if(!((joy AND JP_TYPE_MASK) == JP_TYPE_NOTAVAIL)  )
        {GotJoystick=TRUE;break;}
    }

    if(!GotJoystick) return;
    
    G->joystick.right    =((joy AND JPF_JOY_RIGHT    ) != 0);
    G->joystick.left    =((joy AND JPF_JOY_LEFT        ) != 0);
    G->joystick.down    =((joy AND JPF_JOY_DOWN        ) != 0);
    G->joystick.up    =((joy AND JPF_JOY_UP        ) != 0);    
    G->joystick.b0    =((joy AND JPF_BUTTON_RED    ) != 0);
    G->joystick.b1    =((joy AND JPF_BUTTON_PLAY    ) != 0);

    
#ifdef DODEBUG
    if(debug) PrintJoyport(n,joy);
#endif
}
/*====================================== ===========================*/
Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig

Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=2508&forum=14