Catégorie : Non classé

AC 2021

Le virus est là depuis 1 an et demi. Le monde se meurt. Nous avons besoin de sortir de chez nous !

J’ai fais beaucoup de démoparty auparavant, mais n’avais jamais fait de conventions. M’étant remis sur Amstrad depuis peu, l’AC 2021 ne pouvait que m’attirer.

C’est donc le weekend du 27 et 28 novembre 2021 que je suis parti, seul loin de ma famille, à cette convention dans le petit village de Congis pas loin de Paris.

C’est l’occasion de rencontrer IRL tout des gens avec qui je parle sur les forums, groupe facebook et autres Discord.

L’occasion aussi de présenter la dernière version de notre remake de Puzzle Bobble.

L’association RGC organise, depuis 2006, deux conventions retrogaming. La plus grande, la RGC, est dédié principalement aux consoles. Celle-ci, l’AC, est plus dédiée aux ordinateurs (Amiga/Commodore, Atari, Amstrad, MSX, Thomson, Oric, etc).

Je ne me souvenais plus avoir vu autant d’Amstrad CPC. Même aux démoparty il y a 25 ans, il n’y en avait pas autant. Quand on voit les productions qui sortent sur cette machine actuellement, ce n’est pas étonnant. Le CPC est plus en forme que jamais.

Les époques ont changé, Covid oblige, nous ne pouvons plus dormir sous les tables. De toute façon, avec mon grand age, je n’en avais pas l’intention. Une nuit d’hôtel (même spartiate) m’était nécessaire. Les pizzas ont disparu aussi, nous nous faisons un beau restaurant en fin de journée. L’embourgeoisement nous a rattrapés.

Beaucoup de belles rencontres. Je ne citerai personne de peur d’oublier quelqu’un, mais ils se reconnaitront.

Je n’avais qu’une envie à la fin de cette convention: d’assister à la prochaine !

Flipper Zero

J’adore Kickstarter même si les délais pour recevoir la récompense sont souvent très longs. (J’attend toujours mon Spectrum Next commandé en octobre 2020).

Fin juillet 2020, j’ai commandé le Flipper Zero. Le couteau suisse pour les hackers (dixit les créateurs) et il est enfin arrivé !

Cet petit accessoire, de la grandeur d’une grosse clef usb (oui, une bien grosse de 98 x 39 x 24 mm et 140 grammes) est bourré de fonctionnalités :

  • un lecteur et émulateur RFID et NFC
  • un lecteur et émulateur de iButton Reader & Emulator (Dallas)
  • un émetteur-récepteur infrarouge (800-950 nm)
  • un émetteur-récepteur Gigahertz (300-928 Mhz)
  • un module Bluetooth LE
  • des GPIO
  • un port USB
  • un slot MicroSD
  • un écran monochrome de 128×64 pixels
  • un buzzer
  • une batterie de 2000 mAh
  • un processeur STM32 ARM Cortex-M4
  • un firmware totalement open source et totalement scriptable

Tellement de trucs que cela en est abusé.

Je ne pourrais évidemment pas faire le tour du module avec un seul article mais vous pouvez déjà imaginer tout ce qu’il permet.

Nous commencerons par la copie de code infrarouge. Histoire d’en faire un télécommande d’arrêt d’urgence de TV par exemple 😉

Mais ceci est une autre histoire, qui sera contée une autre fois.

Edito – Septembre 2022

Plus de 3 mois sans rien poster.. alors que j’ai plein de textes déjà écrits… J’abuse vraiment !

Beaucoup de raisons à tout cela. Des bonnes mais aussi des mauvaises (Qui a dit procrastination ?)

Le secteur technologique souffre. Rupture de stock partout, inflation galopante. Une impression que l’innovation n’est plus la priorité pour beaucoup.

Mais sinon, de mon côté, que c’est-il passé ces 3 derniers mois ?

J’ai enfin eu mon Flipper Zero, je vous en parle plus en détail rapidement.
J’ai aussi eu une nouvelle console portable qui mérite que l’on s’attarde sur elle (la Miyoo Mini)
Le GPD Pocket 3 a remplacé mon GPD Pocket 2. Et j’ai remplacé tous mes claviers Azerty par des Qwerty.
J’ai découvert avec plaisir (oui, oui) Windows 11

De quoi vous gaver jusqu’au bout de l’année sans problème.

Développement de BriXen: épisode 3 – Visual studio code

Après quelques années d’utilisation de Sublime Text, j’utilise maintenant Visual Studio Code qui a toutes les qualités de mon précédent éditeur avec l’avantage d’être gratuit.

Pour développer une application Amstrad CPC en C, j’ai besoin au minimum:

d’un raccourci me permettant de compiler rapidement (via shift+cmd+b idéalement)
d’un raccourci me permettant de tester mon application (shift+cmd+r)
de coloration syntaxique
d’une indentation automatique de mon code

Visual Studio Code étant facilement personnalisable, rien de ceci ne lui est impossible.

Compilation

Notre fichier build.sh étant déjà disponible dans notre template, il suffit de créer un raccourci pour l’exécuter.

Pour cela, nous créons un fichier tasks.json dans le dossier .vscode présent à la racine de notre projet.

Ce fichier (disponible à la fin de l’article) sera constitué de:

Ce fichier json décrit une tâche qui:

tue les instances de Retro Virtual Machine qui seraient encore en train de fonctionner.
exécute notre commande build.sh (L’emplacement de votre projet doit être modifié).
prend le retour de la commande build.sh et en retire les warning et error pour une affichage plus propre

Pour lier la tache à notre raccourci (cmd+shift+b), il faut modifier le fichier keybindings.json (cmd+shift+p pour afficher la Command Palette et entrez ‘open keyboard shortcuts (JSON)’)

Dans ce fichier json, créez l’entrée suivante

{
"key": "shift+cmd+b",
"command": "workbench.action.tasks.runTask",
"args": "SDCC - make"
}

Execution

Pour notre tâche d’exécution, le principe est le même que pour la compilation, le shortcut étant juste:

{
"key": "shift+cmd+r",
"command": "workbench.action.tasks.runTask",
"args": "SDCC - Retro Virtual Machine"
}

3. La coloration syntaxique

Visual Studio Code dispose déjà (évidemment) d’un plugin de coloration syntaxique pour le source code. J’ai pris celui que propose Microsoft, c’est-à-dire C/C++. En plus de la coloration syntaxique, il propose aussi:

l’Intellisense (code completion, information sur les paramètres des fonctions, …),
le debugging (que je n’utilise pas encore)
et la navigation dans le code (pratique pour trouver la définition d’une fonction par exemple)

Pour l’installer, cmd+shift+x, recherche de C/C++ et bouton vert ‘install’. Trop facile.

Pour la facilité, j’ai ajouté le « format on save » à configurer dans les settings via le menu Text Editor/Formatting.

4. L’indentation automatique

Là non plus, nous n’allons pas nous compliquer la vie. Uncrustify a fait ses preuves et il existe un module pour VS Code.

J’utilise celui de Laurent Tréguier que je configure avec mon fichier uncrustify.cfg kivabien.

A suivre pour un prochain épisode

Télécharger

Arduboy

Une console de jeu d’une taille de 85.60 x 53.98 x 5mm (soit une carte de crédit un peu épaisse), ça vous tente ?

J’ai craqué pour cette console en avril 2017 après avoir raté la campagne Kickstarter en 2015.

Les specifications sont largement suffisantes pour faire de petits jeux sympas:

  • écran : OLED monochrome de 1.3 pouce et de résolution 128 x 64
  • processeur : ATmega32u4 de 8MHz
  • mémoire : 32KB Flash, 2.5KB RAM, 1KB EEPROM
  • connectivité : USB 2.0
  • 6 boutons
  • sorties : 128×64 1Bit OLED, 2 Ch. Piezo Speaker et une LED Blinky8
  • batterie : 180 mAh

Lors de sa réception, j’ai vite ressenti les plaisirs de développement que j’avais eu sur l’Amstrad CPC ou encore plus, sur la HP48 ! Celle-ci (la calculatrice de mes années Polytech) avait presque la même résolution (131×64) en monochrome aussi. Sur celle-ci, je jouais principalement à Diamonds de Doug Cannon. Ayant déjà fait une version de Diamonds sur Pocket PC (jamais sortie), le porter sur l’Arduboy était une évidence…

La facilité de programmation sur cette console était tel qu’il ne me fallut pas plus de 2-3 jours pour avoir une version jouable. Cette version est disponible sur GitHub pour ceux que ça intéresse.

J’ai fait un deuxième jeu plus tard: un video poker aussi disponible sur GitHub

Développement de BriXen: épisode 2 – Hello World!

Exercice d’aujourd’hui: créer notre première application Amstrad. Rien de moins.

