Nueva version emulador ZEsarUX-4.1
- Hark0
- Mensajes: 683
- Registrado: 27 Sep 2015, 00:31
- Ubicación: Cornellà de Llobregat - BCN
- Contactar:
Re: Nueva version emulador ZEsarUX-4.1
Collons nen!!!
No paras!!!
No paras!!!
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
Re: Nueva version emulador ZEsarUX-4.1
Carajo! unas cuantas síchernandezba escribió:Unas cuantasUto escribió:
Pero bueno,lo dicho, es sugerencia, supongo que tienes muchas cosas en cola aún
https://sourceforge.net/p/zesarux/code/ ... /tree/TODO
Re: Nueva version emulador ZEsarUX-4.1
Hola!
Se me ha ocurrido probar la emulación de Kempston Mouse con ZesarUX, pero algo debo hacer mal. Como tengo ni idea de como va, me puse a buscar por internet, hasta llegar a esto:
http://www.benophetinternet.nl/hobby/kmt.htm
Ahí hay un apartado de "reading PS/2 mouse", que habla de tres puertos, pero el caso es que ZesarUX, con emulación de Zx-Uno activada, DivMMC y kempston Mouse, solo devuelve 0 en esos tres puertos.
Nota: se que puedo usar los registros de ZX-UNo para leer el PS/2 a pelo, pero la idea era leerlo como un Kempston mouse.
¿Se me pasa algo por alto?
Se me ha ocurrido probar la emulación de Kempston Mouse con ZesarUX, pero algo debo hacer mal. Como tengo ni idea de como va, me puse a buscar por internet, hasta llegar a esto:
http://www.benophetinternet.nl/hobby/kmt.htm
Ahí hay un apartado de "reading PS/2 mouse", que habla de tres puertos, pero el caso es que ZesarUX, con emulación de Zx-Uno activada, DivMMC y kempston Mouse, solo devuelve 0 en esos tres puertos.
Nota: se que puedo usar los registros de ZX-UNo para leer el PS/2 a pelo, pero la idea era leerlo como un Kempston mouse.
¿Se me pasa algo por alto?
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nueva version emulador ZEsarUX-4.1
Hola
Ahora no estoy seguro, pero creo que los puertos de divmmc entran en conflicto con el kempston mouse. Por tanto, antes de hacer pruebas, desactiva el divmmc, luego activa la emulación de kempston mouse desde hardware settings (no viene activada por defecto), y si quieres prueba los programas que hay en la carpeta /media/spectrum/mouse/ que sí que funcionan
Saludos
César
Ahora no estoy seguro, pero creo que los puertos de divmmc entran en conflicto con el kempston mouse. Por tanto, antes de hacer pruebas, desactiva el divmmc, luego activa la emulación de kempston mouse desde hardware settings (no viene activada por defecto), y si quieres prueba los programas que hay en la carpeta /media/spectrum/mouse/ que sí que funcionan
Saludos
César
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nueva version emulador ZEsarUX-4.1
Por cierto los puertos de kempston mouse no son valores fijos, aunque sí que hay unos valores típicos, pero debe responder a cualquier puerto que siga el estándard, que puedes ver en la linea 4885 del archivo operaciones.c de mi código:
//IN 64479 - return X axis (0-255)
//IN 65503 - return Y axis (0-255)
//IN 64223 - return button status
//D0 - right button
//D1 - left button
//D2-D7 - not used
//From diagram ports
//X-Axis = port 64479 xxxxx011 xx0xxxxx
//Y-Axis = port 65503 xxxxx111 xx0xxxxx
//BUTTONS = port 64223 xxxxxx10 xx0xxxxx
Viendo el link que has pasado y los puertos que comenta:
"...and the PS/2 mouse can be read using ports 15327, 16351 and 15071."
echando un vistazo rápido a esos puertos y los bits implicados deben responder correctamente a las lecturas del kempston.
Yo probaría primero con las demos que te he comentado, si no funciona, desactiva el divmmc, y debería responder.
Y luego ya si quieres puedes hacer lecturas de los puertos manualmente
Saludos
//IN 64479 - return X axis (0-255)
//IN 65503 - return Y axis (0-255)
//IN 64223 - return button status
//D0 - right button
//D1 - left button
//D2-D7 - not used
//From diagram ports
//X-Axis = port 64479 xxxxx011 xx0xxxxx
//Y-Axis = port 65503 xxxxx111 xx0xxxxx
//BUTTONS = port 64223 xxxxxx10 xx0xxxxx
Viendo el link que has pasado y los puertos que comenta:
"...and the PS/2 mouse can be read using ports 15327, 16351 and 15071."
echando un vistazo rápido a esos puertos y los bits implicados deben responder correctamente a las lecturas del kempston.
Yo probaría primero con las demos que te he comentado, si no funciona, desactiva el divmmc, y debería responder.
Y luego ya si quieres puedes hacer lecturas de los puertos manualmente
Saludos
Re: Nueva version emulador ZEsarUX-4.1
Vale, funciona perfectamente, había un bug en el programa que hice para probarlo, pero funciona bien. Con DivMMC activo también, aunque he probado DivMMC sobre un Spectrum normal, no sobre ZX-Uno
Re: Nueva version emulador ZEsarUX-4.1
Hola!
Me he encontrado con una "incompatibilidad" de ZesarUX con ZX-Uno, que además creo que es intencionada, pero que creo que a la larga puede afectar a aplicaciones. Se trata del COREID: en ZesarUX el COREID devuelto es "ZesarUX Z80" mientras que un ZxUno real devuelve un core que indica efectivamente el número de versión del core y fecha del mismo.
Entiendo que al final es un compromiso, pero ahora mismo ZesarUX soporta - en la medida que un emulador puede - las funcionalidades del core 22y por tanto creo que debería reportar dicho COREID.
¿Por qué? Porque puede haber programas o juegos que sabiendo que dependen de una funcionalidad soportada a partir del core X, comprueben el COREID para ver si estamos en una versión igual o superior.
Es decir, imaginad que a partir del CORE 40 aparece un nuevo modo de video y hay un juego que lo utiliza. Lo lógico sería que el juego comprobara que hay core 40 o más, y sino diga que tienes que actualizar el ZX-Uno. Otra opción es lanzarlo y que no funcione, pero es menos profesional.
Algo parecido es lo que iba a hacer con ZXUC en el momento de meterle soporte de las nuevas funcionalidades del core 23, detectar el COREID y solo mostrar las nuevas funcionalidades si el core es igual o mayor a 23. Así según el core que tienes te salen las opciones que puedes cambiar. Con ZesarUX, no puedo hacerlo, o tendría que hacer la ñapa de que si detecto "ZesarUX Z80" considerar que es core 22, pero entonces se queda en core 22 para siempre.
¿Qué opinas César?
Me he encontrado con una "incompatibilidad" de ZesarUX con ZX-Uno, que además creo que es intencionada, pero que creo que a la larga puede afectar a aplicaciones. Se trata del COREID: en ZesarUX el COREID devuelto es "ZesarUX Z80" mientras que un ZxUno real devuelve un core que indica efectivamente el número de versión del core y fecha del mismo.
Entiendo que al final es un compromiso, pero ahora mismo ZesarUX soporta - en la medida que un emulador puede - las funcionalidades del core 22y por tanto creo que debería reportar dicho COREID.
¿Por qué? Porque puede haber programas o juegos que sabiendo que dependen de una funcionalidad soportada a partir del core X, comprueben el COREID para ver si estamos en una versión igual o superior.
Es decir, imaginad que a partir del CORE 40 aparece un nuevo modo de video y hay un juego que lo utiliza. Lo lógico sería que el juego comprobara que hay core 40 o más, y sino diga que tienes que actualizar el ZX-Uno. Otra opción es lanzarlo y que no funcione, pero es menos profesional.
Algo parecido es lo que iba a hacer con ZXUC en el momento de meterle soporte de las nuevas funcionalidades del core 23, detectar el COREID y solo mostrar las nuevas funcionalidades si el core es igual o mayor a 23. Así según el core que tienes te salen las opciones que puedes cambiar. Con ZesarUX, no puedo hacerlo, o tendría que hacer la ñapa de que si detecto "ZesarUX Z80" considerar que es core 22, pero entonces se queda en core 22 para siempre.
¿Qué opinas César?
Re: Nueva version emulador ZEsarUX-4.1
Gracias chernandezba, vaya curro!!
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nueva version emulador ZEsarUX-4.1
Buena pregunta...
La verdad es que cuando agregué el coreid, inicialmente el identificador era mucho mas largo y provocaba extraños "efectos visuales" tanto en el arranque de la bios como en zxunocfg. Luego acorté el nombre y ya se corrigió.
Tienes razón con esto, si no indico algún número de versión que se corresponda con el core del zx-uno no tienes manera de saber qué características del zx-uno implementa. Creo igualmente que debería retornar el texto "ZEsarUX" en parte del mensaje para que el programa que lo detecte sepa que está en emulación y no en máquina real. Quizá algo así como "ZEsarUX T22" seria algo razonable.
Eso sí, debería haber un historial de cambios (que no se si está) con la relación de versiones del core del zx-uno y las características que implementa. Porque por ejemplo he agregado recientemente el bit "DISD" del registro devcontrol, pero no se a partir de qué versión del core lo agregaron. Esto es importante para que yo establezca el texto del Coreid de manera coherente según lo que emulo.
Por otra parte, sólo remarcar aquí, para que no haya confusión (que también comento en el FAQ):
ZEsarUX no emula la FPGA del zx-uno. ZEsarUX emula lo siguiente cuando seleccionas máquina zx-uno:
-CPU Z80
-Normal hardware de un Spectrum +2A: Audio Chip, Beeper, Tape, etc...
-Memoria adicional del ZX-Uno
-SPI Flash
-DivMMC
-256 registros internos del zx-uno: Masterconf, Mastermapper, etc
-Otras características adicionales: ULAplus...
Por tanto no es posible probar diferentes "cores" como tal que se portan a zx-uno, por ejemplo no puedes probar el core de master system en ZEsarUX
Saludos
La verdad es que cuando agregué el coreid, inicialmente el identificador era mucho mas largo y provocaba extraños "efectos visuales" tanto en el arranque de la bios como en zxunocfg. Luego acorté el nombre y ya se corrigió.
Tienes razón con esto, si no indico algún número de versión que se corresponda con el core del zx-uno no tienes manera de saber qué características del zx-uno implementa. Creo igualmente que debería retornar el texto "ZEsarUX" en parte del mensaje para que el programa que lo detecte sepa que está en emulación y no en máquina real. Quizá algo así como "ZEsarUX T22" seria algo razonable.
Eso sí, debería haber un historial de cambios (que no se si está) con la relación de versiones del core del zx-uno y las características que implementa. Porque por ejemplo he agregado recientemente el bit "DISD" del registro devcontrol, pero no se a partir de qué versión del core lo agregaron. Esto es importante para que yo establezca el texto del Coreid de manera coherente según lo que emulo.
Por otra parte, sólo remarcar aquí, para que no haya confusión (que también comento en el FAQ):
ZEsarUX no emula la FPGA del zx-uno. ZEsarUX emula lo siguiente cuando seleccionas máquina zx-uno:
-CPU Z80
-Normal hardware de un Spectrum +2A: Audio Chip, Beeper, Tape, etc...
-Memoria adicional del ZX-Uno
-SPI Flash
-DivMMC
-256 registros internos del zx-uno: Masterconf, Mastermapper, etc
-Otras características adicionales: ULAplus...
Por tanto no es posible probar diferentes "cores" como tal que se portan a zx-uno, por ejemplo no puedes probar el core de master system en ZEsarUX
Saludos
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Nueva version emulador ZEsarUX-4.1
Muchas graciasAlki escribió:Gracias chernandezba, vaya curro!!