[Thomson] Musique et vidéo avec SDSTREAM

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par Daniel »

A la première lecture, il y a au moins deux points à corriger :
- La détection du type de machine (MO/TO) est assez peu conventionnel. Pourquoi PEEK(0) serait-il à 32 pour les TO et pas pour les MO ?
Le plus souvent on teste l'octet $FFF2: $F0(MO) ou $70(TO)
- La sélection de la banque mémoire vidéo (couleur/forme) se fait avec le bit 0 de $A7C0 (et pas $A7C3)
Daniel
L'obstacle augmente mon ardeur.
Brochiman
Messages : 3406
Inscription : 02 juin 2019 11:26
Localisation : Angers

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par Brochiman »

tjjq44 a écrit : 18 janv. 2022 19:46 FIchier couleur TO lu sur MO :
Image
Oui c'est exactement les couleurs que j'ai eu sur MO5
tjjq44
Messages : 220
Inscription : 26 oct. 2016 13:40

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par tjjq44 »

Daniel a écrit : 18 janv. 2022 22:15 A la première lecture, il y a au moins deux points à corriger :
- La détection du type de machine (MO/TO) est assez peu conventionnel. Pourquoi PEEK(0) serait-il à 32 pour les TO et pas pour les MO ?
Le plus souvent on teste l'octet $FFF2: $F0(MO) ou $70(TO)
- La sélection de la banque mémoire vidéo (couleur/forme) se fait avec le bit 0 de $A7C0 (et pas $A7C3)
Ah ben ça marche beaucoup mieux déjà :D (j'avais piqué du code dans d'obscurs bouquins de ton site... :lol: )

J'arrive désormais à charger une image indifféremment sur TO comme sur MO cependant il reste un petit soucis et je pense que c'est un bug dans la "moulinette de conversion couleur TO -> MO" quand certaines couleurs se répètent... Les images "f-gall" et "mont-sm" sont strictement identiques que ce soit sur TO ou MO mais l'image "mire" déconne lorsqu'on la charge sur MO! J'ai fait la conversion exactement de la même manière et revérifié plusieurs fois, j'ai même fait un essai en la substituant dans sdstream_music_couleur "Ella pour MO" -> même punition.

Mire sur TO (normal) :
Image

Mire sur MO :
Image
On remarque ici que la première et la dernière ligne s'affichent à l'identique sur MO ou TO, ce sont les deux lignes intermédiaires qui déconnent.

J'ai mis à jour le fichier zip avec les 9 fichiers (3 pour chaque image) : http://tjjq.free.fr/thomson/mire-moto.zip
Ils font 8010 octets chacun car pour pouvoir être chargés depuis le basic il y a un entête de chargement de 5 octets et 5 octets de fin de fichier aussi.

Et ici le loader fonctionnel (mais il est peu probablement en cause car même avec sdstream_music cette image déconne) :

Code : Tout sélectionner

10 'CHARGE LA RAM VIDEO
100 INPUT "Nom du fichier (sans l'extension)";NO$
110 IF PEEK(&HFFF2)<128 THEN DECAL=&H4000:PRC=&HE7C3:NOB$=NO$+".CTO" ELSE DECAL=0:PRC=&HA7C0:NOB$=NO$+".CMO"
120 NOA$=NO$+".FRM"
130 LOCATE 0,0,0:SCREEN 0,0,0
140 POKE PRC,PEEK(PRC) OR 1
150 LOADM NOA$,DECAL
160 POKE PRC,PEEK(PRC) AND 254
170 LOADM NOB$,DECAL
180 I$=INKEY$
190 IF I$="" THEN GOTO 180
200 COLOR 7,0:LOCATE 0,24,1
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par Daniel »

Oui, c'est un bug dans mon outil de conversion. Bien vu :!:

Je l'ai écrit de mémoire, et ma mémoire n'est pas sans faille. Dans la version d'hier les deux bits d'intensité de la couleur TO étaient inversés.
Ce matin j'ai relu la documentation et découvert l'erreur. Les deux bits sont maintenant dans le bon ordre. J'ai modifié mon post d'hier (voir un peu plus haut dans ce fil de discussion) pour remplacer la mauvaise version par la bonne. Peux-tu l'essayer avec ta mire ?
Dernière modification par Daniel le 19 janv. 2022 09:44, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
Brochiman
Messages : 3406
Inscription : 02 juin 2019 11:26
Localisation : Angers

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par Brochiman »

Daniel a écrit : 18 janv. 2022 17:46 Du coup, en attendant une version unique compatible TO et MO, j'ai fait une version MO d'Ella :
https://transfert.free.fr/EBaXwn (lien provisoire 30 jours).
Merci Daniel, j'étais passé à coté de ce post :cry:
tjjq44
Messages : 220
Inscription : 26 oct. 2016 13:40

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par tjjq44 »

Super, Avec ça « tout le monde » va pouvoir créer des musiques avec image couleur :D
Je viens de piger pourquoi les deux autres fichiers (f-gall et mont-sm) passaient bien, ils n’utilisent que les 8 couleurs de base!

[edit] j’essaie ça ce soir en rentrant.
tjjq44
Messages : 220
Inscription : 26 oct. 2016 13:40

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par tjjq44 »

Bon ben cette fois c'est la bonne, le fichier mire s'affiche correctement! J'ai même fait la conversion aller-retour pour voir, le fichier est strictement identique à l'original.

Image

Tiens et tant que c'est encore tout frais dans ta tête, peux-tu donner la séquence des opérations logiques que tu appliques sur un octet à convertir (dans un sens comme dans l'autre)?
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par Daniel »

Code : Tout sélectionner

