Découvrez l’émulateur intégré aux pages Wiki !

Suite à la suggestion de @Jonathan, j’ai passé ces dernières heures à implémenter RVMPlayer pour les pages du wiki aussi !

Lorsqu’une page contient une image dsk (comme XMas-tro 2009 - CPCWiki), tu verras un bouton « Jouer » à côté de l’image dsk. Cela fera apparaître une fenêtre modale avec l’émulateur, qui fera un CAT automatique.

J’ai essayé de l’intégrer directement dans la page, mais ça posait quelques problèmes que je n’ai pas pu résoudre (du moins pas rapidement), mais je trouve que cette intégration est sympa aussi !

N’hésite pas à tester et à me dire ce que tu en penses !

C’est parfait. Peut-être que d’autres sites web suivront le mouvement (par ex. https://www.cpc-power.com).

Merci pour l’implémentation.

Juste une chose que je remarque.

D’abord, je dois expliquer une conséquence du fait qu’un navigateur (au moins Firefox) implémente « resist fingerprinting » (résistance à la prise d’empreinte). Lorsqu’elle est activée, les API Javascript ne révèlent pas la disposition du clavier local au code Javascript. Si le code Javascript demande des informations sur la disposition du clavier, il obtient la même réponse (peut-être une disposition de clavier US classique) quelle que soit la disposition réelle du clavier. Tu vois où je veux en venir, n’est-ce pas ?

Maintenant, le problème.

Un émulateur Amstrad CPC dans un navigateur est du code Javascript qui fait généralement des hypothèses sur la disposition physique du clavier.

Un des résultats est qu’avec une disposition française et un profil de navigateur sur lequel « resist fingerprinting » est activé, en visitant ton exemple XMas-tro 2009 - CPCWiki, la disposition du clavier est tellement folle que je ne peux même pas taper un guillemet " dans l’émulateur.

Bizarrement, toutes les lettres vont bien. Mais en appuyant sur les touches 1 à 9 puis 0 (ce qui sur un clavier français produit les symboles &é"'(-è_çà), j’obtiens ici 7;;9--. Certaines touches ne font rien, celles qui produisent quelque chose (dans l’ordre) sont 134568. Déroutant ? Ouais, moi aussi.

C’est une couche de bazar en plus, ce qui pose moins de problème lors de la création de prods qui peuvent fonctionner entièrement en utilisant uniquement les touches qui sont identiques en QWERTY AZERTY QWERTZ, voir Why make such great games if most people can't play them properly? - #2 by cpcitor

Du coup, je me suis penché sur le problème. D’après ce que je peux en dire, il n’y a pas de solution miracle, seulement des alternatives — comme utiliser un profil avec RFP désactivé. Ou changer la disposition du clavier.

Comme le moteur de RVMPlayer ne fournit aucune API pour sélectionner une disposition régionale du clavier ou remapper des touches individuelles, il n’y a aucun code qu’on puisse ajouter à celui du wiki pour contourner le spoofing volontaire du navigateur. Et de ce que je lis, les utilisateurs de FF doivent accepter ce surcroît de confidentialité en échange d’une perte de fonctionnalités.

Concernant les symboles et les chiffres — aucune idée de pourquoi FF fait ça :smiley: La rangée du haut produit normalement des symboles et les chiffres s’obtiennent avec Maj, et on dirait que FF avec RFP activé remonte les touches physiques appuyées comme s’il s’agissait d’un layout US, mais mélangé avec des valeurs de touches localisées en français ?

Désolé de ne pas pouvoir t’aider davantage…

Est-il possible que l’émulateur s’affiche aussi avec les CPR ? :slight_smile:

Si et quand le RVM Player le prendra en charge, j’en ai bien peur !

Certains éulateurs envisagent une option : ne pas essayer de faire le malin avec la disposition physique du clavier de l’hôte, mais simplement ne rien supposer à son sujet.

En d’autres termes, accepter lorsqu’une API fournit un symbole et non une position sur le clavier.

Dans ce cas, lorsque les API Javascript indiquent « l’utilisateur a appuyé sur <ce_qu'on_veut> », il ne faut pas essayer de deviner que « en partant du principe qu’il s’agit d’un hôte physique équipé d’un clavier PC105 classique avec une disposition AZERTY française, ce symbole devrait être ce qui apparaît quand l’utilisateur appuie sur la touche à la ligne x et colonne y, que je vais mapper sur la touche physique du CPC à la ligne x’ et colonne y’ ».

Au lieu de cela, il faut accepter que, par exemple, l’utilisateur a appuyé sur « une touche qui produit un guillemet ». Il suffit d’avoir une table de correspondance entre les symboles et les touches du CPC, indépendante du clavier physique de l’hôte. Cela peut nécessiter une séquence dans la machine émulée, du type « appuyer sur majuscule, appuyer sur 2, relâcher 2, relâcher majuscule ».

Arnoldemu permet tout à fait une logique similaire et l’appelle « translated » (traduite), par opposition à « positional » (positionnelle).
Je l’appellerais plutôt « basée sur les symboles ».

Je crois que caprice32 le permet aussi.

L’un des avantages est qu’on peut taper sur le CPC avec son clavier PC comme dans n’importe quel autre programme. C’est génial pour programmer ou éditer n’importe quel type de texte. Et pour taper run"disc.

Pour en revenir à la situation actuelle : tout dépend si l’émulateur prend en charge une telle logique indépendante du clavier physique. Ce qui n’est pas le cas de RVM, j’imagine ?

Exactement :smiley:

Il n’expose aucune option, pour autant que je puisse voir…