Tout d’abord, il est nécessaire d’installer Docker.

Le docker contenant le dernier toolchain CPTC (Crazy Piri Toolchain) est disponible sur Docker Hub. Nous l’installerons après.

Actuellement, ce docker contient les outils suivants:

sdcc: compilateur C (et assembleur via sdasz80)
idsk: création d’image disk pour l’Amstrad
hex2bin: conversion de la sortie du compilateur vers un fichier lisible par l’Amstrad
nocart: conversion d’une image disque vers un fichier GX4000 / Amstrad plus
2cdt: création d’une image cassette
Disark: convertisseur de source assembleur (rasm -> sdcc par exemple)
addhead: pour jouer avec les header AMSDOS d’un fichier
bin2c: convertisseur de fichier binaire vers un fichier source .c
lzsa: compression de fichier binaire avec LZSA
rasm: assembleur de Roudoudou (utilisé actuellement pour convertir le player de ArkosTracker)

Je reviendrai plus en détail plus tard sur chacun de ces outils.

Ensuite, nous pouvons télécharger le template à partir duquel sera réalisé notre futur jeu.

git clone git@github.com:Crazy-Piri/cptc-template.git
cd cptc-template
docker run --rm -v $PWD:/src/ -it redbug26/cptc-docker
./build.sh

La commande toolchain.sh lance une session Docker dans notre environnement de développement. Elle fonctionne sous linux et macOS. Il a donc lieu de l’adapter pour une utilisation sous Windows.

La commande build.sh crée le disque cptc-template.dsk dans lequel se trouve votre première application pour l’Amstrad CPC.

Ouvrez le fichier cptc-template.dsk dans votre émulateur préféré et lancez la commande

run"main.bin

Maintenant, comment interfacer tout cela avec Visual Studio Code ?

A suivre pour le prochain épisode…

l'interface de Toby

Toby

Toby n’est pas le nom de mon chien.

Est-ce, comme moi, que vos bookmarks sont un foutoir sans nom ? À force d’installer 36 navigateurs web différents sur 36 machines sur plus de 20 ans sans rien nettoyer, cela ne donne plus rien d’utilisable.

Je voulais donc repartir sur de bonnes bases (de zéro donc) avec une interface plus moderne que ce que nous proposent les navigateurs web de base.

Mon choix s’est porté sur Toby.

Toby se présente sous la forme d’un plugin dans Chrome ou Firefox (ou via un site web en bêta) et s’affiche lors de l’ouverture d’un nouvel onglet.

Votre page est alors divisée en 3 parties (dont 2 repliables):

La partie de gauche avec vos espaces et le paramétrage
La partie de droite avec les onglets actuellement ouverts
La partie centrale avec vos collections.

Chaque espace contient des collections, chaque collection contient vos bookmarks.

Tout de fait via drag’n drop avec la partie de droite. Dur de faire plus intuitif.

Je vous laisse découvrir le reste (recherche des sites doublons, ouverture d’une collection complète, sauvegarde de la session courante dans une collection …), je suis certain que, comme moi, vous apprécierez.

Ah oui: tout ça est gratuit. Une version pro existe, mais est plus destinée aux équipes.

(c) Pexels – Anton Kudryashov

Droit des vos fichiers Apache

Vous modifiez des fichiers de votre serveur web directement à partir de votre navigateur ?

Il se peut que donc que vous ne puissiez plus y accéder en ligne de commande.

Tout d’abord, vérifiez que vous êtes bien dans le groupe www-data

sudo usermod -a -G www-data votre_user

Ensuite, ajouter la commande umask 002 dans le fichier /etc/apache2/envvars

Et redémarrer complètement le service apache via service apache2 restart

Merci qui ?

Développement de BriXen: épisode 1 – Ma chaine de compilation Amstrad CPC

Introduction

Je n’avais jamais développé sur Amstrad CPC (mis à part en Basic il y a… plus de 30 ans). Lorsque Pascal Visa a lancé la CPC Gamedev Contest 2020 dans le groupe Facebook Amstrad CPC pour toujours and beyond !, je me suis dit que c’était l’occasion d’enfin m’y mettre. Le développement de mon émulateur CrocoDS m’a beaucoup appris sur les possibilités de mon ordinateur préféré.

Il restait donc à savoir comment programmer sur un Amstrad en 2020. Pas question évidemment de développer directement sur l’Amstrad mais plutôt de s’aider des outils modernes.

