Journal Dread: faire plus avec moins

Posté par  . Licence CC By‑SA.
20
5
fév.
2022

Est-ce qu'il peut faire tourner Doom ? Oui, et mieux que ton grille-pain.

https://www.youtube.com/watch?v=CIjSNlUS3vg

C'est une démo de Dread, une adaptation de Doom sur un Amiga 1200 stock (c'est à dire, sans carte accélératrice). Pas tout à fait «stock»: la machine a 8Mo de mémoire FAST (c'est à dire de la mémoire non partagée avec les coprocesseurs, cela libère le bus et accélère la partie CPU).

Allez voir la video, et souvenez-vous que tout ça tourne sur un 68EC020 (version 24 bits du 68020, pour les accès mémoire, vrai 32 bits sur les registres).
Il n'y a pas de FPU sur ce processeur. Il est cadencé à 14 Mhz , soit 0,014 Ghz.

D'autre part, la mémoire video de l'Amiga était organisée en bitplan, ce qui était un plus pour des scrollings différentiels, mais plutôt handicapant pour un jeu de ce genre où tous les plans doivent bouger de concert. On voit d'ailleurs sur les gros plans que tout n'est pas tracé verticalement: les couleurs un peu étranges montrent que les bitplans sont «coloriés» alternativement (surement dans ce genre: 1100b puis 0011b , c'est à dire colonne 1 = index 12, avec les deux bitplans, colonne 2: index 3 avec deux autres bitplans). Comme les combinaisons de couleurs sont limités du fait du faible nombre de bitplans, on ne peut pas «doubler» les combinaisons de couleurs, et on est obligé d'en utiliser des différentes.

Il y a plein d'autres gruges, cela mériterait qu'un vrai connaisseur de la machine s'y plonge. Je ne suis qu'un sympathisant admiratif.

Tout cela doit paraître abscons au plus grand nombre et je le comprends. L'amigaiste n'est plus un animal très présent dans le zoo de l'informatique.

Mais pensez un peu ce qu'on pouvait faire avant, avec si peu de puissance. Surtout la prochaine fois que vous lancerez votre framework favori dont l'éditeur demande à lui seul mille fois la puissance de cette vénérable machine…

  • # contemporains

    Posté par  (Mastodon) . Évalué à 6.

    Bon ce n'est pas tant impressionnant si on garde en tête que l'Amiga 1200 (1992) et Doom (1993) étaient contemporains.

    • [^] # Re: contemporains

      Posté par  . Évalué à 4.

      Ou qu'il est sorti sur GameBoy Advance qui a un cpu à 16MHz et beaucoup moins de RAM.

      Mais ça reste intéressant.

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: contemporains

      Posté par  . Évalué à 5.

      Il y a bien longtemps, j'ai joué à doom sur un apple Performa 630 et ca marchait pas mal, avec un processeur 68lc040 donc, assez proche du 68ec020.

      L'absence de fpu n'est pas génante car doom ne repose que sur du calcul en entier. (cf. l'excellent livre de Fabien Sanglard (https://fabiensanglard.net/gebbdoom/index.html) page 54.)

      Bon je dis pas, ca reste impressionnant, hein.

    • [^] # Re: contemporains

      Posté par  (site web personnel) . Évalué à 4.

      En revanche la comparaison avec l'éditeur de texte sorti dans les années 2000 ou 2010 reste vertigineuse.

      « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

    • [^] # Re: contemporains

      Posté par  . Évalué à 5. Dernière modification le 06 février 2022 à 11:12.

      D'après les tests de l'époque, il fallait au minimum un 386DX33 , et plutôt un 486.

      Je me souviens que ça tournait bien (en VGA donc 320×200) sur mon 486dx33, mais que ça ramait sur le 386sx25 de mon pote, donc la barrière du 386DX33 me parait raisonnable.

      Entre un 68020 à 14mhz et un 386 à 33mhz, ce n'est plus la même gamme de processeurs.
      À fréquence équivalente, un 68020 pouvait au mieux se comparer à un 386sx .

      Mais admettons que c'était kif-kif, il reste le plus gros problème qui sont les bitplans de l'Amiga. Un PC pouvait écrire un octet directement en VGA, tandis que le pauvre Amiga devait écrire bit par bits (il y avait des optims bien sûr, mais tu vois l'idée). Même en comparant avec le mode «X» du PC (4 écrans de 64ko accessibles sur le même segment de 64ko, grâce à des registres de bascule de la carte VGA), le PC sort gagnant pour ce qui est de colorier des surfaces rapidement.

      Discussions en français sur la création de jeux videos : IRC freenode / #gamedev-fr

      • [^] # Re: contemporains

        Posté par  (site web personnel) . Évalué à 3.

        En fait sur PC tu peux même colorier 4 pixels en une seule écriture si ils sont tous identiques.

        Voir les "black books" de Wolfenstein et Doom pour plus de détails. C'est une lecture passionnante :
        https://fabiensanglard.net/gebb/

      • [^] # Re: contemporains

        Posté par  . Évalué à 2.

        En regardant la vidéo j'ai l'impression que le rendu est fait en demie résolution, donc en 160x100 au lieu de 320x200. D'ailleurs les éléments fixes en bas de l'écran sont bien plus détaillés.

      • [^] # Re: contemporains

        Posté par  . Évalué à 2.

        A l'époque je faisais tourner Doom sur un 486 cadencé à 50MHz (et en RAM je ne sais plus), et sous Windows 3.11, ça ramait très légèrement.
        Ce jeu a toujours été une claque pour moi, je m'y replonge assez régulièrement (sur la GBA, puis sur PC avec Brutal Doom encore récemment), le gameplay et le level design sont toujours aussi cool. La suite avec DOOM 2 est encore meilleure.

    • [^] # Re: contemporains

      Posté par  (site web personnel) . Évalué à 5.

      D’après John Carmack lui-même, il n'est pas possible de faire tourner DOOM sur un Amiga : https://www.amigareport.com/ar227/p1-7.html

      Cyberdépendance, cyberharcèlement, pédocriminalité… : Zelbinium, pour que les smartphones soient la solution, pas le problème !

      • [^] # Re: contemporains

        Posté par  (Mastodon) . Évalué à 7.

        Ce qui ne veut pas dire que faire tourner un FPS était impossible. Il me semble qu'il y a eu au moins Alien Breed 3D 1 & 2 et Gloom.

        Mais effectivement comme dit plus haut on peut s'étonner de l'état de l'art et le gaspillage de ressources actuel avec les frameworks modernes.

  • # Graphismes Amiga et mode HAM

    Posté par  (site web personnel) . Évalué à 5. Dernière modification le 06 février 2022 à 08:20.

    Possible que l'explication donnée dans le journal soit la bonne, mais ne serait-il pas possible que les artefacts graphiques soient dû à l'utilisation du mode HAM ?

    Cyberdépendance, cyberharcèlement, pédocriminalité… : Zelbinium, pour que les smartphones soient la solution, pas le problème !

    • [^] # Re: Graphismes Amiga et mode HAM

      Posté par  . Évalué à 3.

      J'ai fait des recherches sur Dread et le HAM, mais je n'ai rien trouvé.

      Je ne pense pas, car les contraintes étaient assez fortes avec le HAM (en plus des contraintes de proximité lors d'un changement de couleur).

      C'était assez adapté pour afficher des images, mais pour de l'animation, c'était quasi-mission impossible (même si only Amiga makes it possible :) )

      Je crois qu'il y a eu un shoot-em up en mode HAM, qui était plus une démo qu'autre chose. Sinon les jeux utilisaient plutôt le copper pour ajouter des couleurs avec des fonds dégradés, ou des gruges d'affichage de sprites dupliqués (pour également rajouter des fonds à bon compte: voir https://codetapper.com/amiga/sprite-tricks/risky-woods/ )

      Discussions en français sur la création de jeux videos : IRC freenode / #gamedev-fr

      • [^] # Re: Graphismes Amiga et mode HAM

        Posté par  (site web personnel) . Évalué à 4.

        Je viens de tomber là-dessus : https://eab.abime.net/showthread.php?t=98654. Il y a des interventions de l'auteur du jeu, notamment à la page 18. D'après ce que j'ai compris, pas de HAM effectivement, même s'il ne semble pas hostile à l'idée d'y recourir un jour. Ceci dit, je n'ai pas tout lu…

        Cyberdépendance, cyberharcèlement, pédocriminalité… : Zelbinium, pour que les smartphones soient la solution, pas le problème !

  • # TW: jeux de mot pourris

    Posté par  (site web personnel) . Évalué à 7.

    Est-ce qu'il peut faire tourner Doom ? Oui, et mieux que ton
    grille-pain.

    Le niveau de difficulté sur la version de Doom pour grille-pain, c'est le "Pain level" ?

    C'est une démo de Dread, une adaptation de Doom sur un Amiga
    1200 stock (c'est à dire, sans carte accélératrice).

    Qui de la version Doom Bread ?

  • # Big planes et scrolling différentiel ?

    Posté par  . Évalué à 3.

    C’est la 1ère fois qu’elle je lis que les bitplanes favorisent le scrolling différentiel.

    Sais-tu où il est possible de lire une explication sur le sujet ?

    BeOS le faisait il y a 20 ans !

    • [^] # Re: Big planes et scrolling différentiel ?

      Posté par  . Évalué à 5.

      Je n'ai pas de source sous la main, mais l'explication est simple:

      Chaque bitplan possède un pointeur sur ce qu'il doit afficher.

      Au lieu d'incrémenter l'adresse de départ de chaque bitplan avec la même valeur (scrolling classique), tu vas en incrémenter un plus que l'autre. Ça provoque un décalage qui donne l'effet différentiel.
      Il faut bien sûr que (B1 or B2) soit égal soit à B1, soit à B2. Autrement tu vas avoir une troisième couleur qui va apparaître lors de la combinaison des bitplans. Si c'est impossible à éviter, il faut jouer avec la palette pour que la combinaison ne soit pas trop visible.

      L'inconvénient de cette méthode, outre la contrainte évoquée ci dessus, est que tu perds en couleurs affichables.
      Avec 5 bitplans, tu as 32 couleurs affichables si utilisés de manière classique (superposés).
      Si tu scrolles différentiellement, tu vas avoir par exemple:
      un groupe de 3 bitplans (8 couleurs)
      un groupe de 2 bitplans (4 couleurs)

      J'espère que c'est clair, c'était pas si simple à expliquer :)

      Discussions en français sur la création de jeux videos : IRC freenode / #gamedev-fr

      • [^] # Re: Big planes et scrolling différentiel ?

        Posté par  (site web personnel) . Évalué à 5. Dernière modification le 06 février 2022 à 17:25.

        Il n'existe pas vraiment de liens entre le mode bitplane de l'Amiga et les défilements différentiels ou parallèles.

        Sur Amiga il convient au moins de différencier deux cas : le premier cas où les plans de ne se superposent pas ; et le deuxième cas où les plans se superposent.

        Dans le cas où les plans ne se superposent pas, il est possible de demander à l'Amiga d'attendre une certaine ligne de l'écran, de modifier alors le pointeur vidéo et éventuellement de décaler l'affichage à partir de cette ligne vers la gauche ou la droite d'un certain nombre de pixels. Par exemple le jeu Shadow of the Beast sorti en 1989 abuse de cette méthode dans le premier niveau, avec en haut de l'écran cinq bandes de nuages et les montagnes et en bas cinq bandes pour l'herbe, donc onze bandes qui défilent horizontalement à des vitesses différentes sans aucune superposition, juste en changeant le pointeur vidéo et en appliquant un décalage à une ligne donnée. Le mode bitplane, qui stocke un pixel par plan n'apporte rien, on peut tout à fait imaginer une puce graphique qui puisse changer le pointeur vidéo et appliquer un décalage dans un mode truecolor, qui stocke un octet par pixel.

        Dans le cas où les plans se superposent, l'Amiga proposait le mode dual playfield qui permet de grouper les bitplans par trois (sur les puces ECS des Amiga 500, 600 et 3000) ou par quatre (sur les puces AGA des Amiga 1200 et 4000). L'idée est de proposer deux plans totalement indépendant en deux fois huit couleurs sur les puces ECS ou deux fois seize couleurs sur les puces AGA, la couleur zéro servant de transparence. Les pointeurs vidéos des deux plans peuvent être modifiés et être décalés horizontalement d'un ou plusieurs pixels de façon indépendante. Là encore on pourrait tout à fait imaginer une puce graphique qui puisse proposer un mode dual playfield dans un mode truecolor, avec deux plans de 256 couleurs chacun se superposant l'un à l'autre.

        D'ailleurs le jeu Shadow of the Beast utilise également le mode dual playfield en plus des défilements parallèles sans superposition.

        • [^] # Re: Big planes et scrolling différentiel ?

          Posté par  . Évalué à 2.

          Merci pour ta réponse.

          La mienne était incomplète, en oubliant de parler du décalage possible pour un même plan avec le copper (alors que c'est le principe même).

          C'est d'autant plus impardonnable que j'ai déjà utilisé cette technique sur PC avec un pixel shader: une grosse texture dont je modifie l'offset de départ (elle boucle sur elle même horizontalement) selon la ligne. Scrolling différentiel quasi gratos avec ça !

          Discussions en français sur la création de jeux videos : IRC freenode / #gamedev-fr

  • # Pas tout à fait Doom

    Posté par  . Évalué à 2. Dernière modification le 07 février 2022 à 03:40.

    Alors certes la vidéo est impressionnante ; néanmoins le moteur montré possède pas mal de limitations par rapport à celui de Doom:

    • Pas de texture de sols ni plafonds
    • Pas de murs transparents (comme des grilles)
    • Pas de différentes hauteurs de sols : impossible, je suppose, d'avoir des escaliers ou ascenseurs avec ce moteur. On aperçoit cependant un fossé à 5:59 ; mais le joueur choisit de ne pas s'en approcher donc dur de voir ce qu'il en est.
    • Plafond variables : ah, ça il y en a au dessus des portes ainsi que sur les décors extérieurs.

    Ca reste cependant impressionnant. Pour rester dans le registre de "Doom ne peut pas tourner sur un 68K, mais en fait si", j'ai bien aimé Doom sur une calculatrice TI-89 (68000 à 16 Mhz et écran noir et blanc qu'on force à afficher des niveaux de gris) :
    https://www.youtube.com/watch?v=hErarP8UYB8

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.