› Forums › Communauté › Le Bar
[demo] Bad apple sur 8088 ;)
-
Non, c’est un simple exe tout en 1 intégralement chargé en ram pour cet exemple vite fait hier dans la précipitation et non achevé (tu remarqueras que la vitesse n’est pas bonne par rapport au clip original). Mais cela demeure une video + un module.
On peut améliorer avec un stream dans la limite du taux de transfert Dk max.
Ce n’est pas destiné à être diffusé pour l’heure. Ce n’est pas terminé.
C’était destiné à montrer ce que cela pourrait donner sur une disquette. :p
Après, pour 1200 stock sans fast et dans la foulée, une version en streaming pour 1200 16 niveaux de gris. Juste pour l’exemple. :p
Reste à voir si une CF encaisse ce taux de transfert pour les 16 niveaux. :p Avec une version en 4 niveaux de gris 30fps + audio 11khz, je suis à 300 ou 500k/s (je ne sais plus exactement).
Edit : après verif pour la 16 niveaux je suis déja à 245k/s rien que pour la vidéo.
Il faudrait trammer la version en 16 couls. Ce sont des anims IFF je suppose. Alors un truc que j’avais découvert il y a longtemps c’est que l’ordre de la palette $000,$111,…$fff n’est pas optimal par rapport au nombre de bitplans changés simultanément. Par exemple quand on passe du gris 7 au gris 8, on passe de coul=%0111 à coul=%1000, c’est à dire que tous les bitplans sont changés en même temps pour une variation infime des couleur. Changer tous les bitplans mange non seulement de la resource CPU, mais surtout de la bande passante depuis le média de stoackage.
Ce changement de pleins de bits vient du comptage binaire dans lesquel un simple +1 peut faire changer tous les bits. Or il existe une autre façon de compter dans lequel +1 ne change qu’un seul bit. C’est le codage gray. Avec ce codage quand la couleur passe de n à n+1, un seul bitplan est modifié. C’est beaucoup plus avantageux pour la bande-passante.
Le truc est donc de ré-organiser l’ordre des teintes de gris dans la palette pour que ca reprenne la valeur gray:
[code]
palette 0,$000 REM 0–>0000
palette 1,$111 REM 1–>0001
palette 3,$222 REM 2–>0011
palette 2,$333 REM 3–>0010
palette 7,$444 REM 4–>0110
palette 6,$555 REM 5–>0111
palette 4,$666 REM 6–>0101
palette 5,$777 REM 7–>0100
palette 15,$888 REM 8–>1100
palette 14,$999 REM 9–>1101
palette 12,$AAA REM 10–>1111
palette 13,$BBB REM 11–>1110
palette 8,$CCC REM 12–>1010
palette 9,$DDD REM 13–>1011
palette 11,$EEE REM 14–>1001
palette 10,$FFF REM 15–>1000
[/code]Pour afficher la teinte n, il faut alors afficher celle en index (n^(n<<1))>>1 (notation « C », c’est ce qui est indiqué à droite du REM). Avec ce codage, quand on passe de n à n+1, la palette est organisée pour qu’un seul bit d’index change cad un seul bitplan est impacté.
Samuel.
Amiga A500 + GVP530 (8Mo/fpu/mmu/scsi) - en panne 🙁
A500 (+ 1Mo PPS), A1200 (Blizzard-IV/fpu/64Mo)
A500 Vampire V2+ ^8^ 🙂
(mais aussi TO8, TO8D, TO9. Groupe PULS.)Reste un léger ajustement de synchro. Base en anim7L.
320*240 30fps stereo 11Khz
@sam
Merci de cette explication technique. Je réponds plus en détails plus tard.
Très bon boulot, la VF pour ceux que ça intéresse…
Oops je crois que je me suis gouré en recopiant. Les REM ne correspondent pas. Le principe est bon, mais la vraie bonne liste est:
[code]
palette 0, $000 REM 0—>0000
palette 1, $111 REM 1—>0001
palette 3, $222 REM 2—>0011
palette 2, $333 REM 3—>0010
palette 6, $444 REM 4—>0110
palette 7, $555 REM 5—>0111
palette 5, $666 REM 6—>0101
palette 4, $777 REM 7—>0100
palette 12,$888 REM 8—>1100
palette 13,$999 REM 9—>1101
palette 15,$AAA REM 10–>1111
palette 14,$BBB REM 11–>1110
palette 10,$CCC REM 12–>1010
palette 11,$DDD REM 13–>1011
palette 9, $EEE REM 14–>1001
palette 8, $FFF REM 15–>1000
[/code]
Donc là oui, l’intensité n (de 0 à 15) est mappée sur la palette (n xor 2n)/2 (/=div entière). Exemple l’intensité 11=%1011 est mappée en (%01011 xor %10110)/2=%11101/2=%1110=14. Ca marche! Et comme on peut le constater avec les $nnn, passer de n à n+1 ne change qu’un seul bit dans l’entrée palette, cad un seul bitplan à modifier.Samuel.
Amiga A500 + GVP530 (8Mo/fpu/mmu/scsi) - en panne 🙁
A500 (+ 1Mo PPS), A1200 (Blizzard-IV/fpu/64Mo)
A500 Vampire V2+ ^8^ 🙂
(mais aussi TO8, TO8D, TO9. Groupe PULS.)Je pense qu’il y a une incompréhension sur cette version. 😛
En effet, cette version 4 bits, ce n’est pas du tout du code, c’est la lecture en stream via player d’un flux multiplexé anim7+son que j’ai totalement crée moi même de A à Z pour mon plaisir perso.
Si ce n’est pour l’extraction des images et du son, tout s’est passé sur l’amiga via ému en 3.1 avec des outils d’époque. :p
En tout cas sam, merci pour les explications concernant le code gray.
Il faut savoir qu’une version » officielle » arrivera tôt ou tard mais je me refuse à griller la politesse au codeur concerné. :p
XOR ou pas, là est la question 🙂 As tu essayé de voir l’impact au niveau « volume de l’animation » entre la palette traditionelle et celle utilisant le code (Felix) Gray ?
Samuel.
Amiga A500 + GVP530 (8Mo/fpu/mmu/scsi) - en panne 🙁
A500 (+ 1Mo PPS), A1200 (Blizzard-IV/fpu/64Mo)
A500 Vampire V2+ ^8^ 🙂
(mais aussi TO8, TO8D, TO9. Groupe PULS.)et la musique est aussi joué par BK001?
- Vous devez être connecté pour répondre à ce sujet.
› Forums › Communauté › Le Bar › [demo] Bad apple sur 8088 ;)