Bienvenue sur Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
Recherche
15 visiteur(s) et 0 membre(s) en ligne.
 
 
    Annonces Google

    Petites Annonces

il y a 2 annonces
    Liens

Toutes les informations sur :
  • Amiga OS 4:
    AmigaOS.net
  • Logiciels pour OS4 :
    OS4depot
  • Matériel Amiga :
    ACube Systems
  • Magazine papier :
    AmigaPower
  • Magazine en ligne :
    Obligement
  •     Activité du Site

    Pages vues depuis 25/07/2007 : 105 828
    • Nb. de Membres : 180
    • Nb. d'articles : 1 108
    • Nb. de Forums : 18
    • Nb. de Sujets : 17
    • Nb. de Critiques : 22

    Top 10  Statistiques

      
    Modéré par : K-L Creols Elwood 
    Index du Forum > > Création-Développement > > Help demandée sur routine et programmation C
    2 pages [ 1 | 2 ]
    AuteurHelp demandée sur routine et programmation C
    alex
    1110       

    alex
      Posté : 03-03-2018 12:36

    Il ne sera pas possible de faire ça dans une fonction en effet la seule façon que tu auras pour passer ta variable ce sera sous forme de pointeur. Or tu ne pourras pas savoir la taille de ta variable initiale à partir de ce pointeur la seule chose que te reverra sizeof c'est la taille en octet d'un pointeur sur ton système (sous AOS4 c'est 32 bits). Par définition un pointeur peut pointer vers une zone mémoire quelconque mais pas possible de savoir juste en regardant le pointeur.

    La solution du sizeof ne marche que tant que tu as le tableau original dans le scope. Désolé pas possible de faire ça dans une fonction.


    --
    AmigaOne X1000 - RadeonHD - 2 Gio RAM
    AmigaOne XE G4@933 - Radeon 9200 SE - 512 Mio RAM

      Afficher le profil de alexProfil  E-mail  Ouvrir le site web de alexwww  aim      Imprimer ce commentaireImprimer
    Elwood
    3481       

    Elwood
      Posté : 03-03-2018 20:48

    C'est pour ça qu'en AmigaE, une structure de donnée est constituée de : un espace pour stocker les données + un octet donnant la taille de la structure. Du coup il suffit de faire un Sizeof d'une structure pour avoir sa taille.
    Il était malin ce Wouter


    --
    Philippe Ferrucci
    Avec une Sam460 et AmigaOS 4.1, je suis eco-responsable. Cool !

      Afficher le profil de ElwoodProfil  Ouvrir le site web de Elwoodwww  Imprimer ce commentaireImprimer
    alex
    1110       

    alex
      Posté : 03-03-2018 21:43

    Euh s'il n'y a qu'un octet en E on doit pas pouvoir avoir de grosses structures de données ???

    --
    AmigaOne X1000 - RadeonHD - 2 Gio RAM
    AmigaOne XE G4@933 - Radeon 9200 SE - 512 Mio RAM

      Afficher le profil de alexProfil  E-mail  Ouvrir le site web de alexwww  aim      Imprimer ce commentaireImprimer
    Elwood
    3481       

    Elwood
      Posté : 03-03-2018 23:40

    Oups, c'est sûr. J'aurai dû dire "une zone réservée" pour éviter toute erreur  

    --
    Philippe Ferrucci
    Avec une Sam460 et AmigaOS 4.1, je suis eco-responsable. Cool !

    Message édité par : Elwood / 03-03-2018 23:42

      Afficher le profil de ElwoodProfil  Ouvrir le site web de Elwoodwww  Imprimer ce commentaireImprimer
    thellier
    849      

    thellier
      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

      Afficher le profil de thellierProfil  Imprimer ce commentaireImprimer
    kamelito
    118     

    kamelito
      Posté : 07-03-2018 21:10

    @Sharynn

    Un autre dev developpe un programme pour faire tourner les programmes Amos sur AmigaOS4.x

    http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=42450&forum=27#809353


    /kamelito

      Afficher le profil de kamelitoProfil  Imprimer ce commentaireImprimer
    Sharynn
    173     

    Sharynn
      Posté : 08-03-2018 18:03

    Merci Alain.

    J'aime bien cette routine..

    La commande "ReadJoyPort(n)" n'est-elle pas issue de la lowlevel.library ?

    Mon but est de pouvoir si possible m'en passer.

    @kamelito:
    Oui c'est sympa.. c'est un projet en parallèle qui sera fini peut-être avant le mien :)

    C'est intéressant. Personnellement j'ai déjà commencer la "librairie" pour l'utilisation en C avec un simulacre de commande qui tentent à être très proches de celles de l'AMOS dans leur libellée.

    Eux parlent directement d'un interpréteur pour les programme AMOS. J'ai commencé à coté cela, mais c'est long car il faut tout "dé-tokenisé" et remettre en forme. C'est ce que j'ai fait pour avoir un fichier TEXT standard et même une version vers ma librairie pour lequel une simple re-compilation sous C suffira.
    Mais je suis loin du résultat final car la librairie AmOS4 me pose problème sur bien des commandes.

    Je vais finir par devoir utiliser SDL ou autre... :)



    Projet AmOS4 - Retour vers l'Amos sous OS4...

    SAM440EP - A1200 3.1 de base

      Afficher le profil de SharynnProfil  Ouvrir le site web de Sharynnwww  Imprimer ce commentaireImprimer
    thellier
    849      

    thellier
      Posté : 14-03-2018 14:28

    >La commande "ReadJoyPort(n)" n'est-elle pas issue de la lowlevel.library ?

    Si mais elle marche aussi sur OS3 (3.1? 3.9?) dans mon WinUAE OS3 et probablement aussi sur Aros/Morphos

    Alain





    Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig

      Afficher le profil de thellierProfil  Imprimer ce commentaireImprimer
    Aller à la page : [ 1 | 2 ]
    Sauter à :


    Tous les Logos et Marques sont déposés, les commentaires sont sous la responsabilité de ceux qui les ont publiés. AmigaOS 4.x est (c) Hyperion Entertainment

    Conception graphique du thème : PowerMetal, codage : Alexandre Balaban
    Certaines images sont © Martin \"Mason\" Mertz

    Temps : 1529796000.3147 seconde(s)