Sympa pour le bout de code, je ne peux qu'admirer ta fidélité à la colecovision

.
Au niveau du son, c'est au quel format ?
Au lieu de t'expliquer tout le format en détails, je vais prendre une minute pour t'expliquer ce que j'ai dû faire pour la musique dans ce projet.
Si tu ouvres le fichier sounds.c, tu y trouveras la mélodie découpée en deux tableaux mémoires. Chaque note codée est suivi d'un commentaire qui a été automatiquement généré par mon Applet Java "banque de sons" que j'adore, mais qui n'est pas pratique dans sa forme actuelle pour composer.
(soundsc):
0x42,0x1d,0x01,0x10,0x18,0x42, // tone freq 392,5Hz - vol 15 (max) swept down - lengt 16
...
0x70, // rest - lengt 16
...
0x50 // end
Ça se traduit comme ceci :
0x42 (4 = Canal de son #1, 2 = effet de volume seulement)
0x1d (1d = la partie basse de la période)
0x01 (0 = zéro atténuation donc volume maximum, 1 = la partie haute de la période)
0x10 (10 = durée de 16 unités)
0x18 (1 = taille des marches, ici +1 d'atténuation par marche, 8 = nombre de marches)
0x42 (4 = longueur ou durée des marches, 2 = longueur de la première marche)
...
0x70 (40 = canal de son #1, +20 = reste sans bruit, +10 = pendant 16 unités de temps (de 1 à maximum 1F pour les canaux 1 et 2, mais maximum 1E pour le canal 3))
...
0x50 (40 = canal de son #1, +10 = fin des données, (+8 c'est pour répéter automatiquement tout le son))
Période = 11D = G5, Atténuation 0 = volume max pendant 2 unités de temps, puis atténuation de 1 pendant 4 unités de temps,... jusqu'à atteindre un total de 16 unités de temps.
...
Silence pendant 16 unités de temps.
...
Fin des données sans répétition.
Il y a aussi les notes sans effet de volume. Pour ce faire, au lieu du 2 pour dire effet de volume on y place 0 pour aucun effet, et on ne donne aucun code concernant l'effet d'atténuation du volume car il n'y en a pas.
Il y a encore plein d'autres choses possible dont la variation de la fréquence, ainsi que la variation de la fréquence et du volume en même temps, mais c'est un peu inutile pour composer une musique comme celle-ci.
00 = Canal de bruit (ne fonctionne pas comme un canal de son, alors pas touche pour l'instant)
40 = Canal de son #1, note simple
80 = Canal de son #2, note simple
C0 = Canal de son #3, note simple
42 = Canal de son #1, note avec effet de volume
82 = Canal de son #2, note avec effet de volume
C2 = Canal de son #3, note avec effet de volume
50 = FIN (Canal de son #1)
90 = FIN (Canal de son #2)
D0 = FIN (Canal de son #3)
58 = REPETE (Canal de son #1)
98 = REPETE (Canal de son #2)
D8 = REPETE (Canal de son #3)
60 = SILENCE, Canal de son #1, de 61 à 7F pour de 1 à 31.
A0 = SILENCE, Canal de son #2, de A1 à BF pour de 1 à 31.
E0 = SILENCE, Canal de son #3, de E1 à FE pour de 1 à 30.
FF = HALTE (utilisé par programmation pour arrêter le son en cours, donc à ne pas utiliser dans l'encodage des sons et mélodies)
De plus amples détails disponible dans "ColecoVision Coding Guide" sur mon site web, section documentation :
http://www.geocities.com/newcolecoVoici la table de correspondance des notes en code hex de période pour le chip sonore dans la console Coleco. Ce tableau n'est pas nouveau en soit car il n'y a pas que Coleco qui utilise ce chip sonore.
| NOTE | CODE |
| A2 | 3F8 |
| A#2 | 3BF |
| B2 | 389 |
| C3 | 356 |
| C#3 | 327 |
| D3 | 2F9 |
| D#3 | 2CE |
| E3 | 2A6 |
| F3 | 280 |
| F#3 | 25C |
| G3 | 23A |
| D#3 | 21A |
| A3 | 1FC |
| A#3 | 1DF |
| B3 | 1C4 |
| C4 | 1AB |
| C#4 | 193 |
| D4 | 17C |
| D#4 | 167 |
| E4 | 153 |
| F4 | 140 |
| F#4 | 12E |
| G4 | 11D |
| D#4 | 10D |
| A4 | 0FE |
| A#4 | 0EF |
| B4 | 0E2 |
| C5 | 0D5 |
| C#5 | 0C9 |
| D5 | 0BE |
| D#5 | 0B3 |
| E5 | 0A9 |
| F5 | 0A0 |
| F#5 | 097 |
| G5 | 08E |
| D#5 | 086 |
| A5 | 07F |
| A#5 | 077 |
| B5 | 071 |
| C6 | 06A |
| C#6 | 064 |
| D6 | 05F |
| D#6 | 059 |
| E6 | 054 |
| F6 | 050 |
| F#6 | 04B |
| G6 | 047 |
| D#6 | 043 |
| A6 | 03F |
| A#6 | 03B |
| B6 | 038 |
| C7 | 035 |
| C#7 | 032 |
| D7 | 02F |
| D#7 | 02C |
| E7 | 02A |
| F7 | 028 |
| F#7 | 025 |
| G7 | 023 |
| D#7 | 021 |