Nueva versión emulador ZEsarUX 1.0
Moderador: Sir Cilve Sinclair
- chernandezba
- Sabreman
- Mensajes: 408
- Registrado: Mié Oct 17, 2007 5:26 pm
Nueva versión emulador ZEsarUX 1.0
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
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
- 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
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á
Por lo demás va bien, pero como hay funciones que ni tocare no puedo opinar mas allá
- chernandezba
- Sabreman
- Mensajes: 408
- Registrado: Mié Oct 17, 2007 5:26 pm
Re: Nueva versión emulador ZEsarUX 1.0
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
- 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
Pues todo el audio.
Te dejo un vídeo https://dl.dropboxusercontent.com/u/58286032/test2.webm
Te dejo un vídeo https://dl.dropboxusercontent.com/u/58286032/test2.webm
- chernandezba
- Sabreman
- Mensajes: 408
- Registrado: Mié Oct 17, 2007 5:26 pm
Re: Nueva versión emulador ZEsarUX 1.0
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
-
- Freddy Hardest
- Mensajes: 619
- Registrado: Vie Dic 28, 2007 2:14 pm
- Ubicación: Valencia
- Contactar:
Re: Nueva versión emulador ZEsarUX 1.0
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
Revista del ejército EE.UU. PS, agosto 1993.
Emulador JSpeccy
ZXBaremulator
- 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
Se que tarea fácil no es, por eso voy reportando, al menos así ayudo un poco
- chernandezba
- Sabreman
- Mensajes: 408
- Registrado: Mié Oct 17, 2007 5:26 pm
Re: Nueva versión emulador ZEsarUX 1.0
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
En el caso del juego Misco Jones, cual era el problema con tu emulador?
Saludos
César
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
En el caso del juego Misco Jones, cual era el problema con tu emulador?
Saludos
César
-
- Freddy Hardest
- Mensajes: 619
- Registrado: Vie Dic 28, 2007 2:14 pm
- Ubicación: Valencia
- Contactar:
Re: Nueva versión emulador ZEsarUX 1.0
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
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
Revista del ejército EE.UU. PS, agosto 1993.
Emulador JSpeccy
ZXBaremulator
- chernandezba
- Sabreman
- Mensajes: 408
- Registrado: Mié Oct 17, 2007 5:26 pm
Re: Nueva versión emulador ZEsarUX 1.0
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
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
-
- Freddy Hardest
- Mensajes: 619
- Registrado: Vie Dic 28, 2007 2:14 pm
- Ubicación: Valencia
- Contactar:
Re: Nueva versión emulador ZEsarUX 1.0
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
Revista del ejército EE.UU. PS, agosto 1993.
Emulador JSpeccy
ZXBaremulator
- chernandezba
- Sabreman
- Mensajes: 408
- Registrado: Mié Oct 17, 2007 5:26 pm
Re: Nueva versión emulador ZEsarUX 1.0
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
-
- Freddy Hardest
- Mensajes: 619
- Registrado: Vie Dic 28, 2007 2:14 pm
- Ubicación: Valencia
- Contactar:
Re: Nueva versión emulador ZEsarUX 1.0
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
Revista del ejército EE.UU. PS, agosto 1993.
Emulador JSpeccy
ZXBaremulator
- chernandezba
- Sabreman
- Mensajes: 408
- Registrado: Mié Oct 17, 2007 5:26 pm
Re: Nueva versión emulador ZEsarUX 1.0
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
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados