Nueva versión emulador ZEsarUX 1.0

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

Moderador: Sir Cilve Sinclair

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

Nueva versión emulador ZEsarUX 1.0

Mensaje por chernandezba » Lun May 26, 2014 7:36 pm

Hola

He subido una nueva versión de mi emulador de Spectrum/ZX80/ZX81. Esta es una versión mayor, ya estable, con timing real para todos los modelos y con soporte de color en alta resolución (rainbow) para Spectrum. Se puede descargar, como siempre, en

http://sourceforge.net/projects/zesarux/

La lista de cambios es:

Version 1.0. May, 26th 2014 - Rainbow edition

Contended memory and real timing for Spectrum, ZX80, ZX81
Improved real video display (rainbow) for Spectrum and ZX80/81 (non standard & hi-res modes)
Speeded up Z80 core using 16 bit operations for HL, DE, BC
Added interlace mode
Added hotswap machine option
Added emulation of some other oddities of the Inves Spectrum +: no contended memory, snow in border, colour ula delay, interrupt starts at video display (not at the top of the border)
Added RAM pack emulation of 32 KB and 48 KB to ZX80/81
Added idle bus port emulation
Added option to load and save binary data
Added option to view CPU & ULA registers
Added option to save video file
Improved User Interface: added confirmation to saving operations on menu, showing error messages on menu
Fixed some bugs with AY Chip (high envelope frequency, tone&noise behaviour)


Saludos

César
----

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

Avatar de Usuario
son_link
Jack The Nipper
Mensajes: 123
Registrado: Mar Ene 07, 2014 9:55 pm
Ubicación: Atlantis, Galaxia Pegaso

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por son_link » Mar May 27, 2014 9:15 pm

Aun falta pulir la salida de audio por Pulse. Se sigue oyendo mal, aparte que en las ultimas compilaciones tiene lag, como 1 segundo aprox.
Por lo demás va bien, pero como hay funciones que ni tocare no puedo opinar mas allá
LOAD TAPE ERROR
Imagen

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

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por chernandezba » Mar May 27, 2014 11:50 pm

son_link escribió:Aun falta pulir la salida de audio por Pulse. Se sigue oyendo mal, aparte que en las ultimas compilaciones tiene lag, como 1 segundo aprox.
Por lo demás va bien, pero como hay funciones que ni tocare no puedo opinar mas allá


Hola

El delay que comentas no es normal, en condiciones normales no pasa el cuarto de segundo aprox
Prueba usando los parámetros pulseperiodsize y fifopulsebuffersize
Que sonidos dices que se oyen mal?

Saludos
César
----

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

Avatar de Usuario
son_link
Jack The Nipper
Mensajes: 123
Registrado: Mar Ene 07, 2014 9:55 pm
Ubicación: Atlantis, Galaxia Pegaso

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por son_link » Mié May 28, 2014 12:54 pm

Pues todo el audio.
Te dejo un vídeo https://dl.dropboxusercontent.com/u/58286032/test2.webm
LOAD TAPE ERROR
Imagen

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

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por chernandezba » Mié May 28, 2014 1:07 pm

son_link escribió:Pues todo el audio.
Te dejo un vídeo https://dl.dropboxusercontent.com/u/58286032/test2.webm


Hola

Gracias por el audio. Me imaginaba que me ibas a comentar el sonido de ese juego precisamente ;)
Prueba a escucharlo con Fuse y en las opciones de Sonido, en Speaker Type indícale "Unfiltered". Verás como se parece mucho mas a como se oye en mi emulador

Seguramente tendrá algo que ver con altas frecuencias de sonido con el Speaker; esto no quiere decir que se escuche mal, simplemente no se ajusta exactamente a como se escucharia en un Spectrum real.

Tomo nota de ello

Saludos
César
----

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

zx81
Freddy Hardest
Mensajes: 619
Registrado: Vie Dic 28, 2007 2:14 pm
Ubicación: Valencia
Contactar:

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por zx81 » Mié May 28, 2014 5:33 pm

chernandezba escribió:
son_link escribió:Pues todo el audio.
Te dejo un vídeo https://dl.dropboxusercontent.com/u/58286032/test2.webm


