Développer sur Méga Drive : Part 1

Ceux qui me connaissent savent que j’apprécie les jeux vidéo, surtout les « vieux » jeux, et plus précisément les jeux et les consoles de la marque SEGA et je suis tombé il y a peu sur un SDK (Software Development Kit) permettant de développer facilement (en C) des applications pour la Mega Drive.

Je ne pouvais donc pas passer à côté sans jouer avec et j’en profite pour écrire quelques articles sur le sujet.

Présentation

La Mega Drive (Genesis aux US), est une console 16bits de SEGA sortie fin 1988 au japon, pour connaître son histoire je vous invite à lire sa page sur wikipedia.

Elle possède un CPU principal Motorola 68000 (7.6Mhz) et un coprocesseur Z80 (3.58Mhz)  très souvent utilisé pour gérer la partie son et qui permet aussi une rétrocompatibilité totale avec les jeux Master System le tout agrémenté de 64Ko de RAM (dont 32 accessibles par le Z80).

Au niveau vidéo, le VDP (Video Display Processor) permet d’afficher avec des résolutions de 320×224 et 256×224 (ou 320×240 et 256×240 pour les versions PAL), nous reviendrons en détail sur la partie vidéo plus tard.

Prérequis

  • Le SDK, récupérer les sources sur ce dépot git et les compiler.
  • Un éditeur de texte, Vim est parfait pour ça.
  • Gens KMod qui est une version de l’émulateur modifié avec pas mal d’options de debug (fonctionne très bien sous linux avec Wine).

On se lance dans le premier programme

Comme tout le monde nous allons faire un petit « Hello Wolrd » que nous enrichirons au fur et à mesure de notre apprentissage.

#include <genesis.h>

int main()
 {

       VDP_drawText("GENESIS HELLO !", 1, 1);

       while(1)
        {
                VDP_waitVSync();
        }
        return (0);
 }

Petite analyse du code :

  • L’inclusion du début permet de charger les entêtes des librairies fournies par le SDK.
  • VDP_drawText sert a afficher du texte suivant les coordonnées X et Y données ensuite.
  • Le while sert juste a avoir une boucle qui tourne dans laquelle nous pouvons faire plusieurs choses (lire les informations du joypad, mettre à jour des variable, modifier l’affichage …) et surtout on y met dedans le VDP_waitVSync qui permet de caler la boucle sur le rafraîchissement de l’affichage de la console 50Hz en PAL et 60Hz en NTSC.

Plus qu’a compiler notre programme avec le Makefile fournis dans le SDK pour simplifier les choses :

make -f /opt/gendev/sgdk/mkfiles/makefile.gen 

La compilation nous crée deux répertoires à la racine du projet. Le premier est nommé src dans lequel on retrouve deux fichiers :

rom_head.c qui contient les métadonnées concernant la rom (Copyright, Nom, Zone…).

sega.s qui lui comprends le code nécessaire au boot du programme sur la console.

Dans le dossier out nous trouvons les fichiers objets (.o) et les binaires résultants de la compilation. Celui qui nous intéresse est le fichier rom.bin qui est la rom de notre programme.

Il ne reste plus qu’à l’ouvrir dans un émulateur pour voir le résultat.

Dans la prochaines partie nous verrons comment récupérer les information d’un joypad et comment débugger simplement ses programmes.

 

Un peu de détente sous hypnose …

Aujourd’hui je vais vous parler d’un masque connecté d’hypnose qui se nomme Hypnos et qui est développé par une société française appelée DreaminzZz. Ils nous promettent donc de faire des séance d’hypnose à domicile…

Pour commencer on déballe.

 

boite

 

La boite est très simple avec sur le dessus un dessin du masque et un petit liseré bleu blanc rouge pour nous rappeler que c’est Français. Sur le dos nous avons un petit descriptif et quelques informations techniques et légales.

 

boitearr

 

A l’intérieur une pochette pour transporter son masque, le masque, un « mini » manuel et un câble de charge USB.

 

 

Petit tour du propriétaire.

