Forum » » Création-Développement » » Help demandée sur routine et programmation C
Posté : 07-03-2018 09:35
>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