AMOS Pro community 2020.1 / Exemples de code Amos

Forum Amiga Coding AMOS Pro community 2020.1 / Exemples de code Amos

  • Créateur
    Sujet
  • #75812
    Alain.Treesong
    • Level 5
    • Messages : 213

    Bonsoir,

    Sur AmigaImpact j’ai uploadé à la demande d’un membre du forum une version d’Amos qui peut servir de référence au développement sur Amiga 500 avec ce langage.

    https://www.dropbox.com/s/nch9p4fj59lw4k4/AMOSPro_Community_2020_1.adf?dl=0

    Je l’avais indiqué dans un thread déjà mais il est possible que cela soit passé inaperçu sur ce forum car ce n’était le sujet du thread (ou alors cela n’intéresse pas grand monde…)

    Donc je crée ce thread sur ce forum pour en parler plus en détail. J’ai par ailleurs dans l’idée d’ajouter de temps en temps quelques bouts de code qui serviront d’exemples pour les personnes éventuellement intéressées par du dev avec ce langage avec comme plateforme cible plutôt un Amiga ECS/OCS (généralement un A500 vanille).

    J’ai ajouté un progamme sur le thread d’Amiga Impact que je reporte ici également pour toucher le plus de personnes (si jamais il y en a :-)).

    Donc voici un petit programme qui après compilation fera tourner sur l’axe Y en 50 fps un triangle avec un effet d’ombre. Ce progamme est à utiliser avec la version 2020.1 d’Amos paramétrée avec les extensions incontournables selon moi.

    Ceux qui veulent en parler ou poster d’autres codes n’hésitent pas.

    https://www.dropbox.com/s/jna6hf1o8r981fu/AmosPro2_triangle.png

    Le code :

    ‘ Flat shadow rotating Y triangle by Aghnar/Agima in dec. 2019
    Screen Open 0,320,256,8,Lowres
    Flash Off : Curs Off : Hide : Degree
    Paper 0 : Cls : Palette $0,$666,$888,$BBB,$AAA,$BBB,$CCC,$EEE
    Pen 2
    Double Buffer : Autoback 0
    Blitter Copy Limit 0,48 To 320,208
    Dim C(359),S(359) : For I=0 To 359 : C(I)=256*Cos(I) : S(I)=256*Sin(I) : Next
    X1=64 : Y1=-32 : Z1=0 : X2=-64 : Y2=-32 : Z2=0 : X3=0 : Y3=74 : Z3=0
    XE1=0 : YE1=0 : XE2=0 : YE2=0 : XE3=0 : YE3=0
    X=0 : Y=0 : Z=0 : T=0 : Timer=0
    Do
    Blitter Copy 0,1 To 0,2
    Blitter Copy 0,0 To 0,1
    Add T,1 : If T=10 : Locate 1,26 : Print 500/Timer; » fps » : Timer=0 : T=0 : End If
    Add A,-2,0 To 359
    X=X1*C(A)+Z1*S(A) : Y=Y1*256 : Z=-X1*S(A)+Z1*C(A) : CZ=Z+256*256
    Blitter Clear 0,0
    XE1=160+(X*256)/CZ : YE1=100+(Y*256)/CZ
    X=X2*C(A)+Z2*S(A) : Y=Y2*256 : Z=-X2*S(A)+Z2*C(A) : CZ=Z+256*256
    XE2=160+(X*256)/CZ : YE2=100+(Y*256)/CZ
    X=X3*C(A)+Z3*S(A) : Y=Y3*256 : Z=-X3*S(A)+Z3*C(A) : CZ=Z+256*256
    XE3=160+(X*256)/CZ : YE3=100+(Y*256)/CZ
    Turbo Draw XE1,YE1 To XE2,YE2,1,-1
    Turbo Draw XE2,YE2 To XE3,YE3,1,-1
    Turbo Draw XE3,YE3 To XE1,YE1,1,-1
    Blitter Fill 0,0
    Screen Swap : Wait Vbl
    Loop

     

    Ciao

    Aghnar

     