Sur le dessus du masque on remarque une fermeture éclair, derrière se cache le « cœur » d’hypnos (Un PIC 32, un chipset bluetooth LE PIC, quelques capteurs, une batterie de 320mah, 7 leds RGB et un Vibreur). Le connecteur de charge n’est pas un standard, j’aurai apprécié un USB-C mais ils ont opté pour un connecteur aimanté… certains verront cela comme un point fort d’autre un point faible, chacun son avis.

Il y a dans le masque trois boutons qui sont indiqués discrètement sur le décor à l’avant, marche/arrêt et choix du mode autonome.

Sur la partie arrière nous distinguons juste trois leds devant chaque oeil et le bandeau permettant de maintenir le masque en place avec un système anti dérapant.

Concrètement, c’est quoi ?                                                                                                                    

 L’application contient un store avec différentes catégories (relaxation, douleur, détente,…) qui permettent à l’utilisateur de choisir son type de séance.

 

 

Pour mon premier essai j’ai été attiré par un voyage spatial (j’avais déjà écouté le teaser sur PC,et j’avoue j’étais bien sceptique sur les possible sensations promises…). Je m’allonge donc sur le canapé, enfile mon masque et me laisse guider par l’histoire de Guillaume Gautier qui explique comment se détendre et comment rythmer sa respiration. Il se présente comme coéquipier de cette mission Apollo Z qui va nous emmener sur la lune… Et là je l’avoue, c’est la claque. Le son, la voix, les effet lumineux et les vibrations m’ont littéralement emporté.

 

 

Depuis ce premier test j’ai fait plusieurs séances de différentes natures et j’accroche plus ou moins suivant les sujets, mais dans l’ensemble c’est plutôt concluant; je l’ai même utilisé pour faire passer un mal de tête avec succès. Voyant les effets positif qu’il avait sur moi, ma femme l’a testé et je pense qu’il va bientôt falloir en acheter un second …

Avantages :

  • Confortable
  • Joli
  • Facile à utiliser
  • Support ultra réactif

Inconvénients :

  • Uniquement un câble USB pour la charge, pas de transfo fourni
  • Store encore léger mais le produit est tout nouveau il devrait donc se remplir rapidement

Scan to pancakes

Le chandeleur est passée mais il est toujours temps de manger quelques crêpes. Pour ce dernier « bricolage » j’ai essayé de faire avec un maximum de récupération et un minimum d’investissement.

Quoi que c’est ?

Tout simplement une imprimante à pancakes. Le principe est simple, on se déplace sur 2 axes et on dépose de la pâte sur une plaque de cuisson.

 

Liste du matériel nécessaire

Que j’ai acheté :

  • Une plancha basique 20€
  • Une pompe avec tube 20€
  • Deux bouteilles à sauce 4€
  • Un shield CNC 15€

Que j’avais déjà :

  • Un relais
  • Une alimentation 12V
  • Deux vieux scanner
  • Des tasseaux de bois
  • Un Arduino
  • De la quincaillerie

Commençons le montage

Les vieux scanners sont parfaits pour ce genre de bricole car ils embarquent des moteurs pas à pas et sont montés avec des axes rectifiés. Les plus récent sont tout en plastique et donc ne peuvent pas faire l’affaire. Pour l’axe Y, j’ai ouvert le premier scanner et je l’ai posé tel quel. J’ai fixé un joli cadre fait avec les tasseaux de bois sur le support de la lampe du scanner. Puis j’ai fixé en haut de celui-ci l’autre bas de scanner découpé sur le sens de la longueur. A ce niveau là, les deux axes sont en place, il ne reste plus qu’à placer le système de dépôt de pâte.

  

J’ai pensé à plusieurs solutions :

La seringue : solution très précise mais qui nécessite un montage plus compliqué et sa faible contenance rendra plus complexe l’utilisation de la machine et le remplissage.

Une pompe : elle servirait à pomper le liquide avec un tuyaux et le faire sortir dans un autre tuyaux à l’axe opposé. Cela paraît une bonne idée mais les quelques tests effectués ont démontré que de la pâte coule toujours un peu même quand on ne pompe pas.

La pompe à vide : l’idée est d’avoir un contenant dans lequel on met la pâte et l’on empêche la pâte de tomber en aspirant. Quand la pâte doit tomber, on relâche la pression et la gravité fait son travail.