Hola

Gracias por el audio. Me imaginaba que me ibas a comentar el sonido de ese juego precisamente ;)
Prueba a escucharlo con Fuse y en las opciones de Sonido, en Speaker Type indícale "Unfiltered". Verás como se parece mucho mas a como se oye en mi emulador

Seguramente tendrá algo que ver con altas frecuencias de sonido con el Speaker; esto no quiere decir que se escuche mal, simplemente no se ajusta exactamente a como se escucharia en un Spectrum real.

Tomo nota de ello

Saludos
César


No es el único juego con el que hay que pelear de esa forma con el sonido. A mi me tocó la china con el Misco Jones de Radastan. Supongo que gracias a lo que pelee con ese juego, ahora el Sami Troid se escucha razonablemente bien en JSpeccy.

En cualquier caso, 250 ms de retraso en el sonido es muchísimo. No he tenido tiempo de probarlo en el emulador, pero el efecto en un juego como el Arkanoid debe ser bastante raro, porque el golpeo de la bola y el sonido correspondiente estarán demasiado separados.

Entiendo perfectamente los problemas de César con el sonido y hasta me solidarizo con ellos. Nadie se imagina la faena que da conseguir que algo se escuche semidecentemente.
Debido al fallo de un mecanismo, el lanzagranadas M203 se te podía disparar cuando menos lo esperaras, lo que te habría hecho bastante impopular entre lo que quedara de tu unidad.
Revista del ejército EE.UU. PS, agosto 1993.

Emulador JSpeccy
ZXBaremulator

Avatar de Usuario
son_link
Jack The Nipper
Mensajes: 123
Registrado: Mar Ene 07, 2014 9:55 pm
Ubicación: Atlantis, Galaxia Pegaso

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por son_link » Mié May 28, 2014 9:59 pm

Se que tarea fácil no es, por eso voy reportando, al menos así ayudo un poco
LOAD TAPE ERROR
Imagen

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

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por chernandezba » Mié May 28, 2014 11:20 pm

Hola

Gracias a los dos por las sugerencias.

El delay no es de cuarto de segundo, he verificado los valores por defecto para pulse y el delay es de 100 ms

Yo supongo que, como decía, el comportamiento del Speaker a altas frecuencias debe necesitar un filtro o algo parecido.... Al final me va a costar mas emular el speaker que el chip AY :P

En el caso del juego Misco Jones, cual era el problema con tu emulador?

Saludos

César
----

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

zx81
Freddy Hardest
Mensajes: 619
Registrado: Vie Dic 28, 2007 2:14 pm
Ubicación: Valencia
Contactar:

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por zx81 » Jue May 29, 2014 9:44 am

chernandezba escribió:Hola

Gracias a los dos por las sugerencias.

El delay no es de cuarto de segundo, he verificado los valores por defecto para pulse y el delay es de 100 ms

Yo supongo que, como decía, el comportamiento del Speaker a altas frecuencias debe necesitar un filtro o algo parecido.... Al final me va a costar mas emular el speaker que el chip AY :P

En el caso del juego Misco Jones, cual era el problema con tu emulador?

Saludos

César


Pues un poco al estilo del Sami Troid, que no sé qué demonios hacen con el beeper que se generan frecuencias que provocan chirridos molestos. Lo malo de poner muchos filtros es que también deja de sonar a Spectrum.

No te fíes con el AY que es más de lo mismo.Cuando crees que ya lo tienes, te encuentras con cosas que te joroban la idea de que has acabado con él. Se me ocurren como ejemplos las voces digitalizadas del Robocop, la música del Carlos Michelis, algún efecto de la melodía principal del juego Genesis: dawn of a new day, la melodía principal del Deactivators 128k, la melodía principal del Glider Rider, la del Ghouls'n Ghosts 128k, los efectos de sonido durante el juego de Robocop 2...

Asegurarse bien de que todos los efectos de envolventes se generan bien es una pequeña pesadilla.

Y por cierto, llegué a probar anoche el Arkanoid en tu emulador. La versión original, que hace uso del bus flotante, no carga desde el TZX (bloque TZX no reconocido) y si lo cargas desde un snap Z80 se cuelga. Y la versión Hit Squad, que es la que funciona bien en los +2a / +3, no muestra la bola con lo que jugar es imposible. Y detrás de este error se encuentra una putada que te va a dar faena de la wapa. Misma razón por la que no se ve bien la Shock Megademo.
Debido al fallo de un mecanismo, el lanzagranadas M203 se te podía disparar cuando menos lo esperaras, lo que te habría hecho bastante impopular entre lo que quedara de tu unidad.
Revista del ejército EE.UU. PS, agosto 1993.

Emulador JSpeccy
ZXBaremulator

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

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por chernandezba » Jue May 29, 2014 5:42 pm

zx81 escribió:
chernandezba escribió:Hola

Gracias a los dos por las sugerencias.

El delay no es de cuarto de segundo, he verificado los valores por defecto para pulse y el delay es de 100 ms

Yo supongo que, como decía, el comportamiento del Speaker a altas frecuencias debe necesitar un filtro o algo parecido.... Al final me va a costar mas emular el speaker que el chip AY :P

En el caso del juego Misco Jones, cual era el problema con tu emulador?

Saludos

César


Pues un poco al estilo del Sami Troid, que no sé qué demonios hacen con el beeper que se generan frecuencias que provocan chirridos molestos. Lo malo de poner muchos filtros es que también deja de sonar a Spectrum.

No te fíes con el AY que es más de lo mismo.Cuando crees que ya lo tienes, te encuentras con cosas que te joroban la idea de que has acabado con él. Se me ocurren como ejemplos las voces digitalizadas del Robocop, la música del Carlos Michelis, algún efecto de la melodía principal del juego Genesis: dawn of a new day, la melodía principal del Deactivators 128k, la melodía principal del Glider Rider, la del Ghouls'n Ghosts 128k, los efectos de sonido durante el juego de Robocop 2...

Asegurarse bien de que todos los efectos de envolventes se generan bien es una pequeña pesadilla.

Y por cierto, llegué a probar anoche el Arkanoid en tu emulador. La versión original, que hace uso del bus flotante, no carga desde el TZX (bloque TZX no reconocido) y si lo cargas desde un snap Z80 se cuelga. Y la versión Hit Squad, que es la que funciona bien en los +2a / +3, no muestra la bola con lo que jugar es imposible. Y detrás de este error se encuentra una putada que te va a dar faena de la wapa. Misma razón por la que no se ve bien la Shock Megademo.



Gracias. Probaré esos que me comentas.
Lo de las voces de Robocop supongo que es lo mismo que las voces del chase hq (samplear cambiando solo el volumen del AY). Esto funciona
Robocop2, esto funciona en la ultima versión (la 1.0.1)
La shock megademo y/o arkanoid funcionan bien, debes habilitar Real Video, tanto para que se vean bien (modo hi-res para color y border) como para que funcione el bus flotante. La faena de la wapa ya la tengo hecha ;)

Saludos
----

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

zx81
Freddy Hardest
Mensajes: 619
Registrado: Vie Dic 28, 2007 2:14 pm
Ubicación: Valencia
Contactar:

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por zx81 » Jue May 29, 2014 7:07 pm

chernandezba escribió:
Gracias. Probaré esos que me comentas.
Lo de las voces de Robocop supongo que es lo mismo que las voces del chase hq (samplear cambiando solo el volumen del AY). Esto funciona
Robocop2, esto funciona en la ultima versión (la 1.0.1)
La shock megademo y/o arkanoid funcionan bien, debes habilitar Real Video, tanto para que se vean bien (modo hi-res para color y border) como para que funcione el bus flotante. La faena de la wapa ya la tengo hecha ;)

Saludos


Cierto, aunque la Shock Megademo aún muestra un par de columnas consecutivas fuera de sitio, justo a la derecha de la 'S' en la segunda parte de la demo. También se muestra un defecto similar en la Overscan Demo.

Lo que no veo es la razón para que eso no esté activado por defecto, supongo que por el tema del consumo de CPU. Tener que saber qué juegos hacen uso del bus flotante o llegar a la conclusión de que un juego no funciona por eso no es muy intuitivo y el bus flotante no debería ser costoso de emular.
Debido al fallo de un mecanismo, el lanzagranadas M203 se te podía disparar cuando menos lo esperaras, lo que te habría hecho bastante impopular entre lo que quedara de tu unidad.
Revista del ejército EE.UU. PS, agosto 1993.

Emulador JSpeccy
ZXBaremulator

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

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por chernandezba » Jue May 29, 2014 8:16 pm

zx81 escribió:
chernandezba escribió:
Gracias. Probaré esos que me comentas.
Lo de las voces de Robocop supongo que es lo mismo que las voces del chase hq (samplear cambiando solo el volumen del AY). Esto funciona
Robocop2, esto funciona en la ultima versión (la 1.0.1)
La shock megademo y/o arkanoid funcionan bien, debes habilitar Real Video, tanto para que se vean bien (modo hi-res para color y border) como para que funcione el bus flotante. La faena de la wapa ya la tengo hecha ;)

Saludos


Cierto, aunque la Shock Megademo aún muestra un par de columnas consecutivas fuera de sitio, justo a la derecha de la 'S' en la segunda parte de la demo. También se muestra un defecto similar en la Overscan Demo.

Lo que no veo es la razón para que eso no esté activado por defecto, supongo que por el tema del consumo de CPU. Tener que saber qué juegos hacen uso del bus flotante o llegar a la conclusión de que un juego no funciona por eso no es muy intuitivo y el bus flotante no debería ser costoso de emular.



Si, efectivamente. La Shock Megademo no se ve perfecta, esas dos columnas van fuera de "color"; y en la overscan , en la primera línea, salen unos 8 pixeles con color diferente del resto. Esto también sucede en demos que usan los algoritmos Nirvana o Bifrost. Realmente el método que uso no es perfecto, se debería actualizar cada color en cada t-estado de la cpu, pero para que no sea tan lento, lo hago al final de cada instrucción, y debe ser por eso que no se ve del todo bien.

Si, efectivamente no lo activo por defecto porque consume mas CPU. El tema del bus flotante depende del realvideo, dado que éste retorna el valor que lee la ula. Si no está activo realvideo, el valor que retorna el bus flotante es indeterminado (variable char sin inicializar)
Estaba pensando en alguna rutina de inicialización que detecte si la cpu es "rápida" lo active. Por otra parte, si te fijas al compilar, necesita las librerías ssl. Estas sólo las uso para calcular los md5 de los .tap, .z80 , etc que cargas. Si el md5 es conocido, y por tanto es conocido el programa que cargas, se activan determinadas opciones , entre ellas el realvideo. Prueba la shock megademo que hay incluida en el mismo emulador y verás como se activa por si solo el realvideo. Esta autodetección quizá no están importante en Spectrum como para el ZX80/81, donde la emulación de la pantalla es mas compleja y tengo que hacer uso de varios "trucos" que se activan según la cinta que cargues

Gracias por tus sugerencias

Saludos

César
----

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

zx81
Freddy Hardest
Mensajes: 619
Registrado: Vie Dic 28, 2007 2:14 pm
Ubicación: Valencia
Contactar:

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por zx81 » Jue May 29, 2014 9:04 pm

chernandezba escribió:
Si, efectivamente. La Shock Megademo no se ve perfecta, esas dos columnas van fuera de "color"; y en la overscan , en la primera línea, salen unos 8 pixeles con color diferente del resto. Esto también sucede en demos que usan los algoritmos Nirvana o Bifrost. Realmente el método que uso no es perfecto, se debería actualizar cada color en cada t-estado de la cpu, pero para que no sea tan lento, lo hago al final de cada instrucción, y debe ser por eso que no se ve del todo bien.

Si, efectivamente no lo activo por defecto porque consume mas CPU. El tema del bus flotante depende del realvideo, dado que éste retorna el valor que lee la ula. Si no está activo realvideo, el valor que retorna el bus flotante es indeterminado (variable char sin inicializar)
Estaba pensando en alguna rutina de inicialización que detecte si la cpu es "rápida" lo active. Por otra parte, si te fijas al compilar, necesita las librerías ssl. Estas sólo las uso para calcular los md5 de los .tap, .z80 , etc que cargas. Si el md5 es conocido, y por tanto es conocido el programa que cargas, se activan determinadas opciones , entre ellas el realvideo. Prueba la shock megademo que hay incluida en el mismo emulador y verás como se activa por si solo el realvideo. Esta autodetección quizá no están importante en Spectrum como para el ZX80/81, donde la emulación de la pantalla es mas compleja y tengo que hacer uso de varios "trucos" que se activan según la cinta que cargues

Gracias por tus sugerencias

Saludos

César


En la Overscan me ha parecido ver algún problema más, no solo esa columna, incluso que parte de la pantalla se ha quedado estática. Es una demo chunga de emular, de hecho en la primera pantalla se queja de que "no tienes un Spectrum compatible", de modo que se puede decir que es lo normal al principio. Lo que sí te digo es que no es la más crítica en cuanto a tiempos y yo tampoco lo emulo todo al t-estado.

Lo de los md5 no te servirá con los snapshots, porque cada uno que se genere será distinto a los demás. Para los TAP o TZX te serviría, pero acabarás con una lista engorrosa de actualizar. Si lo haces por la carga de la CPU, con realvideo me pone una CPU al 55% de carga. Pero es que, dado que tu emulador está escrito en C, debería de correr en círculos alrededor del mío, que está en Java ([ironic mode on] y, como todo el mundo sabe, es lento de la pera [ironic mode off]).

Tómatelo con tranquilidad, que esto de escribir un emulador es una carrera de fondo.... ;)
Debido al fallo de un mecanismo, el lanzagranadas M203 se te podía disparar cuando menos lo esperaras, lo que te habría hecho bastante impopular entre lo que quedara de tu unidad.
Revista del ejército EE.UU. PS, agosto 1993.

Emulador JSpeccy
ZXBaremulator

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

Re: Nueva versión emulador ZEsarUX 1.0

Mensaje por chernandezba » Vie May 30, 2014 8:52 am

zx81 escribió:
En la Overscan me ha parecido ver algún problema más, no solo esa columna, incluso que parte de la pantalla se ha quedado estática. Es una demo chunga de emular, de hecho en la primera pantalla se queja de que "no tienes un Spectrum compatible", de modo que se puede decir que es lo normal al principio. Lo que sí te digo es que no es la más crítica en cuanto a tiempos y yo tampoco lo emulo todo al t-estado.

Lo de los md5 no te servirá con los snapshots, porque cada uno que se genere será distinto a los demás. Para los TAP o TZX te serviría, pero acabarás con una lista engorrosa de actualizar. Si lo haces por la carga de la CPU, con realvideo me pone una CPU al 55% de carga. Pero es que, dado que tu emulador está escrito en C, debería de correr en círculos alrededor del mío, que está en Java ([ironic mode on] y, como todo el mundo sabe, es lento de la pera [ironic mode off]).

Tómatelo con tranquilidad, que esto de escribir un emulador es una carrera de fondo.... ;)



Si, lo del overscan y el mensaje de que no tienes un Spectrum compatible... no se por qué será, quizá el comportamiento de las interrupciones...? Lo de que haya una parte de la pantalla inmóvil, pues no lo he detectado, le echaré un vistazo de nuevo

Lo de los md5 como te comentaba lo hice inicialmente para los de ZX80, ZX81, para las cintas que lleva incluidas el emulador.

Lo de la carga de cpu.... ya, es un poco frustrante, porque veo otros hechos en Java que van mas rápidos... Supongo que debería cambiar funciones por macros y definir mas variables estáticas y no dinámicas, pero bueno, no es mi prioridad, si el emulador funciona decentemente en un pc relativamente nuevo (y el que tengo en casa es de hace 7 años y funciona bien) ya me sirve. También puedes probarlo pasándole las opciones de optimización al compilador (export CFLAGS="-O3") y esto hace ganar un 10% aprox. de cpu en mi equipo
Con el primer emulador que hice, que era en MS-DOS y código máquina podías tener mas sensación de optimización de código, porque sabías que si eliminabas una línea de código estabas eliminando exactamente una instrucción de la cpu... En cambio con un programa en C pues la sensación es diferente ;)
----

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 33 invitados