AMOS Pro community 2020.1 / Exemples de code Amos

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

  • Ce sujet contient 21 réponses, 4 participants et a été mis à jour pour la dernière fois par Jim Neray, le il y a 1 mois et 1 semaine.
  • Créateur
    Sujet
  • #75812
    Alain.Treesong
    • Level 5
    • Messages : 177

    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

     

Viewing 6 replies - 16 through 21 (of 21 total)

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

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

    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 : 177

    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 : 177

    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 : 177

    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 : 278

    trés impressionnant !

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

    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 - Le Webshop Amiga

Partager sur vos réseaux sociaux préférés :
Facebooktwitterredditpinterestlinkedintumblrmail
Viewing 6 replies - 16 through 21 (of 21 total)
  • Vous devez être connecté pour répondre à ce sujet.