Para autores de emuladores: ¿Conversacionales para ciegos?

Emuladores y aplicaciones que ayudarán a la perpetuación del Spectrum y su software en el futuro

Moderador: Sir Cilve Sinclair

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por antoniovillena » Jue Sep 18, 2014 2:07 pm

Ya he arreglado lo de las Aventuras PAW, reduciendo únicamente a ASCII lo que se imprime. Puedes probar de nuevo Lucybel.

Yo estoy siguiente el hilo en el foro de CAAD, por lo que no necesito que me traslades lo que respondan por ahí. Lo único es que no estoy registrado y tú eres el que hace de intermediario. Está muy bien que le traduzcas el tocho pero no estaría de más que pusieras una copia literal o un enlace de este foro. En concreto hay 2 cosas que veo importantes que no has trasladado allí:

  • Lo de borrar la pantalla. Ahora está implementado con Tab pero podemos elegir otra tecla o combinación de teclas.
  • Lo de Ctrl+F5 para refrescar la caché.

En cuanto a la lista, me podéis pasar una lista y yo pongo los juegos que me digáis. El emulador es GPL, podéis subirlo a otra web si queréis tener más control, si me pasáis un FTP os subo los archivos.
Imagen

Avatar de Usuario
Uto
Jack The Nipper
Mensajes: 180
Registrado: Jue Sep 06, 2007 3:32 pm

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por Uto » Jue Sep 18, 2014 9:47 pm

antoniovillena escribió:Ya he arreglado lo de las Aventuras PAW, reduciendo únicamente a ASCII lo que se imprime. Puedes probar de nuevo Lucybel.

¡Genial!

Yo estoy siguiente el hilo en el foro de CAAD, por lo que no necesito que me traslades lo que respondan por ahí. Lo único es que no estoy registrado y tú eres el que hace de intermediario. Está muy bien que le traduzcas el tocho pero no estaría de más que pusieras una copia literal o un enlace de este foro. En concreto hay 2 cosas que veo importantes que no has trasladado allí:

  • Lo de borrar la pantalla. Ahora está implementado con Tab pero podemos elegir otra tecla o combinación de teclas.
  • Lo de Ctrl+F5 para refrescar la caché.

Trato de enfocar la información a lo que es importante. Como te comentaba el tema de borrar la pantalla no es importante porque no les afecta, y por eso no se lo he puesto. Lo de la caché es algo estándar. Verás que tampoco he dicho lo de las grabaciones con F6... en fin, solo pretendo ir al grano, y cuando el grano funcione, ya metemos los "extras".

En cuanto a la lista, me podéis pasar una lista y yo pongo los juegos que me digáis. El emulador es GPL, podéis subirlo a otra web si queréis tener más control, si me pasáis un FTP os subo los archivos.


¿Me puedes pasar un zip y los subo yo a uno provisional para ir trasteando entre tanto? (luego ya abrimos un ftp "final" en caad.es). Si puedes poner un enlace dropbox o similar ya me encargo, si no dimelo y te mando un privado con mi e-mail.

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por antoniovillena » Jue Sep 18, 2014 10:57 pm

No si lo estás resumiendo muy bien, pero que si quieren completar la información que se pasen por este foro. El problema es que yo no sé cómo funcionan los programas de accesibilidad tipo JAWS o NVDA, yo pensaba que al pinchar en la ventana te sintetizaba en voz el texto desde el comienzo, por eso lo de un botón para borrar la pantalla, ya que lo que interesa es mostrar la nueva información, no que lo repita todo de nuevo. Pero ya te digo no sé cómo funcionan, si no sirve lo del TAB pues lo quito.

Por experiencia, con lo del FTP acabamos antes, pero si te animas estos son los archivos:

Web principal que contiene los 3 frames:
http://jbacteria.retrolandia.net/caad.html

Frame de la izquierda, lista de juegos:
http://jbacteria.retrolandia.net/caadgames.html

Frame central por defecto, carga el juego Don Quijote (se puede cambiar):
http://jbacteria.retrolandia.net/48s?donquijo.tap

Frame derecho:
http://jbacteria.retrolandia.net/right.html

Archivos que componen el emulador:
http://jbacteria.retrolandia.net/48s.html
http://jbacteria.retrolandia.net/_48s.rom