La dernière solution est donc la plus efficace, même si je n’utilise pas vraiment une pompe à vide cela fonctionne bien. Il reste cependant deux défauts, en aspirant la pâte se sèche dans la buse il faut parfois la déboucher et surtout il faut être un grand maître dans l’art du pancacke (merci Philippe) pour réussir une pâte assez fluide mais pas trop:)

impression réalisée par le Tiers-Lieu Fontgrande-Carmaux pour le fablab festival 2017

Et pour le soft ?

Notre montage étant terminé il a fallu penser au coté logiciel. Si l’on regarde de plus près, la machine ressemble beaucoup à une découpe laser ou à un plotter. J’ai donc regardé ce qu’il se fait de ce coté et je me suis orienté vers le firmware GRBL avec un plugin GCODE pour Insckape.

Et voila… je m’étais fixé pour objectif de finir ce projet pour le Festival d’Art Numérique organisé par les étudiants de l’IUT MMI de castres et je l’ai finie à temps. Il ne me reste plus qu’a trouver un nouveau projet pour la prochaine édition à laquelle je compte bien participer 😉

 

la machine au fablab festival 2017

la machine au fablab festival 2017

On en parle ici : http://www.ladepeche.fr/article/2017/05/14/2574356-une-imprimante-3d-pour-fabriquer-des-gateaux.html

 

UNOJOY, l’ami des Arduino et des arcades ?

J’avais depuis quelques temps une borne Sega Rally qui trainait dans un coin (oui le gros truc avec les sièges et volant). Après de multiples tentatives de réparation j’ai opté pour une solution simple mais efficace, vider le tout et mettre un PC avec des émulateurs et des jeux.

sega-rally-twin-sit-down-racing-arcade-machine

Avantages :

  • Alléger le tout
  • Pouvoir jouer à plein de jeux

Inconvénients :

  • Perte du retour de force
  • Beaucoup de travail
  • Se faire huer par les puristes

J’ai donc commencé par tout désosser, remplacé les écrans par des écrans LCD, refait les parties bois, tout repeint … Vient alors le moment de remonter la borne et de tout câbler. Pendant toutes ces étapes une question restait alors sans réponse… que faire pour le volant. J’ai pensé utiliser un volant du marché mais souhaitant conserver au maximum le design de la borne cela n’allait pas, et un jour je suis tombé sur UNOJOY.

UNOJOY permet de transformer son Arduino en Joystick en utilisant les entrées analogiques et numériques, ceci est tout simplement génial.

UNOJOY fonctionne sur Arduino Uno, Mega et Leonardo; en gros ça reprogramme l’atmega 8U2 ou 16U2 (suivant la carte utilisée) pour faire reconnaître l’Arduino comme un joystick par le PC (mais apparement aussi la ps3).

windows

Avant cette étape il faut bien sûr câbler le tout et vérifier que ça fonctionne, pour cela un petit outil Processing permet de voir en live si les contrôles fonctionnent bien.

processing

En cas de contrôles un peu plus complexe (comme la boîte de vitesse sur ma borne) il est possible d’adapter le code (UnoJoyArduinoSample.ino) afin de gérer ces contrôles.

vitesses

Voici le petit hack pour utiliser mon levier à 4 vitesses avec trois Switchs qui sont connectés sur les pins numérique 2, 3 et 4 :

controllerData.triangleOn = LOW;

controllerData.circleOn = LOW;

controllerData.squareOn = LOW;

controllerData.crossOn = LOW;

  

//  operator to invert the readings from the pins

if (!digitalRead(2)&& digitalRead(3))

  controllerData.triangleOn=HIGH;

else if (!digitalRead(3) && !digitalRead(4))

  controllerData.circleOn=HIGH;

else if (!digitalRead(3))

  controllerData.squareOn=HIGH;

else if (!digitalRead(4))

   controllerData.crossOn=HIGH;  

On envoie ensuite le code sur l’Arduino, puis on lance le petit bat qui le transforme en périphérique de jeux et le tour est joué. Il est bien sûr possible de transformer à nouveau sa carte en Arduino avec un autre bat.

Je vous ferai découvrir très prochainement une réalisation utilisant UnoJoy, « stay tuned » comme on dit !

Le code de UnoJoy : https://github.com/AlanChatham/UnoJoy