Comme beaucoup de développeurs actuellement, je suis passé sous Visual Studio Code, l’éditeur de code multi plateforme et extensible développé par Microsoft.

Lorsque j’ai commencé à développer pour l’Amstrad CPC, il était donc évident que je puisse utiliser cet éditeur.

Mon langage de prédilection étant depuis toujours le C pour sa simplicité et du fait qu’il soit un langage de très bas niveau. Je comptais donc développer en ce langage (avec évidemment l’ajout de code assembleur pour les routines ayant besoin de plus d’optimisation).

Comment donc mélanger tout cela ?

Les outils

J’ai essayé divers environnements de développement tels que CPCtelera, cpc-dev-tool-chain mais aucun ne m’a satisfait à 100%.

Ils m’auront au moins permis de me donner des idées sur plusieurs de mes futurs outils. Ces outils auront leurs prochains articles détaillés à l’avenir.

SDCC comme compilateur C (et asm dans un premier temps). J’avais commencé avec Z88DK mais le code généré par ce compilateur était beaucoup moins optimisé que celui de SDCC.
cpcrslib comme librairie de fonctions assembleur.
Arkos Tracker 2 pour la musique
Visual studio code (déjà évoqué auparavant)
Docker (je ne voulais pas devoir réinstaller un environnement de développement chaque fois que je change de machine)
Retro Virtual Machine comme émulateur multi-plateforme. J’ai mon propre émulateur (que j’utilise aussi au niveau développement pour certaines de ces fonctionnalités) mais RVM va beaucoup plus loin au niveau debug.
Divers outils tels que convimgcpc, RGAS, iDSK…

Tout cela m’a permis de faire un template qui sera disponible sur GitHub dans les jours qui viennent qui me permet:

Via la commande SHIFT-CMD-B de faire un build de mes sources,
Via la commande SHIFT-CMD-R d’exécuter l’application directement dans Retro Virtual Machine.

À suivre pour l’épisode 2 très bientôt…

(c) Pexels – Andrea Piacquadio

Fun with UNDOK

UNDOK ? Cékoidon ?

D’après le site de Frontier Smart Technologies, l’application UNDOK ™ de Frontier fournit le contrôleur le plus complet, le plus polyvalent et le plus facile à utiliser pour les systèmes audio connectés de nouvelle génération.

Ça vous aide ? Non ? En fait, il s’agit du logiciel présent sur beaucoup de radios Internet (Roberts, Sangean, Pure, Revo, Hama, Medion…)

Je possède le Robert Revival iStream 3 et voudrais l’interfacer avec ma domotique. C’est évidemment possible et nous allons le voir tout de suite.

Tout d’abord, il est nécessaire de trouver l’IP de la radio. Cela se fait via la recherche SSDP (Simple Service Discovery Protocol) suivante:

gssdp-discover -t urn:schemas-frontier-silicon-com:undok:fsapi:1

L’IP de la radio nous permet déjà d’avoir quelques infos via l’adresse http://<ip>/device

<netRemote>
<friendlyName>Roberts Salon</friendlyName>
<version>ir-mmi-FS2026-0500-0641_V2.14.35c.EX86167-1A39</version>
<webfsapi>http://192.168.1.209:80/fsapi</webfsapi>
</netRemote>

L’affichage de la ressource UPNP contient aussi des informations intéressantes: http://<ip>:8080/dd.xml

Maintenant que nous avons l’adresse IP, nous pouvons installer la librairie fsapi via composer, le gestionnaire de paquet PHP. Dans un nouveau répertoire, tapons la commande suivante (petit patapon):

composer require flammy/fsapi

Il n’y a plus qu’à créer le script: un fichier index.php contenant le code suivant (avec l’ip de la radio)

<?php
require_once("vendor/autoload.php");
require_once("vendor/flammy/fsapi/src/Radio.php");
$host = "192.168.1.209";
$pin = "1234";
$Radio = new Radio($host,$pin);
$Radio->getSet("netRemote.sys.power","1");   // 1: on, 0 :off

On exécute le script via php index.php et la radio s’allume…

Après, si vous voulez vous passer de l’API (ou de php), cette commande suffit:

curl -vs "http://192.168.1.209/fsapi/SET/netRemote.sys.power?value=1&pin=1234"

Le faire via php vous permet d’avoir accès à des fonctions plus parlantes tel que $Radio->volume('up'); ou $Radio->radioFrequency(106.4);.