Icono que enlaza a la ficha de WOS:
http://jbacteria.retrolandia.net/wos.png

Los juegos hay que subirlos en formato TAP a la carpeta games, por ejemplo aquí tienes el tap de "El Quijote".
http://jbacteria.retrolandia.net/games/donquijo.tap
Imagen

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por antoniovillena » Jue Sep 18, 2014 11:40 pm

Por cierto he pasado a TAP el juego Mega-Corp (que estaba sólo en tzx) y de paso lo he comprimido porque ocupaba toda la RAM. Aquí están los archivos por si queréis añadirlos a vuestra colección:

http://jbacteria.retrolandia.net/games/megacor1.tap
http://jbacteria.retrolandia.net/games/megacor2.tap
Imagen

Avatar de Usuario
chernandezba
Sabreman
Mensajes: 408
Registrado: Mié Oct 17, 2007 5:26 pm

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por chernandezba » Vie Sep 19, 2014 4:07 pm

Como curiosidad... he estado trasteando con otras aventuras conversacionales y me encuentro con una, que pese a usar 42 caracteres y 32 simultaneamente, como el Hobbit, en las dos usa RST10H para imprimir:

http://www.worldofspectrum.org/infoseek ... id=0006284

Esto me suena a las rutinas de 42-51-64 caracteres que venian con la microhobby, que se quedaban residentes en memoria y funcionaban con el BASIC directamente, pues cambiaban no se que direccion de las variables del BASIC y hacían que la RST 10H apuntase a otro sitio, y ahí escribian en 42 o mas columnas en pantalla

Saludos
César
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por antoniovillena » Vie Sep 19, 2014 5:17 pm

chernandezba escribió:Como curiosidad... he estado trasteando con otras aventuras conversacionales y me encuentro con una, que pese a usar 42 caracteres y 32 simultaneamente, como el Hobbit, en las dos usa RST10H para imprimir:

http://www.worldofspectrum.org/infoseek ... id=0006284

Esto me suena a las rutinas de 42-51-64 caracteres que venian con la microhobby, que se quedaban residentes en memoria y funcionaban con el BASIC directamente, pues cambiaban no se que direccion de las variables del BASIC y hacían que la RST 10H apuntase a otro sitio, y ahí escribian en 42 o mas columnas en pantalla

Saludos
César


Es cierto. Sería cuestión de probar los juegos individualmente y parchear los que no tengan salida por rst 10h. Si quieres ayudar pásate por el otro hilo, el de caad.es, que ya me he registrado.
Imagen

Avatar de Usuario
chernandezba
Sabreman
Mensajes: 408
Registrado: Mié Oct 17, 2007 5:26 pm

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por chernandezba » Vie Sep 19, 2014 5:39 pm

antoniovillena escribió:
chernandezba escribió:Como curiosidad... he estado trasteando con otras aventuras conversacionales y me encuentro con una, que pese a usar 42 caracteres y 32 simultaneamente, como el Hobbit, en las dos usa RST10H para imprimir:

http://www.worldofspectrum.org/infoseek ... id=0006284

Esto me suena a las rutinas de 42-51-64 caracteres que venian con la microhobby, que se quedaban residentes en memoria y funcionaban con el BASIC directamente, pues cambiaban no se que direccion de las variables del BASIC y hacían que la RST 10H apuntase a otro sitio, y ahí escribian en 42 o mas columnas en pantalla

Saludos
César


Es cierto. Sería cuestión de probar los juegos individualmente y parchear los que no tengan salida por rst 10h. Si quieres ayudar pásate por el otro hilo, el de caad.es, que ya me he registrado.


Hola

Ya me registré en caad aunque he ido siguiendo mas este foro.

Yo he estado trasteando con unas cuantas aventuras de texto y las que no usan rst10h, se puede detectar de manera bastante fácil, que ya he pillado práctica, en qué dirección está la rutina de impresión de carácter.. Algunas he hecho que mi emulador detecte directamente cuales son, y detecta cuando se llama a las rutinas de caracter. Para otras desconocidas, he habilitado unos métodos de autodetección siguiendo una serie de patrones en dichas rutinas...
Le echaré un vistazo al foro de caad, aunque ya te digo que, en mi emulador, las que no detecta por si solo, es fácil agregar las nuevas...

