[ASM 68000] Rubik’s

Forum Amiga Coding [ASM 68000] Rubik’s

  • Ce sujet contient 30 réponses, 4 participants et a été mis à jour pour la dernière fois par donamiga, le il y a 3 années et 4 mois.
  • Créateur
    Sujet
  • #104642
    Arnaud.68K
    • Level 3
    • Messages : 69

    Bonjour,

     

    Voici mes débuts sur un cube Rubik’s A500 temps réel

    https://github.com/Amiga68000/Rubiks.Amiga.68000

    Pour le moment ça passe dans le VBL mais le cube :

    – est en monochrome

    – n’est pas en faces pleines

    – n’a pas encore de rotations de couronnes

    Vous pouvez voir dans le code certains TODO en guise de pistes d’optimisation.

    A+

    Arnaud

    @donAmiga, peux-tu reposter ici tes liens vers les démos existantes ;-)

    A500 + 512k, adepte du SM attention avec un A devant !

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

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

  • Auteur
    Réponses
  • #104665
    donamiga
    • Level 5
    • Messages : 249

      y a pas beaucoup de demos Amiga 500 avec un rubik’s cube

      Made In Croatia/Binary

      It Will make you Mad/Intryx  (12/1992).
      routine apparue la premiere fois dans RAW 4 Headlines/PMC (10/1992) par le meme auteur

      sur Aminet il y a le Rubik Cube Solver

      et la magnifique demo Atari Falcon :  Joy/New Beat

       



      #104672
      donamiga
      • Level 5
      • Messages : 249

        polygoneSauvePourRotation:
        ds.w 21*16,0

        nan. asmtow semble bien permissif :

        soit ds.w 21*16

        soit dcb.w 21*16,0

        compatible devpac à 2 ou 3 trucs…

        #104696
        jean3.5
        • Level 8
        • Messages : 617

          Bravo à toi Arnaud.68000, le rubiks tourne chez moi !

          avec quelques bugs sans doute car j’ai du supprimer les ligne avec « font8 »

          Quand j’arriverai à faire ça, je serai trop heureux !

          Bonne continuation ! :good:

           

          #104700
          jean3.5
          • Level 8
          • Messages : 617

            Je me suis rendu compte qu’en enlevant juste le chemin de ta source et en laissant le fichier font8.fnt à la base dans le même dossier que ASMtwo, ça fonctionnait.

            Par contre j’obtiens  ça  :

            #104708
            Arnaud.68K
            • Level 3
            • Messages : 69

              Normal Jean tu es en mode Debug

              Passe à 0 la ligne 35 environ :

              DEBUGDISPLAYTIME=1 ;affiche le debug

              Le mode Debug permet de voir graphiquement le temps CPU qu’il te reste (vert) et le  temps utilisé (rouge) à chaque balayage écran et donc de jauger les optimisations apportées.

              Pour être fluide, il faut pouvoir garder un peu de vert, sinon passer un balayage pour finir les calculs et donc passer de 50 à 25 images/secondes.

               

              Avec de la patience et de l’envie tu peux y arriver ;-)

              A500 + 512k, adepte du SM attention avec un A devant !

              #104828
              jean3.5
              • Level 8
              • Messages : 617

                Ok 1000 pardons ! j’aurais du lire un peu ton code avant de dire et faire n’importe quoi ^^.

                Oui merci, j’ai pas beaucoup de temps mais dès que je peux, je me met à l’apprentissage de l’ASM. Pour te donner mon niveau, je ne suis arrivé qu’à la vidéo 4 de Jel  que je regarde en boucle en ce moment, donc vraiment qu’au tout début ! :lol: Et c’est vraiment encourageant de suivre tes deux projets

                #104845
                Arnaud.68K
                • Level 3
                • Messages : 69

                  Bonjour,

                  Voilà j’ai mis de la couleur .. en filaire (pour du plein on verra plus tard)

                   

                  https://github.com/Amiga68000/Rubiks.Amiga.68000/releases/tag/AA

                  A500 + 512k, adepte du SM attention avec un A devant !

                  #104846
                  Arnaud.68K
                  • Level 3
                  • Messages : 69

                    @

                    Ok 1000 pardons ! j’aurais du lire un peu ton code avant de dire et faire n’importe quoi ^^. Oui merci, j’ai pas beaucoup de temps mais dès que je peux, je me met à l’apprentissage de l’ASM. Pour te donner mon niveau, je ne suis arrivé qu’à la vidéo 4 de Jel que je regarde en boucle en ce moment, donc vraiment qu’au tout début ! :lol: Et c’est vraiment encourageant de suivre tes deux projets

                    Merci pour ton retour, ça fait aussi plaisir de voir mon code tourner sur une vrai machine. Perso je suis sur WinUae, mon A500 étant dans les cartons j’aimerais bien faire tourner mon code dessus mais j’ai un peu de taff pour le rendre opérationnel :

                    • carte interface video pour moniteur à mettre en route
                    • transférer code sur disquette, à ce propos tu fais comment pour ton 1200 ?

                    A500 + 512k, adepte du SM attention avec un A devant !

                    #104847
                    Arnaud.68K
                    • Level 3
                    • Messages : 69

                      y a pas beaucoup de demos Amiga 500 avec un rubik’s cube – Made In Croatia/BinaryIt Will make you Mad/Intryx sur Aminet il y a le Rubik Cube Solver et la magnifique demo Atari Falcon : Joy/New Beat

                       

                      Merci DonAmiga

                      — Made in Croatia —

                      Ca plante, je sais pas quelle conf il faut, est-ce de l’A500

                      — Intryx —

                      Demo sympa, très jolie. Le rubiks est dessiné avec ses faces .. et ses arrêtes en noir sur fond bleu.

                      Pour du temps réel chapeau car il y a pas mal de calculs :

                      • pas d’interférence des faces lors des rotations de couronnes (à ce propose je sais pas trop comment faire pour du temps réel)
                      • arrêtes noires dessinées en plus des faces
                      • rotation de couronnes

                      — JOY falcon 30  —

                      Top je confirme. On est pas dans la même cour, le Faclon 30 est un 68030, belle machine.

                      A500 + 512k, adepte du SM attention avec un A devant !

                      #104849
                      donamiga
                      • Level 5
                      • Messages : 249

                        made in croatia : plante où ??
                        A500, rien de bien particulier… 512/512 ou plus, je viens de la faire tourner en quickstart 1.3

                        ds.b FIN_POLY-POLY,$BB

                        pourquoi ça marche avec asmTwo : ds.b xxx,$BB ça n’existe pas, … faut faire du code qui marche partout : ds.b FIN_POLY-POLY (déjà signalé plus haut)

                        hint : movea.l 4.w,a6, du code (pc) relatif pour moins de hunks reloc

                        pour les allocmem, en faire 1 en chip plutôt que plusieurs petits et spreader sur les pointeurs alloc (permet de faire un erroralloc au cas où) et 1 seul freemem:
                        move.l #COPSIZE+display*3,d0
                        move.l #$10002,d1
                        jsr AllocMem(a6)
                        move.l d0,copperlist_PTR
                        beq errormem
                        add.l #COPSIZE,d0
                        move.l d0,bitplaneA

                        note : je trouve la perspective du cube etrange… comme dans celle d’Intryx d’ailleurs



                        #104859
                        jean3.5
                        • Level 8
                        • Messages : 617

                          tu fais comment pour ton 1200 ?

                          Je ne sais pas si j’ai bien compris la question…

                          mais justement depuis une semaine*, je n’ai utilisé que mon 1200. Je lance ASMtwo depuis mon disque dur (WB3.1) et je récupère ton code depuis mon pc via une carte CF en pcmcia .

                          *depuis une semaine…  car j’ai pommé mon adaptateur usb-SD qui me sert à lire mes ADF avec mon gotek, comme pour ASMone par exemple. pour ma première tentative de lecture de ton code, je l’avais copier dans le dossier « exemple » dans l’adf de ASMone avec WinUAE, avant de le lire dans le gotek du A500.

                          Pour le coup, j’ai commandé 2 nouveaux adaptateur SD, dont un qui devrait être dans la boite aux lettre à cette heure :lol:

                          Seul :cry:  

                          Voici c que ça donne avec le 1200 de base +fast ram

                          https://www.facebook.com/100013145713455/videos/1052514681863379/

                          #104870
                          donamiga
                          • Level 5
                          • Messages : 249

                            d’autres remarques : il faudrait assainir le code avec un basecode potable : cf. cours de JEL qui a le merite d’être clair
                            et là ça devient illisible en code spaghetti sans subroutine
                            pour le copper par exemple : $FF00 ?? dc.w $yyxx,$FFFE

                            les tableaux, eviter les espaces entre les valeurs : « 12,  15,10 » ça merde avec certains compilateurs

                            mettre la copperlist direct en chip dans un section copper,data_c

                            à la limite, idem pour les screens (appelés ici bitplaneA,B,C) dans un section screen,bss_c

                            pour un phase de test ça permet de mieux savoir où sont les screens qu’avec allocmem

                            enfin bon, là j’ai testé avec devpac, plus rien ne s’affiche. et avec asmone, c’est une fois sur 2 ecran vide

                            #104875
                            Arnaud.68K
                            • Level 3
                            • Messages : 69

                              >made in croatia : plante où ??

                              Ça dépend, là c’est 2 secondes après l’apparition du  premier objet graphique 3D rouge et blanc (kickstart 1.3, winUAE, temps réel, 500+500ko)

                              >ds.b FIN_POLY-POLY,$BB

                              C’était pour des tests, j’avais un bug et je voulais savoir si ma table était bien remplie. Donc au départ je la remplissait avec une valeur quelconque. Ca n’a pas l’air de marcher sous ASMTwo (K-SEKA y avait une commande de ce type, je me souviens plus), je vais supprimer.

                              >hint : movea.l 4.w,a6, du code (pc) relatif pour moins de hunks reloc

                              quelle différence avec movea.l Execbase,a6 puisque Execbase vaut 4 ?

                              >pour les allocmem, en faire 1 en chip plutôt que plusieurs petits et spreader sur les pointeurs alloc (permet de faire un erroralloc au cas où) et 1 seul freemem

                              Ok ça marche je vais corriger

                              >note : je trouve la perspective du cube etrange… comme dans celle d’Intryx d’ailleurs

                              Il n’y a pas de perspective avec lignes fuyantes, c’est peut être pour ça ?

                              >basecode potable

                              Ok je le mets en TODO, mais je vais avoir besoin de conseils, si il y a un doc ou une video spécifique je prends

                              >mettre la copperlist direct en chip dans un section copper,data_c

                              Donc pas besoin de faire un transfert en chip ? D’ailleurs ça marche comment une fois compilé, l’OS charge les sections de code en fonctions des directives d’allocation ?

                              >à la limite, idem pour les screens (appelés ici bitplaneA,B,C) dans un section screen,bss_c

                              Oui je comprends le besoin pour le test, mais après faut allouer pour pas grossir le code

                              >pour le copper par exemple : $FF00 ?? dc.w $yyxx,$FFFE

                              C’était dans le code de YRAGAEL, peut pas te dire, ou alors j’ai pas compris ta remarque

                              Merci pour tes remarques

                              Voici mes TODO :

                              ;TODO Basecode portable
                              ;TODO AllocMem en 1 fois et en Chip
                              ;TODO supprimer les espaces dans les tables
                              ;TODO clarifier le code avec des SUB
                              ;TODO mettre la copperlist direct en chip dans un section copper,data_c

                               

                              A500 + 512k, adepte du SM attention avec un A devant !

                              #104878
                              Arnaud.68K
                              • Level 3
                              • Messages : 69

                                Je ne sais pas si j’ai bien compris la question…

                                Si impec, un GOTEK ça marche.

                                Merci pour ta video, ça fait plaisir ;-)

                                A500 + 512k, adepte du SM attention avec un A devant !

                                #104891
                                Staff
                                Zarnal
                                • Level 22
                                • Messages : 7453

                                  Pour croatia j’ai un plantage au bout de 3s avec la 4.4 et la dernière beta 4.5.

                                  Ok en 4.3. Certainement à cause des modifs 68000 de la 4.4. Il y avait déja eu quelques problèmes à la suite de ces changements au départ.

                                  Je tente un report sur EAB, le temps de préparer un savestate.

                                  Edit : c’est fait.

                                  A1200 Commodore mutant " FrankenAmiga" + 68040 + 8MO + SD 8go - A1200 ESCOM. HD 20MO. Mon meilleur et seul A500 : WinUae. CPC 6128-CPC 464.

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