Electronique > Réalisations > Pong 001 (with PIC)

Dernière mise à jour : 25/05/2014

Présentation

Enfant, j'adorais jouer à ce jeu qu'on branchait sur la télé et qui permettait de se mesurer à la machine ou à un autre joueur humain. Des bâtons plus ou moins longs en guise de raquettes, un petit carré en guise de balle... il n'en fallait pas plus pour s'éclater.

jeux_pong_001_screen_001a

Je me souviens même, dans les années 80, avoir modifié le jeu de mes parents pour transformer l'affichage monochrome en affichage couleur. J'avais en effet remarqué, grâce à un schéma publié dans une revue d'électronique, que les infos raquettes, balle et score étaient délivrées de façon séparées et mélangées avec des diodes avant d'aboutir vers la sortie vidéo. J'avais donc séparé les trois signaux pour attaquer les entrées RVB d'une prise péritel. Si j'ai conservé le schéma, j'ai malheureusement perdu le circuit intégré spécialisé (SAAxxxx). Plus de trente ans plus tard, à une époque où les PIC sont pour moi un peu moins mystérieux, je me suis mis en tête de construire un clone de ce (célèbre ?) jeu, en partant de zéro. Possédant quelques connaissances en électronique et en vidéo, je me suis dit que peut-être je n'aurais pas à tatonner trop longtemps...

Un petit PIC est donc suffisant ?

A en juger ce qu'on trouve sur Internet, il semblerait que oui. Il existe différentes versions de ce jeu, à base de 16F84 (PIC-Pong) ou 12F675 (uPong), PIC qui ne sont pas à proprement parler des foudres de guerre. Alors... Mais si on commençait par le commencement ? Qu'est-ce que le programme du PIC doit gérer au juste ? Eh bien rien de moins que l'élaboration d'un signal vidéo (qui ira vers l'entrée vidéo du téléviseur), la lecture de données analogiques (qui proviennent des potentiomètres qui font office de manettes) et accessoirement l'élaboration de signaux sonores. Produire des bips sonores et utiliser le CAN d'un 12F675, je sais faire. Mais élaborer un signal vidéo demande tout de même quelques ressources. Est-ce dans mes cordes ? Voyons cela de plus près. Un signal vidéo analogique est composé d'un certain nombre de lignes (625 chez nous, en France), certaines sont visibles et d'autres sont cachées. Chaque ligne vidéo dure 64 us, mais la partie visible à l'écran (partie utile) ne dure que 52 us (12 us sont réservées pour le top de synchro ligne et le palier de noir qui lui succède). Si on doit "bêtement compter" chaque point de chaque ligne vidéo en terme d'instructions processeur, on est assez mal barré. Car gérer pour chaque ligne vidéo la présence des raquettes, de la balle et des caractères (affichage du score) demande évidement quelques ressources. Sans compter le temps pris pour les acquisitions analogiques et l'élaboration des sons. Tout cela impose une optimisation maximale des éléments à afficher, pour économiser au mieux le précieux temps processeur.

SAA1043 ?
J'ai dans mes tiroirs quelques SAA1043 en version CMS qui me font de l'oeil. Je crois qu'ils aimeraient bien s'essayer à ce petit jeu... Le SAA1043 est un circuit générateur de synchronisation vidéo désormais obsolète, qui pouvait servir de base solide pour des mires de test TV et des jeux vidéo, et qui pourrait effectivement trouver une petite place à côté d'un PIC en vue de soulager son travail. C'est une voie que j'ai un peu explorée je dois l'avouer, mais le fait que ce circuit soit de type miniature me rebute un peu... c'est à peine croyable !

Essais avec ce qui existe déjà ?

Je dispose d'un programmateur de PIC et les 12F675 et 16F84 me sont familiers. Alors pourquoi ne pas essayer ce que les autres proposent, avant de me lancer moi-même dans le développement de mon propre jeu ? Exemples pratiques :
- PIC Pong de Rickard Gunee
- uPong (microPong) de Ronald Dekker
- VCR Pong (sans code PIC ni descriptif)
Vous avez raison, c'est plus sage. J'ai donc décidé d'essayer la version à base de 16F675 (uPong) qui fait usage de potentiomètres pour la position des raquettes, plutôt que la version à base de 16F84 (PIC-Pong) qui elle fait appel à des joysticks mécaniques que je ne possède pas.
Remarque : je dois vous avouer une chose : si j'ai pensé développer ma propre version de ce jeu, c'est parce que mon fils Timothée m'a soumis une idée fort intéressante et inédite (pour ce genre de jeu), et ce serait super de pouvoir la mettre en pratique. Je n'en dis pas plus pour le moment ! Donc pour l'instant, copie conforme du uPong de Ronald Dekker, auquel j'ai ajouté un régulateur de tension fixe de +5 V à faible tension de déchet (LM340-7805).

electronique_jeux_pong_001

Réalisé sur plaque à pastilles :

jeux_pong_001_proto_001a jeux_pong_001_proto_001b

Les manettes (potentiomètres) ne sont pas encore rangées dans leur boîtier, à faire avant l'arrivée des enfants...

jeux_pong_001_proto_001c jeux_pong_001_proto_001d jeux_pong_001_proto_001e jeux_pong_001_proto_001f

Et ça fonctionne ! Bon, on voit de temps en temps un ou deux petits parasites à l'écran (ce qui ne me surprend pas trop vu le câblage adopté) et le son est faible, mais j'ai trouvé ça super sympa de rejouer contre ce jeu auquel je n'avais pas touché depuis plus de 30 ans ! L'utilisation de l'interrupteur SW3 n'est pas très intuitive car ce commutateur sert en même temps à sélectionner le nombre de joueurs (1 ou 2) et la vitesse (lent ou rapide). Mais on s'habitue vite. Bravo à son auteur Ronald Dekker, je suis impressionné de voir un truc aussi "simple" fonctionner du premier coup.
Pour la mise en boîte, j'ai utilisé deux petits coffrets Teko pour les manettes, et un plus gros de la même marque pour le reste. Il ne me reste qu'à intégrer l'alimentation secteur et les connecteurs chassis pour les sorties audio/vidéo.

jeux_pong_001_proto_001g jeux_pong_001_proto_001h jeux_pong_001_proto_001j jeux_pong_001_proto_001k

Bon, eh bien il n'y a plus qu'à attaquer ma version...

Historique

25/05/2014
- Ajout photos prototype en boîte (presque fini, restent des connecteurs et l'alim secteur à ajouter au boîtier principal).
18/05/2014
- Première mise à disposition. Le premier proto réalisé est basé sur le schéma et le logiciel du uPong (microPong) de Ronald Dekker.