Saludos
César
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por antoniovillena » Vie Sep 19, 2014 7:22 pm

Ok. A mí no me importa hablarlo por este foro. Entonces hay un método automático y otro manual para cuando el automático falla. Supongo que para que funcione el manual hay que parchear el juego. Estaría bien que ambos hiciéramos el mismo tipo de parche para así compartir la lista de juegos parcheados. De momento estamos haciendo una lista de juegos, en una fase posterior detectaremos los que fallan y será cuando necesite hacer parches en los juegos.
Imagen

Avatar de Usuario
chernandezba
Sabreman
Mensajes: 408
Registrado: Mié Oct 17, 2007 5:26 pm

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por chernandezba » Sab Sep 20, 2014 12:45 am

antoniovillena escribió:Ok. A mí no me importa hablarlo por este foro. Entonces hay un método automático y otro manual para cuando el automático falla. Supongo que para que funcione el manual hay que parchear el juego. Estaría bien que ambos hiciéramos el mismo tipo de parche para así compartir la lista de juegos parcheados. De momento estamos haciendo una lista de juegos, en una fase posterior detectaremos los que fallan y será cuando necesite hacer parches en los juegos.

Hola
No hay que hacer ningún parche. Simplemente se trata de encontrar donde esta la rutina de impresión de texto del juego y hacer que el emulador detecte cuando se entre ahí e imprimir el carácter como texto, que siempre entra en el registro A, de la misma manera que al saltar a la dirección 10H

Saludos
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
chernandezba
Sabreman
Mensajes: 408
Registrado: Mié Oct 17, 2007 5:26 pm

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por chernandezba » Sab Sep 20, 2014 9:35 am

Hola

En cuanto a la lista de juegos, Antonio, yo como decía he detectado algunos. Quiero decir, se en que dirección esta la rutina de impresión de carácter. Puedes coger esta lista de direcciones de mi emulador y la incorporas al tuyo. Simplemente le tienes que meter un trap a la dirección que tenga el juego activo y lees el carácter del registro A, es muy simple
Yo no tengo mucho tiempo pero estoy dispuesto a colaborar como os dije. Estuve probando primero los de aventuras ad (42 columnas) y luego los de WOS, empezando por la lista que hay de los mejores. Mirando sobretodo los que no eran de 32 caracteres. Creo que en el caad se concentran mas en juegos en español
Estoy igualmente pensando en un método casi automático de detección de la dirección de la rutina, para que sea cuestión de segundos encontrarla ( ahora me lleva un máximo de unos 20 minutos aprox). Con eso será tan fácil como seleccionar la opción de detección y lo encontrara para cualquier juego (o esa es mi idea ;) )
Cualquier duda que tengas sobre todo esto podéis contactar conmigo sin problemas

Saludos
Cesar
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por antoniovillena » Dom Sep 21, 2014 12:43 am

Vale, ya he visto el código:

http://sourceforge.net/p/zesarux/code/c ... out.c#l505

Veo que haces el parche en el emulador, mi idea era hacer el parche en el juego pero vamos que al final es lo mismo. Yo de momento no me he puesto con esto, tengo algunos juegos con carga custom o reubicada que pasar a TAP hasta completar la lista de Uto. En el momento en que me ponga y encuentre alguna rutina te la paso por aquí. Gracias por compartir tus progresos.
Imagen

Avatar de Usuario
chernandezba
Sabreman
Mensajes: 408
Registrado: Mié Oct 17, 2007 5:26 pm

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por chernandezba » Lun Sep 22, 2014 11:25 am

antoniovillena escribió:Vale, ya he visto el código:

http://sourceforge.net/p/zesarux/code/c ... out.c#l505

Veo que haces el parche en el emulador, mi idea era hacer el parche en el juego pero vamos que al final es lo mismo. Yo de momento no me he puesto con esto, tengo algunos juegos con carga custom o reubicada que pasar a TAP hasta completar la lista de Uto. En el momento en que me ponga y encuentre alguna rutina te la paso por aquí. Gracias por compartir tus progresos.



Hola