Développez sur Galileo avec Eclipse

 

Il y a quelque temps je vous avais parlé de la carte Intel Galileo que nous avions utilisé pour s’amuser avec le coté « Arduino ». Ce coup-ci je vous propose de voir rapidement comment installer son environnement de développement C/C++ dédié.

  •  Installation de l’OS sur la carte SD

Pour pouvoir utiliser pleinement la carte Galileo, il faut installer sur une carte µSD un Linux plus complet que celui embarqué dans la carte. Il faut donc se procurer une carte d’au moins 2 Go et télécharger l’image du système ici : https://software.intel.com/en-us/iot/downloads

Pour déployer l’image :

  1. mettre la SD dans un pc linux ou Mac OSX
  2. décompresser le fichier : bunzip2 -c iot-devkit-latest-mmcblkp0.direct.bz2
  3. si elle se monte automatiquement, la démonter : umount /mnt/machinbidule
  4. copier l’image (remplacer diskX par le device correspondant à votre carte SD) :

dd of=iot-devkit-latest-mmcblkp0.direct of=/dev/diskX bs=8m

Et voila, la carte est prête a être installée dans la Galileo.

  • Installation du IOTDK IDE

Le IOTDK IDE est un Eclipse packagé avec tout ce qu’il faut pour utiliser à fond sa Galileo en C ou C++. L’installation est ultra simple, on télécharge https://software.intel.com/en-us/iot/downloads, on dézippe et on lance la commande : devkit.lancher … zou trop facile:)

  • Compilation et envoie d’un projet d’Eclipse à la carte Galileo.

Dans le panneau de gauche « Project Explorer » on ouvre le projet 4 (ccp onboard led blink), le code est déjà tout fait pour faire clignoter sa LED. On clique alors sur l’icône représentée par un marteau et ça compile le projet pour nous.

Ensuite pour l’envoyer sur la carte il faut paramétrer Eclipse, sur la droite de l’écran on clique sur « Remote System Eplorer »

image00

Puis sur la gauche, clic droit sur « Galileo » et « Properties », on entre alors les bonnes infos pour se connecter à la carte (ip, nom, …)

image02

Maintenant on envoie !!! On clique sur la flèche à droite de l’icône Run :

image01

Puis on sélectionne le projet en version Debug et ça envoie et exécute directement  le binaire sur la carte.

Amusez vous bien.

Unboxing et Opening du Tile

The Tile est un projet Kickstarter qui avait récolté quelques millions de dollars.

Le « Tile » est un petit objet (37x37x5mm) qui permet de retrouver un objet perdu dans sa maison ou “ailleurs dans le monde”. Prix 25$.

Unboxing

1

Une boite toute simple en carton et mousse, ça rend quand même pas mal.

2

On peut voir un trou permettant de le fixer à son trousseau de clefs mais il est aussi fourni avec un adhésif double-face  pour pouvoir le coller n’importe ou.

Comment que ça marche ???

Rien de sorcier; c’est un périphérique Bluetooth que l’on appaire avec son smartphone et qui via une application dédiée permet de faire sonner le “Tile” en cas de perte.

La promesse de pouvoir retrouvé son objet “partout dans le monde” réside sur le fait que en cas de perte votre “Tile” vous pourrez le retrouver si vous le déclarez perdu dans l’application et qu’une personne possédant l’application sur son smartphone passe assez près de l’objet pour en faire remonter un position très approximative sur une carte.

Et dedans, quoi qu’il y a ?

Ben oui je suis curieux et ça n’est pas nouveau, on sort un petit tournevis et hop, ouverture de la bête.

IMG_20150204_141321

Nous voyons ici un belle pile (annoncée avec une durée de vie de 1 an), un petit bouton (le gros rond doré à gauche) qui sert à appairer le “Tile” avec un périphérique Android ou iOS, tout plein de petits composants annexes et le plus important (celui caché sous l’étiquette avec une QRcode) le chipset Bluetooth.


IMG_20150204_141428

Au dos rien de spécial, juste les connecteurs qui dépassent pour faire contact avec le piezo qui fera de la musique quand vous perdez votre bidule.

