Un carte Flash pour mon MSX²

Certains jeux MSX sont hors de prix, il est alors très intéressant de disposer d’une carte Flash pour pouvoir y jouer sans perdre un rein… ça tombe bien, j’ai tout le matériel nécessaire, il ne me reste qu’à suivre ce tutoriel : http://www.msxvillage.fr/articles/articles.php?id=51&cat=2

Et hop ! J’en ai profité pour faire une version 2x512Ko ! \o/  Il ne me reste qu’à mettre un beau switch et une belle étiquette pour le boitier ! MegaFlashSCC

Une manette pour mon nouveau MSX²

Et hop, transformation rapide d’un pad de Nintendo NES en manette MSX (source : MSX Village – Convertir un PAD Nes ):
– recâblage d’une DB9 piquée sur une manette de Megadrive
–  suppression des boutons select et start (en limant le plastique sinon c’est moche)
– ajout d’une petite LED
– création et impression d’un fond :

PAD_MSX

 

Bon, ce n’est pas le plus beau PAD du monde mais il a le mérite de bien fonctionner :)

« Do The Same! » for Atari Lynx

Quoi quoi quoi ??? Une version Lynx de Do The Same! ????
Mais pourquoi ?

En fait pourquoi pas, c’est un bon sujet pour commencer à développer sur Lynx… ^^

Les specs (from Wiki) :

  • processeur principal : « Mikey » contenant un 65C02 8 bits jusqu’à 4 MHz
  • coprocesseur : « Suzy » – 16 bit CMOS cadencé à 16 MHz
  • capacité graphiques : 16 couleurs sur une palette de 4096, résolution standard de 160 × 102 pixels, résolution artificielle de 480 × 102 pixels
  • processeur sonore : 4 canaux, 8-bit DAC
  • mémoire principale (RAM) : 64 kio
  • mémoire de masse : Cartouches – 128 ou 256 kio

J’ai déjà fait une pré-version en utilisant le kit BLL (en gros, tout mon jeu loge et tourne en Ram) mais je me retrouve confronté (comme beaucoup de codeur sur Lynx) au problème de gestion de la cartouche et au chargement des différentes parties du jeu (souvenez-vous, la Lynx, c’est 64Ko de Ram… double buffer vidéo inclus…).

Une petite image de la chose (il faudra que je pense à faire une vidéo, ça rend pas trop mal avec toutes les animations …) :

Un level

En attendant, je fais quelques tests avec une nouvelle version du kit qui pourrait me permettre de faire du multipart loading en toute tranquillité (du coup, je pourrais ajouter menu, credits, help screen …)

 

 

Interruptions et sound system

Yesss !! J’ai mis en place mon lecteur de carte SD et ma sortie audio (non-filtrée pour le moment). Je suis assez content car cette partie a été entièrement faite à partir de composants de récupération (sur carte son et autres PCBs qui traînent … au cas ou … dans mon antre).

Premiers tests sur la lecture du contenu des fichiers sur la carte SD : ça fonctionne nickel et du premier coup ! C’te classe !

Second tests : lecture d’un son stocké sur la carte SD : ça fonctionne nickel aussi (bon, le son n’est pas filtré du tout et on peut entendre les « battements » de l’arduino… 😀 ).

Intégration de l’ensemble au code d’origine et là, PAF ! Tout fonctionne mais le son est très … llllllllleeeeeeeennnnnnnnntttttttt ! :( Diantre, mais d’ou vient le problème ???

La faute à la gestion des lampes : je génère une interruption logiciel en utilisant le timer 2 (Nota : utiliser le kit 1.5 pour pouvoir utiliser les ISR en overflow du timer 2 !!!) . Cette interruption prend pas mal de temps(gère les switchs et les 96 lampes) et est exécutée assez souvent pour ne pas subir le clignotement des lampes (25 fois par seconde minimum). Les sons sont aussi générés via interruption (à 32 ou 64 KHz), du coup je n’ai plus assez de bus pour géré les 2 systèmes en même temp … il me faudrait un player 4 ou 8KHz (vu les sons de l’époque) pour que ça tienne je pense ….

Je pense donc ajouter un second arduino (par forcément un Mega du coup), connecté au premier, uniquement pour gérer les sons… :)

Une petite photo de la chose (ajout du lecteur SD et de la sortie audio) :

SD card et audio

 

 

Derniers switchs câblés

Voilà, j’ai terminé le câblage de l’ensemble des switchs (il me manquait la détection des monnayeurs, des différents Tilt et du bouton Crédit) :