Bueno, yo no lo veo como un parche en el emulador.
Por una parte, tengo que el emulador captura cuando se salta a la dirección 10H (el rst normal a la ROM). Y luego también captura otras dos direcciones (second trap y third trap) para las cuales se imprime texto en pantalla... para aquellos juegos que no usan rst 10h. Normalmente sólo con second trap es suficiente, pero por ejemplo el Hobbit usa dos direcciones de impresión de texto
Aquí lo complicado es saber ese second trap. Si miras el archivo sslfunctions.c, hacia el final, detecto la cinta cargada y si son algunas conocidas (Cozumel, jabato, etc) directamente establezco el valor de second trap y ya se muestra el texto en consola correctamente
Luego hay otro método, y es que esos conocidos, utilizan lógicamente una rutina de impresión de texto, es lo que ves en los patterns del archivo scr_stdout.c que me decías. Todos los juegos de AD utilizan la misma rutina. Por tanto, si hay algun otro juego, diferente de los que tengo identificado, pero que utiliza la misma rutina de los de AD, el emulador la detectará y establecerá el valor del second trap

Y luego he añadido otro método totalmente automático, y es el que comentaba el otro dia, que no hace falta lista de juegos conocidos, y para aquellos que no usan RST 10H. Lo que hago aquí es:

1) Busco desde qué direcciones (registro PC) se está escribiendo al tercer tercio de pantalla (la zona inferior). Establezco un rango de direcciones por donde podrá estar dicha rutina. Lo que hago es que ese rango puede estar unas 500 direcciones por debajo o por encima del registro PC leído. Esto lo voy haciendo hasta que he leido unas cuantas (unas 2500 aprox)

2) Cuando ya tengo un rango definido por donde puede estar dicha rutina de impresión, busco un pattern simple (que he visto en casi todas las rutinas), que en mi emulador llamo "Multiply by eight", que esté contenido en dicho rango. El pattern es:
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,DE o ADD HL,BC
Esto lo que hace es multiplicar el valor de HL *8 y sumar un offset, que puede ser el registro DE o BC, que hará que HL apunte a la tabla de caracteres, exactamente al principio del sprite del carácter a imprimir
Previamente a esto se suele leer el registro A (el caracter a imprimir), pasarlo al registro L, y establecer el H con 0

He probado unos cuantos juegos y para la mayoría se cumple esto

En el momento que el emulador encuentra ese pattern, establece el valor de second_trap y listo... ya tenemos salida de texto, sin conocer el juego previamente
Aqui hay una particularidad, y es que a veces esa rutina tiene esta instrucción previa:

SUB 32

Para establecer que el principio de su tabla de caracteres cuenta desde el caracter 32. Esto no sucede en todas, en algunos se le suma un offset por debajo de la tabla, para que al sumar HL con DE, apunte a donde toca.
De todas maneras, el emulador también detecta ese caso de manera muy simple: en los casos que hay que sumar, tendremos que los caracteres estarán restados 32, y por ejemplo el caracter espacio (32) se convierte en 0, y las minusculas saldrian como mayusculas... lo que hago aqui es que si leo un caracter 0, cosa que podria indicar que realmente es un espacio (caracter 32),, activo un flag que indico que hay que sumar siempre 32. Y listo


Resumiendo, que con este método automático funcionan casi todas. Y las que no funcionan, se puede localizar de manera relativamente fácil

Saludos
César
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
chernandezba
Sabreman
Mensajes: 408
Registrado: Mié Oct 17, 2007 5:26 pm

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por chernandezba » Lun Abr 20, 2015 2:59 pm

Siguiendo este hilo de hace unos meses, he publicado un video donde se muestra dicho sistema de mi emulador en acción:

https://www.youtube.com/watch?v=j2n0wQnQUBc

Mas información aquí:

foro.caad.es/viewtopic.php?f=9&t=5677&p=71036#p71036

Saludos
César
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
chernandezba
Sabreman
Mensajes: 408
Registrado: Mié Oct 17, 2007 5:26 pm

Re: Para autores de emuladores: ¿Conversacionales para ciego

Mensaje por chernandezba » Jue Abr 23, 2015 12:48 pm

Hola.

He estado de nuevo haciendo pruebas de scripts de speech en el emulador, ha mejorado bastante.
He subido un vídeo de ejemplo:

https://www.youtube.com/watch?v=P1zAMtOSa6g

Saludos
César
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados