¡Presentamos el emulador integrado en las páginas de la Wiki!

Siguiendo la sugerencia de @Jonathan, ¡he pasado las últimas horas implementando RVMPlayer para las páginas de la wiki también!

Cuando una página contenga una imagen dsk (como XMas-tro 2009 - CPCWiki), verás un botón de «Jugar» junto a la imagen dsk. Esto abrirá una ventana modal con el emulador, haciendo un CAT automáticamente.

Intenté implementarlo directamente en la página, pero causó algunos problemas que no pude solucionar (al menos no rápidamente), ¡pero creo que esta implementación también está muy bien!

¡Pruébalo y cuéntame qué te parece!

Esto es perfecto. Quizás otros sitios web sigan el ejemplo (p. ej., https://www.cpc-power.com).

Gracias por implementarlo.

Solo algo que he notado.

Primero tengo que explicar una consecuencia de que un navegador (al menos Firefox) implemente la función «resist fingerprinting» (resistencia a la huella digital). Cuando está activada, las API de JavaScript no revelan la distribución del teclado local al código JavaScript. Si el código JavaScript consulta información sobre la distribución del teclado, obtiene la misma respuesta (tal vez una distribución de teclado estándar de EE. UU.) independientemente de cuál sea la distribución real. Ya ves por dónde voy, ¿verdad?

Ahora la cuestión.

Un emulador de Amstrad CPC en un navegador es código JavaScript que suele asumir cierta distribución física del teclado.

El resultado es que con una distribución francesa y un perfil de navegador que tiene activado «resist fingerprinting», al visitar tu ejemplo XMas-tro 2009 - CPCWiki, la distribución del teclado está tan descolocada que ni siquiera puedo escribir comillas " dentro del emulador.

Curiosamente, todas las letras funcionan bien. Pero al presionar las teclas de la 1 a la 9 y luego el 0 (que en un teclado francés producen los símbolos &é"'(-è_çà), aquí producen 7;;9--. Algunas teclas no hacen nada, las que sí producen algo (en orden) son 134568. ¿Confuso? Sí, a mí también me lo parece.

Es una de las capas de lío que resulta menos problemática cuando se crean producciones que pueden funcionar al 100 % usando solo las teclas que son iguales en QWERTY AZERTY QWERTZ, consulta Why make such great games if most people can't play them properly? - #2 by cpcitor

Así que he estado investigándolo. Por lo que puedo ver, no hay una solución definitiva, solo rodeos, como usar un perfil con RFP desactivado. O cambiar el idioma del teclado.

Como el motor de RVMPlayer no ofrece ninguna API para seleccionar la distribución regional del teclado ni para remapear teclas individuales, no hay código que podamos añadir al código de la wiki que se salte la falsificación deliberada del navegador. Y, por lo que estoy leyendo, los usuarios de FF tienen que aceptar una mayor privacidad a cambio de perder funcionalidad.

Respecto a los símbolos y números, ni idea de por qué FF hace esto :smiley: Normalmente, la fila superior produce símbolos y los números se obtienen usando la tecla Shift, pero parece que FF con RFP activado informa de que se están pulsando las teclas físicas de una distribución de EE. UU., ¿pero mezcladas con los valores de las teclas adaptados al francés?

Siento no poder ser de más ayuda…

¿Es posible que el emulador también se muestre con los CPR? :slight_smile:

¡Me temo que dependerá de cuándo y si RVM Player añade compatibilidad con ello!

Hay una opción que algunos emuladores consideran: no intentar ser listos con la distribución del teclado físico del host, sino simplemente no asumir nada al respecto.

En otras palabras, aceptar cuando una API proporciona un símbolo y no una posición del teclado.

En este caso, cuando las API de Javascript dicen “el usuario presionó <lo que sea>”, no intentes adivinar que “asumiendo un host físico con un teclado estándar PC105 con distribución francesa Azerty, este símbolo debería ser lo que aparece cuando el usuario presiona la tecla en la fila x col y, lo cual mapearé a la tecla física del CPC fila x’ col y’”.

En su lugar, acepta que, por ejemplo, el usuario presionó “una tecla que produce un símbolo de comilla”. Ten un mapa de símbolos a teclas de CPC, independiente del teclado físico del host. Esto podría requerir una secuencia en la máquina emulada, como “presionar shift, presionar 2, soltar 2, soltar shift”.

Arnoldemu definitivamente permite una lógica similar y la llama “traducida” (translated), en contraposición a “posicional” (positional).
Yo la llamaría “basada en símbolos”.

Creo que caprice32 también lo permite.

Una ventaja es que puedes escribir en el CPC con tu teclado de PC tal como lo harías en cualquier otro programa. Genial para programar o editar cualquier tipo de texto. Y para escribir run"disc.

Volviendo a la situación actual: depende de que el emulador admita dicha lógica independiente del teclado físico. Lo cual supongo que RVM no hace, ¿verdad?

¡Has dado en el clavo! :smiley:

No expone ninguna opción, que yo pueda ver…