[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 donamigadonamiga, le il y a 6 jours et 3 heures.
  • Créateur
    Sujet
  • #104642
    Arnaud.68000Arnaud.68000
    • Level 2
    • Messages : 49

    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 !

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
    donamigadonamiga
    • Level 5
    • Messages : 238

    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

     

    the b(l)itter end - A500 +512 1.2/A500 +512 1.3 marche p'us/A1200 3.0 4mb fast/A3000 8 mb fast 2.04+1.3/Gotek externe



    #104672
    donamigadonamiga
    • Level 5
    • Messages : 238

    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…

    the b(l)itter end - A500 +512 1.2/A500 +512 1.3 marche p'us/A1200 3.0 4mb fast/A3000 8 mb fast 2.04+1.3/Gotek externe

    #104696
    jean3.5jean3.5
    • Level 6
    • Messages : 328

    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.5jean3.5
    • Level 6
    • Messages : 328

    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.68000Arnaud.68000
    • Level 2
    • Messages : 49

    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.5jean3.5
    • Level 6
    • Messages : 328

    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.68000Arnaud.68000
    • Level 2
    • Messages : 49

    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.68000Arnaud.68000
    • Level 2
    • Messages : 49

    @

    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.68000Arnaud.68000
    • Level 2
    • Messages : 49

    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
    donamigadonamiga
    • Level 5
    • Messages : 238

    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

    the b(l)itter end - A500 +512 1.2/A500 +512 1.3 marche p'us/A1200 3.0 4mb fast/A3000 8 mb fast 2.04+1.3/Gotek externe



    #104859
    jean3.5jean3.5
    • Level 6
    • Messages : 328

    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
    donamigadonamiga
    • Level 5
    • Messages : 238

    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

    the b(l)itter end - A500 +512 1.2/A500 +512 1.3 marche p'us/A1200 3.0 4mb fast/A3000 8 mb fast 2.04+1.3/Gotek externe

    #104875
    Arnaud.68000Arnaud.68000
    • Level 2
    • Messages : 49

    >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.68000Arnaud.68000
    • Level 2
    • Messages : 49

    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
    ZarnalZarnal
    • Level 18
    • Messages : 4298

    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
15 réponses de 1 à 15 (sur un total de 30)
  • Vous devez être connecté pour répondre à ce sujet.