//Conversion mo->to //////////////////////////////////////////////////////////
//MO=  7  6  5  4  3  2  1  0
//TO= /3 /7  6  5  4  2  1  0
void Conversionmoto()
{
 int i, c;
 for (i = 0; i < 0x1f40; i++)
 {
  c = ((couleur[i] & 0x70) >> 1) | (couleur[i] & 0x07);
  if((couleur[i] & 0x80) == 0) c |= 0x40;
  if((couleur[i] & 0x08) == 0) c |= 0x80;
  couleur[i] = c;
 }
 strcat(filename, ".to");
}

//Conversion to->mo //////////////////////////////////////////////////////////
//MO=  7  6  5  4  3  2  1  0
//TO= /3 /7  6  5  4  2  1  0
void Conversiontomo()
{
 int i, c;
 for (i = 0; i < 0x1f40; i++)
 {
  c = ((couleur[i] << 1) & 0x70) | (couleur[i] & 0x07);
  if((couleur[i] & 0x80) == 0) c |= 0x08;
  if((couleur[i] & 0x40) == 0) c |= 0x80;
  couleur[i] = c;
 }
 strcat(filename, ".mo");
}
Daniel
L'obstacle augmente mon ardeur.
tjjq44
Messages : 220
Inscription : 26 oct. 2016 13:40

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par tjjq44 »

Ok je vois le principe mais avec juste des formules logiques "AND", "OR", "NOT" et "XOR" ça aurait été plus lisible pour moi lol. je charie :lol:

J'en reviens au plugin de Sam (Grafx2), après plusieurs essais il me semble que le plugin "ostro_to7.lua" est le plus efficace pour convertir une image "photoréaliste" pour MO5, TO7 ou TO7/70 (les autres Thomson ayant une palette plus vaste ne jouent pas dans la même cour forcément). Certes ici on se passe des 8 couleurs supplémentaires du MO5 et du TO7/70, mais elles sont tellement claires que ça n'apporte pas grand chose au schmilblick... c'est même pire le plus souvent (et pour ne rien gâcher ce mode est compatible avec toute la gamme).

J'aime bien bien dans tous les cas ce mode "320x200, 8/16 couleurs avec contraintes" des Thomson de première génération car à l'époque actuelle il permet aux développeurs de créer des programmes originaux tenant compte de celles-ci et cela évite les conversions habituelles de programmes existant déjà sur machines 8 bits (le 320*200 n'était possible qu'en 4 couleurs le plus souvent), je cite pour exemples récents "candy cruch java" et "sudoku" mais il y en a sans doute bien d'autres :wink:
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par __sam__ »

Tu as la réponse dans le code assembleur que j'ai indiqué plus haut pour une formule à base de and, or, et décalage. Le point important est indiqué dans les commentaires du code de Daniel : 76543210 côté MO devient /3 /7 654 210 côté TO. En francais : les bits de poids fort des deux nibbles de l'octet sont inversés. Le nibble de poids fort est décalé à droite et le bit du nibble bas passe en haut (on fait une rotation a droite des bits 7 a 3).
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
tjjq44
Messages : 220
Inscription : 26 oct. 2016 13:40

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par tjjq44 »

Le principe de placement des différents bits je l’ai bien compris desormais. Si on prend par exemple 10101110 sur TO ça devient 11010110 sur MO.

J’aimerai bien me servir de ton exemple pour faire la conversion sous basic par exemple mais je ne connais pas l’assembleur et ne sais pas ce que les instructions TFR, PSHS et LSLA font exactement sur l’octet à modifier... du coup même si de tête j’arrive sans soucis à convertir un octet je ne sais pas écrire la suite d'opérations logiques correspondante.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par __sam__ »

__sam__ a écrit : 17 janv. 2022 14:41

Code : Tout sélectionner

; Oui: conversion To->mo
Tfr a,b
Andb #7
Pshs b
ANDA #%11111000
Lsla
Adca #7
ANDA #%11111000
Ora ,s+
Eora #%10001000
En basic on ne peut pas faire de ADCA (addition avec retenue), du coup il faut l'extraire autrement (variable C) ce qui donne le code suivant:

Code : Tout sélectionner

REM A = octet TO
C = A and 128
A = ((A*2) and 240) or ((A and 7) or (C/16))
A = A xor (128+16)
REM A = octet MO
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
tjjq44
Messages : 220
Inscription : 26 oct. 2016 13:40

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par tjjq44 »

Ah là c’est super clair! Merci beaucoup 8)
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par Daniel »

tjjq44 a écrit : 20 janv. 2022 11:48 Si on prend par exemple 10101110 sur TO ça devient 11010110 sur MO.
Oui !
Les bits 0-2 sont inchangés
Les bits 3-5 sont décalés de 1 vers la gauche.
Le bit 7 est inversé et passe en position 3.
Le bit 6 est inversé et passe en position 4.

(Dans un premier temps j'avais donné une fausse information, j'ai corrigé la réponse).
Dernière modification par Daniel le 20 janv. 2022 18:12, modifié 2 fois.
Daniel
L'obstacle augmente mon ardeur.
tjjq44
Messages : 220
Inscription : 26 oct. 2016 13:40

Re: [Thomson] Musique et vidéo avec SDSTREAM

Message par tjjq44 »

__sam__ a écrit : 20 janv. 2022 10:3776543210 côté MO devient /3 /7 654 210 côté TO
J'avais sans doute mal compris la signification des "/", je pensais qu'il s'agissais d'une fonction "NOT" à appliquer sur ces 2 bits en particulier et donc qu'un 0 devenait 1 et vice-versa...
Répondre