Reparlons du chipset BT, c’est un nRF51822 de chez Nodric Semiconductor. C’est un chipset intéressant pour les raisons suivantes :

  • Supporte le BT 4.1
  • Consomme très peu (9.7mA en TX et 8 en RX)
  • L’est petit (6x6mm)
  • Embarque un proc ARM Cortex M0 avec 128K de falsh et 16K de ram
  • 2.2€ pièce

Soit un très bon rapport qualité, utilité, performance, prix.

Et voilà la fin de notre aventure au cœur du « Tile ».

Hmmmm de la fraise !!!

Voila un projet qui traîne depuis très longtemps dans ma tête … me fabriquer une fraiseuse numérique. Il y a quelques temps le papa Noël m’a apporté un Dremel; élément de base pour venir à bout de ce projet (merci papa Noël !!!). Cependant c’est un projet assez onéreux mais comme j’avais des restes d’imprimante 3D qui dormaient dans la cave, cela ne m’a pas coûté grand chose.

IMG_20150107_231803

le plateau

 

J’ai été chez mon ami le Magicien Arthur (Leroy Merlin pour les novices) pour me fournir en bois (ils vendent des chutes à 1€) et en tige filetées, boulons, …

IMG_20150114_172208

ça prend forme

 

 

Pour l’électronique, les douilles et les guides j’ai récupéré tout ça de l’imprimante (merci les chats de l’avoir cassée). Et j’ai pas mal designer de pièces que j’ai imprimé en 3D pour adapter le tout (level up solidworks et freecad yeahhhh).

IMG_20150126_153243

c’est booooooooooooo

 

Donc j’ai assemblé tout ça, sans vraiment suivre de plan mais en m’inspirant de différents modèles vu sur internet et surtout au feeling. Le résultat n’est pas trop mal au final et en plus le pire c’est que ça a l’air de fonctionner ….

Si vous avez un casque pensez à baisser le son …

Smart speaking with tooth

Bien le bonjour …. longtemps que j’ai pas mis les pieds ici moi … le temps passe pourtant on à jamais le temps ….. enfin quand j’ai quelque chose à partager je reviens pas ici.

J’ai du faire quelques tests afin de faire communiquer un smartphone avec un arduino le tout sans fil et pour pas cher du tout.

J’ai pensé à trois solutions :

  1. Wifi : Cher et consommateur on oublie
  2. NFC : Peu consommateur et moyen cher, mais le smartphone en question ne possédait pas de NFC…
  3. Bluetooth : C’était la solution à mon problème, peu gourmand en énergie, pas cher et en plus simple d’utilisation.