Face Avant C’est beau ..hein !!?

Face Arrière  Bon, vu de derrière, c’est moins sympa…

Donc voilà, tous les switchs, les lampes et les solénoïdes sont câblés et gérés !! \o/

La suite :

–  le son (j’ai déjà soudé un connecteur sur un adaptateur SD/microSD en prévision …).

– les 6 afficheurs 7 segments…bon, c’est du 170-190V, va falloir faire attention !!

J’aime pas la rosée

Quoi de plus pénible que de disposer d’un beau ciel étoilé, de sortir le matos et de se retrouver trempé après 30 minutes d’observation…

Et hop, ze solution (en tout cas je l’espère), un système double :

– pare-buée pour le miroir secondaire

– système chauffant (+ ventilateur) pour le reste :

ça va chauffer !!

 

4 interrupteurs pour contrôler :

– le chauffage du porte-oculaire

– les chauffage du chercheur

– le chauffage du Telrad

– le ventilateur au dos du miroir primaire

Alimentation 12V par transfo à la maison et si nécessaire sur batterie (le connecteur d’alimentation est situé dans le pieds du Dobson).

Pour le ventilateur, j’ai fait de la récupération sur un boitier de pc et j’ai fixé le tout sur une plaque de plexi (j’ai percé le nécessaire pour pouvoir accéder aux vis de réglage du primaire) :

Ventilateur

 

Le pare-buée a été confectionné à partir d’un bout de tapis Décathlon (bon, j’avais que cette couleur à la maison) et un bout de sangle de sacoche de portable :

Pare-buée

Les bandes chauffantes ont été fabriquées à partir de fil résistif pris en sandwich dans du scotch PVC puis  tenu en place par des petites sangles confectionnées par ma femme :

Bande chauffante

 

Pour le chauffage du Telrad, j’ai utilisé une résistance de puissance collée sur une petite plaque de plexi (ça fonctionne un peu trop bien, ma résistance chauffe beaucoup trop, je vais devoir réduire la tension de celle-ci) :

Chauffage Telrad

Il me reste quelques ajustements à faire pour que ce soit terminé (résistance à changer, le fil rouge et noir est moche, et une petite sangle pour fixer le tout). J’espère ensuite que ça fonctionnera comme prévu…

 

Bah voilà !!!

Hop ! J’ai collé la gestion des lampes (pas mal optimisée… ) ainsi que la détection des switchs dans une interruption contrôlée (j’ai trop de bouncing, il faut que je corrige ça) par le timer1 de l’Arduino. ça fonctionne mais je ne suis pas certain d’avoir tout compris, je vais faire un autre timer histoire d’être certain d’avoir capté la chose…

En tout cas, si je ne me trompe pas, mon interruption doit être exécutée toutes les 40 millisecondes, parfait pour la persistance des lampes !

Cette partie fonctionne indépendamment, j’ai donc remis le minimum syndical en terme de gameplay …(affichage de certaines cibles, remontée des cibles, remise en jeu, …)

Par contre, quel …, j’ai oublié de câbler les switchs de la « boite » : bouton crédit, les pièces, les tilts, …

Le Pacman a la particularité de disposer d’une grille de 5×5 lampes (par 2, en jaune et rouge) en plein milieu, je me suis dit qu’il serait intéressant d’y afficher des lettres…

J’ai récupéré une police minimaliste en 5×5 que j’ai retranscris en C. J’ai, par la même occasion, utilisé le module pgmspace qui me permet de stocker ce tableau en ROM plutôt qu’en RAM (8Ko sur le Mega2560). c’est assez génial à utiliser (et puis après avoir codé sur Jaguar, ça se comprend très facilement  😀 ).

Ma routine ne fonctionne que dans le jaune mais ça pourrait être intéressant d’en faire une capable de contrôler en même temps la matrice jaune et la matrice rouge, ça nous fait du 4 couleurs : noir, rouge, jaune et orange … tiens un mode graphique 2 bit en 5×5 !

Bon, mon câblage n’est pas optimal, du coup j’ai la police mais inversée…j’ai plus qu’à faire un reverse-nibble pour corriger ça (ou alors inverser 4 fils…et revoir un peu le code…) :

K...inversé !

J’ai aussi repéré des faux contacts au niveaux de connecteurs de la carte A5 (la carte d’entrée du circuit des lampes) qu’il va falloir démonter et refaire…

ça commence à être pas mal du tout !!! \o/