AMOS Pro community 2020.1 / Exemples de code Amos

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

  • Ce sujet contient 41 réponses, 6 participants et a été mis à jour pour la dernière fois par Alain.Treesong, le il y a 1 semaine et 2 jours.
  • Créateur
    Sujet
  • #75812
    Alain.Treesong
    • Level 5
    • Messages : 188

    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

     

15 réponses de 16 à 30 (sur un total de 41)

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

  • Auteur
    Réponses
  • #117468
    Alain.Treesong
    • Level 5
    • Messages : 188

    Voila un nouveau petit code source extrait de la démo : https://www.pouet.net/prod.php?which=87666

    Il s’agit de l’étoile violette. Simple : petite rotation petite ombre.

    Le code à copier dans Amos Community:

    ‘ Simple rotating flat star
    ‘ From the demo « Happy New Year 2021 » / Agima dec 2020
    ‘ A bit reworked to be standalone

    ‘ in 50fps on vanilla A500 of course
    ‘ Aghnar ; may 21

    Set Buffer 32

    Dim C(1024),S(1024)

    Global NDP,C(),S()
    Global CX,CY,ANG
    Global T
    Global X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5
    Global X6,Y6,X7,Y7,X8,Y8,X9,Y9,X0,Y0
    Global XE1,YE1,XE2,YE2,XE3,YE3,XE4,YE4,XE5,YE5
    Global XE6,YE6,XE7,YE7,XE8,YE8,XE9,YE9,XE0,YE0

    Degree

    For I=0 To 1023
    ANG=I : Rem ((1024*I)/360) avec i (0,359)
    C(I)=Qcos(ANG,256) : S(I)=Qsin(ANG,256)
    Next I

    Screen Open 0,320,256,4,Lowres
    Flash Off : Curs Off : Hide On
    Palette $214,$519,$103,$519
    Paper 0 : Cls 0 : Pen 1 : Ink 1

    Double Buffer : Autoback 0

    ANG=0
    CX=160 : CY=128

    ‘ Definition of the star
    NDP=10
    Palette $214,$519,$103,$519

    X0=170 : Y0=0
    X1=69 : Y1=49
    X2=52 : Y2=162
    X3=-26 : Y3=81
    X4=-138 : Y4=99
    X5=-85 : Y5=0
    X6=-137 : Y6=-100
    X7=-26 : Y7=-81
    X8=53 : Y8=-162
    X9=69 : Y9=-49

    CX=160
    CY=128

    Repeat

    Blitter Clear 0,0,64,30-128+CY To 256,224-128+CY
    Blitter Clear 0,1,64,30-128+CY To 256,224-128+CY

    Add ANG,1,0 To 1023
    CA=C(ANG)
    SA=S(ANG)

    XE0=X0*CA-Y0*SA
    YE0=X0*SA+Y0*CA
    XE0=CX+XE0/512
    YE0=CY+YE0/512

    XE1=X1*CA-Y1*SA
    YE1=X1*SA+Y1*CA
    XE1=CX+XE1/512
    YE1=CY+YE1/512

    XE2=X2*CA-Y2*SA
    YE2=X2*SA+Y2*CA
    XE2=CX+XE2/512
    YE2=CY+YE2/512

    XE3=X3*CA-Y3*SA
    YE3=X3*SA+Y3*CA
    XE3=CX+XE3/512
    YE3=CY+YE3/512

    XE4=X4*CA-Y4*SA
    YE4=X4*SA+Y4*CA
    XE4=CX+XE4/512
    YE4=CY+YE4/512

    XE5=X5*CA-Y5*SA
    YE5=X5*SA+Y5*CA
    XE5=CX+XE5/512
    YE5=CY+YE5/512

    XE6=X6*CA-Y6*SA
    YE6=X6*SA+Y6*CA
    XE6=CX+XE6/512
    YE6=CY+YE6/512

    XE7=X7*CA-Y7*SA
    YE7=X7*SA+Y7*CA
    XE7=CX+XE7/512
    YE7=CY+YE7/512

    XE8=X8*CA-Y8*SA
    YE8=X8*SA+Y8*CA
    XE8=CX+XE8/512
    YE8=CY+YE8/512

    XE9=X9*CA-Y9*SA
    YE9=X9*SA+Y9*CA
    XE9=CX+XE9/512
    YE9=CY+YE9/512

    Turbo Draw XE0,YE0 To XE1,YE1,1,-1
    Turbo Draw XE1,YE1 To XE2,YE2,1,-1
    Turbo Draw XE2,YE2 To XE3,YE3,1,-1
    Turbo Draw XE3,YE3 To XE4,YE4,1,-1
    Turbo Draw XE4,YE4 To XE5,YE5,1,-1
    Turbo Draw XE5,YE5 To XE6,YE6,1,-1
    Turbo Draw XE6,YE6 To XE7,YE7,1,-1
    Turbo Draw XE7,YE7 To XE8,YE8,1,-1
    Turbo Draw XE8,YE8 To XE9,YE9,1,-1
    Turbo Draw XE9,YE9 To XE0,YE0,1,-1

    Blitter Fill 0,0,64,30-128+CY,256,220-128+CY

    ‘ Simple shadow by translation and redraw on the
    ‘ second bitplane. Other implem are possible…

    XE0=XE0+8 : YE0=YE0+8
    XE1=XE1+8 : YE1=YE1+8
    XE2=XE2+8 : YE2=YE2+8
    XE3=XE3+8 : YE3=YE3+8
    XE4=XE4+8 : YE4=YE4+8
    XE5=XE5+8 : YE5=YE5+8
    XE6=XE6+8 : YE6=YE6+8
    XE7=XE7+8 : YE7=YE7+8
    XE8=XE8+8 : YE8=YE8+8
    XE9=XE9+8 : YE9=YE9+8

    Turbo Draw XE0,YE0 To XE1,YE1,2,-2
    Turbo Draw XE1,YE1 To XE2,YE2,2,-2
    Turbo Draw XE2,YE2 To XE3,YE3,2,-2
    Turbo Draw XE3,YE3 To XE4,YE4,2,-2
    Turbo Draw XE4,YE4 To XE5,YE5,2,-2
    Turbo Draw XE5,YE5 To XE6,YE6,2,-2
    Turbo Draw XE6,YE6 To XE7,YE7,2,-2
    Turbo Draw XE7,YE7 To XE8,YE8,2,-2
    Turbo Draw XE8,YE8 To XE9,YE9,2,-2
    Turbo Draw XE9,YE9 To XE0,YE0,2,-2

    Blitter Fill 0,1,64,30-128+CY,256,220-128+CY

    Screen Swap
    Wait Vbl

    Until Mouse Key=1

     

    A la prochaine.

     



    #120403
    Alain.Treesong
    • Level 5
    • Messages : 188

    Salut,

    Pour que cela soit plus simple, j’ai mis les deux sources postés dans un repo git :

    https://github.com/alain-treesong/amiga_coding_in_amos

    Donc dans chaque répertoire snippet_xxx, les sources sont dispos en .amos (format binaire) et en .amo (texte).

    A+

    #120898
    Alain.Treesong
    • Level 5
    • Messages : 188

    Nouveau petit exemple d’un scrolling dual playfield : https://github.com/alain-treesong/amiga_coding_in_amos/tree/main/snippet-003_simpleDualPlayfield

    Les graphismes sont de Ansimuz  : https://ansimuz.itch.io/

    Il est très simple de faire un dual playfield, technique très utilisée dans les jeux (Chuck Rock, Shadow of the beast…).

    Dans le prochain exemple, je repartirai de ce code et ajouterai un troisième plan animé.

    Ciao

    #121278
    Alain.Treesong
    • Level 5
    • Messages : 188

    Salut,

    Comme prévu, nouvel exemple de code avec 3 plans en parallèle, le plus éloigné étant fixe mais animé. Pour voir ce que cela donne :

    Source et explication ici :

    https://github.com/alain-treesong/amiga_coding_in_amos/tree/main/snippet-004_threePlayfield

    #121281
    demether
    • Level 6
    • Messages : 335

    trés impressionnant !

    #121347
    Staff
    Jim Neray
    • Level 21
    • Messages : 6290

    Nickel ! Ca c’est le genre de sujet qui n’a pas l’air très actif mais qui est une mine d’or en devenir pour celui qui va passer par là et qui souhaite se mettre à Amos :good:

    A500 - A500 Plus - A600 HD - A1200 - A2000 - A4000T - CD32 - C=64 - 1040STE - CPC6128
    Micromiga.com - La boutique Amiga

    #124346
    DarkN3m0
    • Level 2
    • Messages : 50

    hello

     

    ou puit-je trouver la table des scan codes completes ?

    Amiga coder (AMOS PRO, 68k)
    A1200 Blizzard MKIV @ 50MHZ, A500+ 2MO CHIP
    A2000 Vampire, C16, ZX Spectrum 48Ko, CPC 6128

    #131245
    Alain.Treesong
    • Level 5
    • Messages : 188

    Après une petite pause Amiga de quelques mois, voici un nouvel exemple d’un code sur Amiga en Amos : cette fois des vector balls :

    Les sources sont disponibles ici :

    https://github.com/alain-treesong/amiga_coding_in_amos/tree/main/snippet-005_vectorBalls

    A la prochaine

    #131429
    nuts-amande
    • Level 1
    • Messages : 13

    Je me suis mis à l’Amos il y a peu de temps et c’est toujours agréable de trouver des exemples.

    Je suis sur l’ancienne version pour le moment, existe-t-il des instructions équivalentes aux « blitter _action_ »  que je peux voir dans ce code ?

    <script src= »moz-extension://bdbe4cd6-c171-4511-950c-e5e4fde79f5e/inject-scripts/searchvideos.js » async= » »></script>

    #131479
    Alain.Treesong
    • Level 5
    • Messages : 188

    Tiens, il y a des personnes qui lisent ce thread. Etonnant ;-)

    L’ancienne version d’amos est à peu près la même chose (en moins bien) qu’amos pro. Il existe donc la même extension (amcaf) qui ajoute les instructions blitter xxx.

    Vous devriez quand même passer à amos pro car amos pro compiler apporte par contre de vrais améliorations sur le code. Par exemple quand vous multipliez ou divisez par une puissance de 2, le compilateur effectue une décalage logique plutot qu’une vraie multiplication. C’est pour cela que dans les exemples donnés, généralement quand c’est possible je mul / div par 256, 16 etc

    Par ailleurs j’ai fait une version contenant amos pro, un patch qui enlève un bug sur le dual playfield (qui n’existe pas dans votre version) et les deux extensions importantes du langage. C’est disponible en première page du github (voir le lien dans la description) : https://github.com/alain-treesong/amiga_coding_in_amos

     

     



    #131490
    DarkN3m0
    • Level 2
    • Messages : 50

    yes je lis ce thread !  car je me suis remis a Amospro y’a quelques moi :)  Quel bohneur !   Merci pour tes infos

    Amiga coder (AMOS PRO, 68k)
    A1200 Blizzard MKIV @ 50MHZ, A500+ 2MO CHIP
    A2000 Vampire, C16, ZX Spectrum 48Ko, CPC 6128

    #131601
    nuts-amande
    • Level 1
    • Messages : 13

    Impecc’, j’ai trouvé et installé Amcaf, je pensais que c’était lié à la version AmosPro Community. Du coup j’ai testé le triangle et ça fonctionne bien :)
    Bon pour le moment, les fonctions blitter restent obscures et mon AmosPro n’a rien dans l’aide à leur propos.

    J’ai trouvé Amcaf à cette Url:
    https://www.exotica.org.uk/wiki/AMOS_extensions
    Il y aurait d’autres extensions must-have à installer/tester ?

    Je m’attaquerai aux dualplayfield sous peu :)
    Pour l’instant je me bats avec l’initialisation de la souris dans un pong que j’ai codé, j’ai une raquette qui ne parcourt pas l’intégralité de l’écran :(

    Bon en tout cas je suis preneur de ces petits posts sur l’Amos :)

    #131787
    nuts-amande
    • Level 1
    • Messages : 13

    Bon, je vais faire mon chiant :)
    je viens de coder l’étoile…on est bien d’accord que la déclaration des variables est inutile ? (en global en plus alors qu’il n’y a pas de procédure utilisée).
    La variable T ne sert pas.
    Il y a double déclaration de la palette et du centre de l’écran :)
    Le cls 0 est suffisant, pas besoin du paper, ink, pen.
    C’est là qu’on voit les limites de l’éditeur, un IDE actuel mettrait des warnings là-dessus. (Ça le fait d’ailleurs dans AOZ ?)
    Si je note tout ça, c’est de façon pédagogique, ça me permet de comprendre ce qui est utile ou pas, ça aide à comprendre ce que font les commandes, ce n’est absolument pas pour critiquer le code, ça me fait au contraire des petits TP :)

    #131811
    Alain.Treesong
    • Level 5
    • Messages : 188

    C’est bien d’utiliser le code et de le critiquer d’ailleurs.

    L’ensemble du code proposé est fait à titre d’exemples et n’a pas la prétention d’être parfait, juste très bon ;-)

    L’étoile est extraite d’une démo, c’est pourquoi tout n’est pas utile comme la déclaration de T qui servait à mesure les FPS, code que j’ai enlevé pour réduire la taille de l’exemple. C’est similaire pour tes autres remarques.

    Puisque tu parles détection d’erreur à la sonar et bonne pratique, c’est mieux de déclarer les variables et encore mieux de les mettre en global quand c’est possible pour des raisons de perf et de réutilisation (éco mémoire). Le code de tracé de l’étoile est dans une procédure dans la démo.

    Enfin je t’invite à utiliser Amos pro comunity (que tu pourras étendre avec d’autres extensions) car le dual playfield horizontal déconne avec ta version (que je suppose non patchée) dans certains cas (position horizontal de l’écran non multiple de 16 il me semble).

    Cool que quelqu’un teste ces trucs !

     

    #131951
    nuts-amande
    • Level 1
    • Messages : 13

    Effectivement je suis pour aussi la déclaration des variables, c’était pour pinailler :)

    Je me suis amusé avec la vitesse de rotation, ça donne des effets assez cool à une certaine vitesse, j’incrémente la vitesse à chaque tour…

    J’ai récupéré la dernière version d’AmosUnity, ça tourne bien seul, j’ai la souris qui disparaît dans certains menus…mais surtout je n’arrive pas à ajouter d’extension.
    Dans le menu Set Interpreteur j’ai une erreur de disque sur le Load Default Configuration : Disk Error : cannnot load configuration file
    Du coup je ne peux pas ajouter d’extension. Je bloque car je ne sais pas ce qu’est le fichier par défaut et si je mets le mien d’AmosPro (ou une copie) cela ne va pas non plus. Mystère…

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