Matériel nécessaire :

  • Un arduino
  • Un module bluetooth JY-MCU (http://goo.gl/u3ErZT)
  • Deux résistances pour faire un pont diviseur pour le RX, genre 10K et 20K ou 1K et 2.2K
  • des fils

Câblage :

BluetoothHookupWeb

On voit bien sur l’image le pont diviseur et que le serial du module Bluetooth est connecté au serial de l’arduino. Pour plus de souplesse vous pouvez utiliser d’autres pin de l’arduino avec la librairie SoftSerial, ça facilitera le débug, j’utilise les pin 4 (RX) et 2 (TX) dans mon code.


Software arduino :

Rien de sorcier ici, on parle en série avec le module bluetooth donc on regarde juste si l’on reçoit bien la commande envoyée par le smartphone “blink”, cette commande activera le clignotement de la led présente sur l’arduino.

Le code est sur Github : https://github.com/tmator/Smart-speaking-with-tooth

Coté Smartphone ???

Point important je n’ai jamais développé sur smartphone, ou alors simplement un HelloWorld avec le SDK android pour faire le curieux …. je me suis alors demandé de quelle manière j’allais développé l’application mobile.

Après une longue réflexion (environ 30 secondes) je me suis tourné vers phonegap/cordova; je ne suis habituellement pas fan de ce genre de solution, je préfère les applications natives mais comme mes collègues bossent la dessus je n’ai pas trop cherché à me compliquer la vie. Donc j’ai installé phonegap et crée une application avec le plugin https://github.com/don/BluetoothSerial qui permet d’envoyer facilement des messages via bluetooth, seul défaut que je trouve à cette librairie c’est qu’il faut avoir appairé les deux devices en passant par les paramètres du smartphone.

Forcément ce n’est pas optimal, mais pour faire une application avec un bouton qui fait clignoter une led c’est largement suffisant. L’avantage de phonegap c’est que en théorie votre application est compilable sur différentes plate-formes (mais à l’usage on s’aperçoit vite que l’on doit quand même faire du code spécifique …).

Screenshot_2015-01-15-18-09-35

Le code est sur Github : https://github.com/tmator/Smart-speaking-with-tooth

Donc rien de spécial, dans le index.html un bouton “blink” sur lequel j’ai mis une action onTouch dans le fichier js; cette action appelle la fonction blink qui envoi la commande “blink” via bluetooth.

IMG_20150115_181024

Et voila de quoi bien commencer 🙂

Vision ouverte

Bonjour,

Je vais vous parler d’un rêve que bon nombre de geeks ont eu dans leur jeunesse, posséder un casque de réalité virtuelle. De nos jours de plus en plus de casques sortent comme l’Oculus Rfit (racheté par facebook) et Durovis Dive…

buy-durovis-dive

Version commerciale du casque Durovis Dive

 

OpenDive c’est quoi ?

Ce projet est née dans la tête d’un allemand lorsqu’il a réalisé que sont smartphone pouvait faire tout ce que proposait l’Oculus Rift (en mieux), le tout sans fil. Il a donc créé ce casque et l’a rendu Open Source pour que les gens puisse le télécharger. Il souhaite que les gens puissent accéder à la réalité virtuelle à moindre coût.

Que me faut il pour fabriquer un casque ?

Pour se faire un casque il suffit d’avoir le casque (vous pouvez me commander l’impression sur mon hub), un smartphone (de cette liste) et le kit de lentilles (à commander ici).

photo 1 (8)

Un casque OpenDive

photo 2 (8)

La société propose aussi un casque complet (sans smartphone mais toujours plus cher que chez moi:) ) qui aura une meilleure finition mais donnera les même résultats que la version Open Source.

On trouve quelques applications sur les store Apple et Google (pas encore chez Microsoft) et même une version spéciale de Quake2 plutôt sympathique.

Mes impressions ?

L’immersion est plutôt pas mal, il faut trouver les bons réglages pour ne pas avoir mal à la tête. Un peu embêtant pour ceux qui comme moi portent des lunettes … et les jeux sont peu nombreux mais ce n’est que le début, et comme ils utilisent Unity pour développer on peut s’attendre à voir de belles choses arriver rapidement.

Durovis-Dive-1024x576-6b241089abd4c751

 

C’est aussi sympa de regarder des films sur grand écran sans être dérangé par le « bruit visuel » ambiant:)

Avantages :

  • meilleure résolution des écrans de smartphone comparé à l’Oculus
  • pas cher du tout (si l’on a déjà le smartphone qui va avec)
  • écran géant pour regarder des films

Inconvénients :

  •  la latence (qui dépends du téléphone, très faible sur IPhone)
  • ça peut filer la gerbe (cinétose)
  • manque d’applications
  • devoir sortir le smartphone pour lancer les applications

Si vous voulez tester ou en faire un, n’hésitez pas à me contacter.

Partageons la 3D

Pas trop de temps en ce moment je fais juste un petit billet pour faire un peu de pub pour 3D Hubs et… pour moi 🙂

3dhus

3D Hubs est une start-up Hollandaise (pays très impliqué dans l’impression 3D au passage) qui permet aux possesseurs d’imprimantes 3D de mettre a disposition du public son imprimante afin que tout le monde puisse avoir accès a cet outil merveilleux.

L’idée est simple, vous avez un imprimante, vous vous inscrivez sur le site en donnant des informations (type d’imprimante, types de matériaux, couleurs…) et en fixant le prix de l’impression.

Le client lui choisi un « imprimeur » près de chez lui et envoie son fichier sur le site et vous l’imprimez, rien de plus simple :). Grâce à ce concept vous rencontrerez ensuite la personne qui vous à imprimé l’objet en allant le chercher.

Une expérience intéressante et ludique pour découvrir cette technologie de plus en plus répandue.

Maintenant un peu de pub, pour commander sur mon hub : http://www.3dhubs.com/toulouse/hubs/brice .

Merci d’avance et bon week-end.