Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: [80] Je célèbre mes 10 ans de programmation ColecoVision  (Lu 2358 fois)
0 Membres et 1 Invité sur ce fil de discussion.
newcoleco Hors ligne
Jr. Member
**
Messages: 73


Voir le profil WWW
« 09 Février 2009, 09:09:17 »

Grâce à mon nouveau kit de programmation, et beaucoup de patience, j'ai pu faire ce joli rom de 5K en une journée.

Source + ROM : http://newcoleco.dev-fr.org/p4124/2009-02-09-colecovision-10-ans-deja.html

Vidéo : http://www.youtube.com/watch?v=GxraOrl_DPk&fmt=18

Si on regarde un peu le code source, c'est ridiculement simple.
Code
(mainc):
#include <coleco.h>
#include <getput1.h>
 
extern const byte ptc_cake[];&#160; /* image venant d'un fichier externe du nom de cake.c */
 
void nmi(void) {}
 
void main(void)
{
screen_mode_2_bitmap(); /* initialise le mode d'affichage bitmap */
show_picture(ptc_cake); /* decompresse l'image en memoire video */
screen_on(); /* rend visible l'ecran */
enable_nmi(); /* permet les interruptions NMI */
delay(5); /* attends 5 cycles (5/60 pour NTSC et 5/50 pour PAL) */
play_sound(1); /* demarre le son #1, soit la musique sur le canal #1 */
play_sound(2); /* demarre le son #2, soit la musique sur le canal #2 */
delay(800); /* effectue un delai assez long pour entendre entierement la melodie */
wipe_off_up(); /* efface l'ecran bitmap de bas en haut */
}

C'est assez simple, n'est-ce pas?

Le fichier image résulte de la conversion d'une image bitmap en image pour le format ColecoVision avec l'outil BMP2PP par Marcel de Kogel. Mon outil du nom de CV Paint qui a été écrit en VisualBASIC 5 (donc nécessite un DLL pour les utilisateurs de Vista) permet de modifier point par point l'image résultante de la conversion au format Coleco et peut la transformer en codes pour être utilisée dans le projet.

Le fichier musical résulte de deux heures d'encodage à la main de chacune des notes, car il n'y pas encore d'outil pour composer spécifiquement des mélodies pour les projets ColecoVision. Avis à tous, je cherche quelqu'un pour m'aider à compléter le kit avec un composer simple mais efficace basé sur le format Coleco dont je peux vous donner les détails par email sans problème.
« Dernière édition: 09 Février 2009, 21:30:29 par newcoleco » Journalisée

Your vision is our vision! ColecoVision
MasterDje Hors ligne
Diet Coke Addict
Global Moderator
*****
Messages: 3249


Voir le profil WWW
« Réponse #1 : 09 Février 2009, 09:28:50 »

 Shocked
ben dis donc, si avec un exemple comme ça tu motives pas les retro-coders, c'est à ne rien y comprendre...

Ma prochaine aprem de libre, j'tate de la colécovision, promis !! Wink

ps: bon anniv alors !
Journalisée

Alekmaul Hors ligne
Papi codeur et
Administrateur
*****
Messages: 1401


Voir le profil WWW
Out of memory error ...

« Réponse #2 : 09 Février 2009, 09:47:25 »

héhé, très sympa, j'aime bien Azn
Journalisée

Mon site PortableDev : l'émulation sur GBA et sur DS
Cid2Mizard Hors ligne
Super Mega Member
****
Messages: 4064


Voir le profil WWW
Disciple Kukulcanien

« Réponse #3 : 09 Février 2009, 17:38:04 »

Sympa pour le bout de code, je ne peux qu'admirer ta fidélité à la colecovision  Smiley.
Au niveau du son, c'est au quel format ?
Journalisée

birslip Hors ligne
Administrateur
*****
Messages: 552


Voir le profil WWW
« Réponse #4 : 09 Février 2009, 19:00:29 »

Bon anniversaire! C'est vrai que c'est ridiculement simple, moi qui voyait tout ça avec de l'asm partout  Azn
Journalisée

newcoleco Hors ligne
Jr. Member
**
Messages: 73


Voir le profil WWW
« Réponse #5 : 09 Février 2009, 21:06:36 »

Sympa pour le bout de code, je ne peux qu'admirer ta fidélité à la colecovision  Smiley.
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.

Code
(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/newcoleco

Voici 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.
NOTECODE
A23F8
A#23BF
B2389
C3356
C#3327
D32F9
D#32CE
E32A6
F3280
F#325C
G323A
D#321A
A31FC
A#31DF
B31C4
C41AB
C#4193
D417C
D#4167
E4153
F4140
F#412E
G411D
D#410D
A40FE
A#40EF
B40E2
C50D5
C#50C9
D50BE
D#50B3
E50A9
F50A0
F#5097
G508E
D#5086
A507F
A#5077
B5071
C606A
C#6064
D605F
D#6059
E6054
F6050
F#604B
G6047
D#6043
A603F
A#603B
B6038
C7035
C#7032
D702F
D#702C
E702A
F7028
F#7025
G7023
D#7021
Journalisée

Your vision is our vision! ColecoVision
newcoleco Hors ligne
Jr. Member
**
Messages: 73


Voir le profil WWW
« Réponse #6 : 09 Février 2009, 21:27:31 »

Bon anniversaire! C'est vrai que c'est ridiculement simple, moi qui voyait tout ça avec de l'asm partout  Azn
Moi j'offre mes connaissances et ma façon de faire à tous. Si cela ne te suffit pas, alors oui tu coderas probablement en assembleur... tout comme la majorité des experts qui veulent aller au delà des limites.
Journalisée

Your vision is our vision! ColecoVision
Reppa Hors ligne
Administrateur
*****
Messages: 378


Voir le profil WWW
« Réponse #7 : 10 Février 2009, 18:20:23 »

Déjà 10 ans ce que le tampax  Cheesy

Bonne anniversaire alors !!!

Et quand à la remarque de bibi je pense qu'elle était ironique, connaissant le coco, je pense pas qu'il se permettrait ce genre de critique, au contraire Cheesy
Journalisée

newcoleco Hors ligne
Jr. Member
**
Messages: 73


Voir le profil WWW
« Réponse #8 : 11 Février 2009, 00:47:31 »

Et quand à la remarque de bibi je pense qu'elle était ironique, connaissant le coco, je pense pas qu'il se permettrait ce genre de critique, au contraire Cheesy
Je sais qu'elle était ironique. j'avais remarqué son visage  Azn , mais n'empêche qu'il est vrai que présentement le langage C semble être la seule alternative exploitée... et pourtant à l'époque on codait les jeux en Pascal et puis on les passait dans le compilateur et on optimisait le tout par la suite pour sauver le plus d'espace possible car la mémoire coûtait cher.
Journalisée

Your vision is our vision! ColecoVision
Pages: [1]   Haut de page
Imprimer

Aller à: