Table of Contents
Bytecodes
Overview
Le Nabaztag v1 est bien plus limité que le Nabaztag v2, il faut donc avoir recours à différents bytecodes au lieu d'un seul, envoyé lors du boot du lapin comme c'est le cas sur le v2.
Quand Mindscape a mis les sources à disposition, ils ont donné les sources des bytecodes suivants:
- Nabaztag_pointbleu.vasm: Bytecode de démo je présume, fait clignoter les leds à tour de rôle en bleu clair (si je me souviens bien)
- Nabaztag_asleep_v1.0.vasm: Permet de mettre le lapin en “sommeil”, leds éteintes, oreilles couchées, aucune interaction
- Nabaztag_msg_v0.9.vasm: Permet de lire un fichier audio (voir ADPCM2-4bits plus bas)
- Nabaztag_demo.vasm: Bytecode très similaire au suivant
- Nabaztag_wait.vasm: Pour moi, c'est le bytecode principal, il gère les “services” (tels que la météo, le trafic, les emails… via les leds du ventre), ainsi que les mouvements d'oreilles, les clics, le TaiChi, … C'est sur ce bytecode là que j'ai le plus travaillé pour l'instant.
VASM
Ces fichiers sont des sources écrites dans un langage assembleur particulier au Nabaztag V1, le VASM, dont on peut trouver la documentation sur Internet, en cherchant Nabaztag-vasm-RevB.pdf
Ces sources ont donc besoin d'être assemblées avant d'être envoyées au Nabaztag. Pour cela, plusieurs options:
- Faire la conversion à la main, très déconseillé…
- Utiliser la source Java fournie par Mindscape ( le fichier en question est Vasm.java dans le dossier des sources VASM)
- Utiliser un autre assembleur. Il en existe quelques uns, dans les anciens projets de serveurs Nabaztag V1 MAIS beaucoup ne supportent pas certaines opcodes spécifiques au sources de Violet…
- C'est pourquoi j'en ai réécris un en Php, qui permet d'assembler les sources existantes. Par manque de ressources serveur, je ne le mets pas en ligne pour l'instant, mais n'hésitez pas à me contacter pour l'avoir, tout mon travail sur le Nabaztag est sous license GPLv3.
ADPCM2-4bits
Le Nabaztag est limité en ressources, il ne peut pas lire de fichiers Wav directement (laissez tomber les mp3, c'est même pas la peine d'en parler). Il faut les convertir en ADPCM2-4bits. C'est un format propriétaire OKI, fermé. Il est à ma connaissance impossible de trouver de la documentation dessus librement. Il se rapproche du format ADPCM, mais les tables de conversion et peut-être une partie de l’algorithme sont différent. L'idée de ce format est de convertir 4 octets du fichier WAV source en 1 octet du fichier ADP de sortie.
Il en existe une variante, le format ADPCM2-2bits, qui doit probablement faire la même chose mais avec 8 octets, permettant une plus grande compression au détriment de la qualité. Le Nabaztag supporte très bien le format 4bits, c'est donc celui-çi qui sera maintenu
Pour faire la conversion Wav vers ADP il faut:
- Un fichier WAV:
- Mono
- PCM
- Échantillonné à maximum 16 kHz
- Un convertisseur WAV → ADP, là plusieurs solutions
- Un convertisseur avec interface graphique, sous Windows
- Le fichier wav2adp de Mindscape sous GNU/Linux (32-bits)
- La source de Sprites_TM: vox-adpcm2 très probablement multi-plateforme
- Ma source C normalement multi-plateforme
- Ma source Php
Un petit mot sur mes sources de convertisseur: La source Php n'est qu'une adaptation “rapide” de la source C, mais elle fonctionne bien. Mes deux sources ne sont pas disponibles, pour la même raison que mon assembleur. N'hésitez pas à me contacter.
Ensuite, pour lire ces fichiers convertis, il suffit de les inclure dans la source “…msg.vasm” de Minscape.