Affichage de 15 réponses de 1 à 15 (sur un total de 58)

Partager sur vos réseaux sociaux préférés :
Facebooktwitterredditpinterestlinkedintumblrmail

  • Auteur
    Réponses
  • #87461
    Leopardcookies
    • Level 0 - Newbie
    • Messages : 5

      Salut ,

      Je vais tester le code que tu as fait je viens de voir ça …

      Comment fait-tu pour tester  le nombre de frame par seconde sur Amos  ?
      tu as une routine simple ?



      #87462
      Alain.Treesong
      • Level 5
      • Messages : 213

        Salut,

        Amos dispose de la fonction timer qui renvoit le nombre de vertical blank. En gros pour faire simple le nombre de 1/50 secondes.

        Par exemple :

        timer=0

        wait 30 : rem on attend 30 * 1/50 secondes

        print timer

        —> 30 s’affiche

        Donc si tu veux une mesurer le temps de traitement d’un tour de boucle do…loop

        Do

        timer=0

        // traitement…

        wait vbl

        print timer

        loop

        Si 1 s’affiche, ton truc tourne en 50 fps, 2 c’est 25, 3 c’est 50/3…

        Tu peux faire l’opération pour afficher le nombre de fps.

        Evidemment, après compilation tu pourras constater que le code fourni tourne en 50fps sur un 500 standard :-)

        A+

         

         

        #87463
        Alain.Treesong
        • Level 5
        • Messages : 213

          eh je viens de voir que le code que j’avais fourni en exemple contient déjà une belle routine qui affiche le nombre de fps…

          #87586
          AmiDARK
          • Level 2
          • Messages : 50

            Pourrais-tu partager le nom des extensions que tu as configuré sur ton AMOS community ? stp. Merci.

            #87589
            Alain.Treesong
            • Level 5
            • Messages : 213

              Salut @Amidark

              Bien sûr :

              Amcaf V1.50beta4 11 jan 98 (c’est la dernière version que j’ai trouvé mais il y a peut être mieux)

              AmosPro Turbo extension 1.9

              Au passage quelques petites questions :

              – Ta version d’Amos (on va dire amos 3.0 :-)) sera t’elle compatible tout Amiga : donc si j’ai l’Aga je peux en profiter sinon je suis en OCS ?

              – J’ai remarqué pas mal de bugs sur Amos (en plus des classiques bien connus). Bank swap déconne avec les sprites et icones lors de la sauvegarde du fichier .amos.

              Serais tu partant pour fixer cela ? Il y a des bugs à cause d’Amcaf dont je pourrai parler si tu veux

              – Si tu veux du code pour faire des tests, j’ai produit un peu ces derniers temps. N »hésite pas.

              A+

               

              #87602
              AmiDARK
              • Level 2
              • Messages : 50

                Merci pour les informations sur les extensions.

                La version AGA nécessite des changements internes dans les structures et les méthodes (=routines) de l’Amos Professional .. Cela signifie que toute extension qui tape dans les structures et appels internes risque de planter..
                J’ai essayé de contacter l’auteur de l’AmCaf pour avoir le code source et l’adapter … mais son email (sur aminet) n’est plus valide …
                La Turbo lib et PowerBob il aurait aussi été sympa qu’on ait le vrai code source du développeur … Mais pas de coordonnées valides à mon souvenir :(

                Du coup, j’ai du changer pas mal de choses (comme par exemple le plus utiliser l’AMOS.library pour une AmosProAGA.library, sinon ça pouvait faire planter des jeux et applications compilées sous AMOS et installées sur la même machine…)

                Si tu veux testouiller, va sur mon gitHub Amos Professional Aga Releases et télécharge le tout .. Sur mon WinUAE ça tourne niquel en tout cas :p

                #87695
                Alain.Treesong
                • Level 5
                • Messages : 213

                  Salut Amidark,

                  D’abord bravo pour ton Amos Aga. Top !

                  J’ai fait un premier jeu de tests donc.

                  Globalement, cela marche bien. Attention au fichier SPackUnpack_hires.amos qui semble avoir un petit pb dans le corps (ce qui est un détail)

                  Par exemple, le scroll qu’on peut voir dans l’intro https://www.pouet.net/prod.php?which=85581 (pub ;-) ) marche nickel.

                  Ce code fait planter AmosAga :

                  Procedure _ASSETS
                  Screen Open 0,960,200,16,Lowres
                  Screen Display 0,128,70,320,160
                  Load Iff « asset/mainground.iff »
                  Screen Hide 0
                  Flash Off : Curs Off : Hide
                  Screen Copy 0,0,0,640,200 To 0,640,0

                  Screen Open 1,320,160,16,Lowres
                  Load Iff « asset/mountain.iff »
                  Screen Hide 1
                  Flash Off : Curs Off : Hide
                  Get Bob 1,0,0 To 320,70
                  ‘ some computed birds as a basic example of animated background
                  Ink 0 : Pen 0 : Dim Y(64)
                  For I=1 To 64 : Y(I)=3+Rnd(24) : Next
                  X=0
                  For I=1 To 64
                  Add X,5 : Draw X,Y(I) To X+2,Y(I)
                  Next
                  Get Bob 10,0,0 To 320,70
                  Cls 0 : Paste Bob 0,0,1
                  X=0
                  For I=1 To 64 :
                  Add X,5 : Draw X,Y(I)-1 To X+1,Y(I) : Plot X+2,Y(I)-1
                  Next
                  Get Bob 11,0,0 To 320,70
                  Cls 0 : Paste Bob 0,0,1
                  X=0
                  For I=1 To 64
                  Add X,5 : Plot X,Y(I)+1 : Plot X+1,Y(I) : Plot X+2,Y(I)+1
                  Next
                  Get Bob 12,0,0 To 320,70
                  Screen Close 1

                  Screen Open 1,320,200,32,Lowres
                  Load Iff « asset/tree.iff »

                  Le plantage a lieu au moment de Get Bob 12,0,0 To 320,70.

                  Cela peut être lié à ce qu’il y a avant (probable).

                  J’ai essayé pas mal de truc. Le pb pour moi évidemment est que beaucoup de code utilise Amcaf pour les sons (il faut absolument améliorer Trackload/trackplay qui sont mauvais) ou pour les instructions qui utilisent le blitter : blitter clear, blitter copy, blitter fill et turbo draw qu’il faudra porter d’une manière ou d’une autre.

                  Quoi qu’il en soit Amos Aga est un chantier pharaonique et bravo pour ces premières versions.

                  A+

                  Aghnar

                  #87722
                  AmiDARK
                  • Level 2
                  • Messages : 50

                    Merci pour ton test, je vais regarder cela… Beaucoup de choses ne sont pas terminées, et étant inter reliées, c’est parfois long et compliqué…

                    #87791
                    AmiDARK
                    • Level 2
                    • Messages : 50

                      Ce code fait planter AmosAga :

                      Procedure _ASSETS Screen Open 0,960,200,16,Lowres Screen Display 0,128,70,320,160 Load Iff « asset/mainground.iff » Screen Hide 0 Flash Off : Curs Off : Hide Screen Copy 0,0,0,640,200 To 0,640,0 Screen Open 1,320,160,16,Lowres Load Iff « asset/mountain.iff » Screen Hide 1 Flash Off : Curs Off : Hide Get Bob 1,0,0 To 320,70 ‘ some computed birds as a basic example of animated background Ink 0 : Pen 0 : Dim Y(64) For I=1 To 64 : Y(I)=3+Rnd(24) : Next X=0 For I=1 To 64 Add X,5 : Draw X,Y(I) To X+2,Y(I) Next Get Bob 10,0,0 To 320,70 Cls 0 : Paste Bob 0,0,1 X=0 For I=1 To 64 : Add X,5 : Draw X,Y(I)-1 To X+1,Y(I) : Plot X+2,Y(I)-1 Next Get Bob 11,0,0 To 320,70 Cls 0 : Paste Bob 0,0,1 X=0 For I=1 To 64 Add X,5 : Plot X,Y(I)+1 : Plot X+1,Y(I) : Plot X+2,Y(I)+1 Next Get Bob 12,0,0 To 320,70 Screen Close 1 Screen Open 1,320,200,32,Lowres Load Iff « asset/tree.iff »

                      … Le plantage a lieu au moment de Get Bob 12,0,0 To 320,70. Cela peut être lié à ce qu’il y a avant (probable). J’ai essayé pas mal de truc. Le pb pour moi évidemment est que beaucoup de code utilise Amcaf pour les sons (il faut absolument améliorer Trackload/trackplay qui sont mauvais) ou pour les instructions qui utilisent le blitter : blitter clear, blitter copy, blitter fill et turbo draw qu’il faudra porter d’une manière ou d’une autre. Quoi qu’il en soit Amos Aga est un chantier pharaonique et bravo pour ces premières versions. A+ Aghnar

                      Alors, j’ai testée un code basé sur le tiens :

                      Screen Open 0,960,200,16,Lowres
                      Screen Display 0,128,70,320,160
                      Load Iff « Decor960x200.lbm »
                      Screen Hide 0
                      Flash Off : Curs Off : Hide
                      Screen Copy 0,0,0,640,200 To 0,640,0
                      Get Bob 1,0,0 To 320,70

                      Ink 0 : Pen 0 : Dim Y(64)
                      For I=1 To 64 : Y(I)=3+Rnd(24) : Next
                      X=0
                      For I=1 To 64
                      Add X,5 : Draw X,Y(I) To X+2,Y(I)
                      Next
                      Get Bob 10,0,0 To 320,70
                      Cls : Paste Bob 0,0,1
                      X=0
                      For I=1 To 64 :
                      Add X,5 : Draw X,Y(I)-1 To X+1,Y(I) : Plot X+2,Y(I)-1
                      Next
                      Get Bob 11,0,0 To 320,70
                      Cls : Paste Bob 0,0,1
                      X=0
                      For I=1 To 64
                      Add X,5 : Plot X,Y(I)+1 : Plot X+1,Y(I) : Plot X+2,Y(I)+1
                      Next
                      Get Bob 12,0,0 To 320,70

                      J’ai dû adapter car ton code est un extrait…Mais comme tu dis, si le problème est lié à des actions précédentes à ton extrait de code …  Et apparemment c’est le cas. Je n’ai pas de crash.

                      Alors si tu utilises AMCAF et surtout pour les blitter et tout le reste, effectivement ça peut planter (et ça va planter pour sûr). J’ai changé déjà pas mal de choses dans les structures internes de l’AMOS Pro (8 Bitplans au lieu de 6, 256 couleurs en 24 bits au lieu de 32 en 12 bits, etc. Résultat si l’AMCAF utilise les structures des écrans pour gagner du temps et tout … Ben forcément ça va planter car les données ne sont plus au même endroit dans la structure … J’aimerais contacter l’auteur de l’AMCAF mais l’email ne fonctionne plus … Si quelqu’un trouve où l’a en contact je suis preneur pour essayer de récupérer le code source et l’adapter à l’AGA.

                      Ce qui me rassure pour le coup, c’est que mon get bob fonctionne toujours (pas broken) et donc, ton code ne fait pas planter l’Amos Pro AGA (tes appels AMCAF et Blitter sont à 99% sûrs, en cause)… J’y avais travaillé récémment pour ajotuer la capture des 256 couleurs max et l’intégration dans la banque BOB/SPRITES/ICONS … Il faut que j’update le SaveBank pour gérer cela maintenant …

                      #87799
                      Alain.Treesong
                      • Level 5
                      • Messages : 213

                        Alors je n’utilise pas Amcaf dans l’exemple donné. C’est pour cela que je l’ai communiqué. Pourtant cela plante bel et bien.

                        Voila le début du code :

                        Set Sprite Buffer 256
                        Sprite 6,-100,0,
                        Sprite 7,-100,0,

                        Global SKX,SKX2,SKX3,SKX4,DEBUG

                        Screen Open 3,320,16,16,0
                        Flash Off : Curs Off : Hide : Paper 0 : Cls

                        Et ensuite j’appelle la procédure que je t’ai indiqué.

                        Peut être la config sprite au début ? En tout cas il y a un souci.

                        A voir donc (si tu es motivé), cela fait un cas de test intéressant.

                        Tiens si tu es sur les banques, il faut savoir que l’instruction Bank Swap déconne complètement avec Amos pro. Cela marchait avec Amos normal. Le problème est sur les banque 1 et 2 (donc bobs et icons). Souvent on charge une banque de bobs, on swap la banque 1 obtenue sur une autre pour la mettre de côté (par exemple disons la 7) et on recharge une banque de bobs. Le but étant souvent au final d’enregistrer plusieurs banques de bobs ou icones avec le programme .amos. Et bien la sauvegarde du .amos et son rechargement donnent n’importe quoi : au lieu de 2 banques de sprites (donc 1 et 7), on a une seule banque mergée… J’ai eu le pb récemment donc il y a pb sur la structure de la banque sauvée je pense ou un bug dans le chargement. A voir éventuellement.

                         



                        #87800
                        Alain.Treesong
                        • Level 5
                        • Messages : 213

                          PS : rainbow et rain sont ils passés à l’aga ? Et comme on set une palette 24 bits du coup : rain (0,0)=$ffaa22 ?

                          A+

                          #87815
                          AmiDARK
                          • Level 2
                          • Messages : 50

                            @Alain.Treesong :

                            Envoie moi une archive a cordierfr(chez)wanadoo(point)fr avec l’exemple complet qui plante que je puisse tester avec exactement les mêmes conditions que toi car je ne reproduis pas le plantage.

                            Sinon pour le Rainbow, non ce n’est pas encore passé en AGA . De plus la plupart des commandes que j’ai passé en aga sont pour l’instant en RGB12 (comme l’ECS). Je dois encore faire des modifs (en cours sur la copper list et les commandes pour les passer en RGB24 … Il y a beaucoup de taf, même si on a l’impression que j’en ai fait pas mal :p

                            #88024
                            AmiDARK
                            • Level 2
                            • Messages : 50

                              C’est bon, c’est fixé :)

                              #117385
                              Staff
                              Jim Neray
                              • Level 22
                              • Messages : 7012

                                Je viens de récupérer ton archive pour un ami @alain.treesong ; Nickel merci ! :good:

                                (J’ai édité ton post initial pour mettre le lien de téléchargement directement dedans. )

                                A500 - A500 Plus - A600 HD - A1200 - A2000 - A4000T - CD32 - C=64 - 1040STE - CPC6128
                                Mon Amiga 500 Plus : A590, 2MB Chip, 2MB Fast, HD 1,2GB, Floppy ext.
                                Mon Amiga 1200 : Blizzard 1220/4, 2MB Chip, 4MB Fast, HD 80GB, Overdrive CD

                                - Micromiga.com - La boutique Amiga -
                                #117464
                                Alain.Treesong
                                • Level 5
                                • Messages : 213

                                  Ah bien c’est fait pour être distribué :-)

                                  Cela me fait penser qu’il faudrait que j’ajoute un petit code source de temps en temps.

                                  Les personnes ayant quelques petits codes Amos pas trop longs peuvent le poster sur ce thread (mais je ne crois pas au père noël non plus ;-) )

                                Partager sur vos réseaux sociaux préférés :
                                Facebooktwitterredditpinterestlinkedintumblrmail
                                Affichage de 15 réponses de 1 à 15 (sur un total de 58)
                                • Vous devez être connecté pour répondre à ce sujet.