Características importantes de un emulador

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

Moderador: Sir Cilve Sinclair

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

Características importantes de un emulador

Mensaje por zx81 » Lun Mar 15, 2010 2:17 pm

Este mensaje es una especie de sondeo para saber hasta qué punto se le concede importancia a ciertas características de los emuladores. Esto viene a cuento porque no he usando nunca, por poner un ejemplo, la emulación del IF1+Microdrives en ningún emulador. Nunca tuve ese lujo asiático de la época llamados Microdrives, ni tampoco el IF1 o el IF2. Muy pocos programas hacen uso exclusivo de los Microdrives y diría que casi ninguno de la pompósamente llamada red local. Tampoco he usado nunca los soportes de impresora.

Distinta cosa es para un +3 el soporte de la unidad de disquete de 3", porque sí hay bastantes cosas que salieron en disco, así que esto es un must-be. El tema es que hay cosas fáciles de emular (me viene a la cabeza la emulación de una tele en B/N) y que quedan monas. Pero otras, como el IF1 y lo que cuelga de él, es una faena grande que si al final la usan menos de un 5% de los usuarios, es casi como no haberla hecho.

Todo esto pensando, claro está, en un emulador que quieras seguir desarrollando y que solo soporte el 48K. Si hubiera que seguir por alguna parte, probablemente esa parte sería el soporte de 128K y no el del IF1, pero vaya, igual hasta me llevo una sorpresa y la gente lleva a todo trapo los ficheros MDR... :shock:
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
jevilon
Manic Miner
Mensajes: 288
Registrado: Mié Jul 23, 2008 1:15 pm
Ubicación: La Rioja

Re: Características importantes de un emulador

Mensaje por jevilon » Jue Mar 18, 2010 10:05 am

Evidentemente, para un 95% de los usuarios de un emulador de Spectrum sobran cosas como el Multiface, los Interface I y II (salvo por el joystick), Microdrive y un largo etcetera.
Un buen emulador (bajo mi punto de vista), tiene que tener un buen soporte para .z80 .tap .tzx (creo que hoy en dia todos lo tienen), tiene que verse BIEN, con colores lo mas fiel posible al spectrum real (por lo que un filtro scanlines viene perfecto), soporte para Joystick y una fiel emulacion del sistema...

Evidentemente a mi que me gusta "trastear", aunque no tuve ni microdrive, ni multiface ni nada, tan solo el Spectrum pelao con un interface Kempston (que iba cuando queria), pues me gusta probar como funcionaban las cosas aunque sea emuladas

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: Características importantes de un emulador

Mensaje por na_th_an » Jue Mar 18, 2010 11:17 am

Yo opino que, de entrada, hacer nuevos emuladores ya no es necesario. Partiendo de aquí, entiendo que todas esas características se suelen trabajar por los programadores de emuladores exactamente por la misma razón por la que están haciendo el emulador, en primer lugar. Por probar, porque te gusta, como reto, para aprender...

Que no se me malinterprete, me parece absolutamente maravilloso que continuamente salgan nuevos emuladores para diferentes sistemas o simplemente para intentar buscar una funcionalidad distinta, nueva, adaptada, o personalizada, pero con Spin, Spectaculator y Fuse, principalmente, opino que ya no hay una marcada "necesidad" de hacer un emulador, ya que difícilmente podremos encontrar algo en lo que mejorar a los tres principales, que apenas tienen carencias (y las que tienen son muy marginales). Por tanto, tampoco hay una "necesidad" de características que haga que sea más interesante implementar unas que otras. Me parece, desde el punto de vista del desarrollador de emuladores, igual de interesante implementar los microdrives, aunque casi no se usen, que hacerlo con el opus discovery, mucho más empleado por muchos.

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

Re: Características importantes de un emulador

Mensaje por zx81 » Jue Mar 18, 2010 1:43 pm

Muchas gracias a los dos por contestar y por vuestras opiniones.

Lo primero aclarar que no se trata tanto de no implementar ciertas características como de establecer un orden de prioridades en cuanto a qué hacer primero. Y quizá pueda ser más importante, por ejemplo, el soporte de un debugger decente antes que el soporte de los microdrives.

Respecto a la frase de na_th_an quizá debiera haberla realizado de la siguiente forma: hacer nuevos emuladores para Windows, ya no es necesario. De hecho, para Windows te has dejado algunos que creo son muy buenos, como el Specemu de Mark Woodmass. Spectaculator es shareware, lo que no sería necesariamente malo si no tuviéramos antes el (mal) ejemplo de lo que ha terminado pasando con el XZX de Des Herriott y la modificación cerrada que hizo de él Erik Kunze, abandonada ahora por los usuarios y por su propio autor. Spin es también para Windows, así que si es eso lo que usas, miel sobre hojuelas, si no...

Fuse es un excelente emulador (yo lo uso constantemente como comparativa, si mi emulador hace algo distinto de Fuse, es que tengo que arreglar mi emulador) al que empiezas a ver las peguitas en cuanto te sales de Linux. No sé cómo funciona en MacOS-X, pero en Solaris me dió bastantes problemas con el sonido que, además, el autor prefirió no solucionar. Sin olvidar que Fuse está, a nivel de interfaz de usuario, a años luz de cualquier emulador para Windows.

Pero sí, tienes razón en que si hago un emulador es sobre todo por un reto personal, más que por una necesidad perentoria. :)

Quizá formulé mal mi planteamiento en el sentido de lo ya mencionado. La cuestión estaba más relacionada con las prioridades que le da cada usuario a las funcionalidades del emulador.
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
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: Características importantes de un emulador

Mensaje por na_th_an » Vie Mar 19, 2010 1:34 pm

Yo uso Spectaculator, hace todo lo que necesito y como lo necesito, y es bastante más estable que Spin, que se suele colgar bastante a menudo, al menos en mis máquinas. Lo registré en la 6.1 y desde entonces he tenido automáticamente todas las actualizaciones sin pagar ni un céntimo más. Creo que los 20€ que cuesta los vale con creces. No creo que termine siendo ignorado o abandonado, ya que el soporte que te dan es completo, y el tema de que pagando una licencia la tienes para siempre jamás es también muy atractivo. Siempre que he tenido un problema he escrito y he obtenido una solución enseguida. Así da gusto :D

Avatar de Usuario
decicoder
Jack The Nipper
Mensajes: 176
Registrado: Jue Jul 19, 2007 10:37 am

Re: Características importantes de un emulador

Mensaje por decicoder » Dom Mar 21, 2010 1:44 pm

Todavía puede haber caracteristicas novedosas y útiles en un emulador:

Un conversor de ficheros cinta (.tap/.tzx) a ficheros snapshot (.z80).
La idea es cargar un tap/tzx y en el mismo punto donde acabe la carga (cuando todavía no se ha borrado la pantalla de presentación) grabar un snapshot.

Evidentemente para hacer esto no se necesita desarrollar todo un emulador y se podría pensar en un programita exclusivo para eso. Pero ese programita , segun entiendo, debería emular al menos el nucleo del Z80 , la entrada EAR y las rutinas de carga de ROM. Así que el programita entraria dentro de la familia de emuladores de Spectrum.

Sería útil para poder generar ultracargas a partir de ficheros tap y tzx que tienen esquemas de carga no standard. Con k7zx no se pueden convertir tzx's con cargas turbo. Y con el Proyecto Otla en teoria se puede pero es complicado y se necesita tirar de emulador con debuger para manualmente averiguar direcciones de inicio, direccion de ejecución,...
Mejor todavía sería que en lugar de convertir a .Z80 convirtiera a .sbb.
xor a
ld R,a
b1 in f,(c)
jp pe , b1
ld a,R

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

Re: Características importantes de un emulador

Mensaje por zx81 » Dom Mar 21, 2010 2:08 pm

decicoder escribió:Todavía puede haber caracteristicas novedosas y útiles en un emulador:

Un conversor de ficheros cinta (.tap/.tzx) a ficheros snapshot (.z80).
La idea es cargar un tap/tzx y en el mismo punto donde acabe la carga (cuando todavía no se ha borrado la pantalla de presentación) grabar un snapshot.

Evidentemente para hacer esto no se necesita desarrollar todo un emulador y se podría pensar en un programita exclusivo para eso. Pero ese programita , segun entiendo, debería emular al menos el nucleo del Z80 , la entrada EAR y las rutinas de carga de ROM. Así que el programita entraria dentro de la familia de emuladores de Spectrum.

Sería útil para poder generar ultracargas a partir de ficheros tap y tzx que tienen esquemas de carga no standard. Con k7zx no se pueden convertir tzx's con cargas turbo. Y con el Proyecto Otla en teoria se puede pero es complicado y se necesita tirar de emulador con debuger para manualmente averiguar direcciones de inicio, direccion de ejecución,...
Mejor todavía sería que en lugar de convertir a .Z80 convirtiera a .sbb.


Esto que pides es más complicado de lo que parece. Sería posible, al menos, en los TZX correctamente generados, es decir, en aquellos que tienen el bloque de indicación de parada bien puesto. De los más de 300 TZX que he cargado para verificar el funcionamiento de mi emulador, he encontrado bastantes que "podrían estar mejor". Y eso sin contar con los programas que cargan fases, me viene a la memoria el Rastan, o el Out-Run. No solo cargan bloques turbo, es que cuando acaba la carga y seleccionas el tipo de manejo (teclado, joystick, etc) aún tiene que cargar la primera fase y también va en un bloque turbo, como el resto de las fases.

De todas formas, entiendo que las Ultracargas, que nunca he usado ni visto, son más útiles en un Spectrum real que en un emulador. En un emulador puedes hacer desde flashloading, al estilo fuse, o simplemente acelerar la emulación lo que haga falta para que cargue en tiempos razonables. En JSpeccy ahora mismo cargo 10 veces más rápido. Para terminar generando un snapshot z80, cualquier cosa vale. Pero un snap z80 no puede cargarse en un Spectrum real, ¿no?.

Saludos y gracias por las ideas. :)
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
tkmaniac
Herbert
Mensajes: 67
Registrado: Mié Mar 05, 2008 5:00 pm

Re: Características importantes de un emulador

Mensaje por tkmaniac » Dom Mar 21, 2010 3:05 pm

zx81 escribió:Pero un snap z80 no puede cargarse en un Spectrum real, ¿no?.

En WOS esta la utilidad Z802TZX de Tomaz Kac para convertir archivos Z80 en TZX y poder cargarlos en un spectrum real.
Saludos.

Avatar de Usuario
decicoder
Jack The Nipper
Mensajes: 176
Registrado: Jue Jul 19, 2007 10:37 am

Re: Características importantes de un emulador

Mensaje por decicoder » Dom Mar 21, 2010 9:46 pm

zx81 escribió:Pero un snap z80 no puede cargarse en un Spectrum real, ¿no?.

Sí se puede. Con el k7zx por ejemplo con la única limitación de una pequeña corrupción de memoria en la pantalla o en el buffer de la impresora. Se puden cargar snapshot de 48k y de 128k

Efectivamente, lo de los juegos multi carga ya es otro cantar todavía más complicado.
xor a
ld R,a
b1 in f,(c)
jp pe , b1
ld a,R

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: Características importantes de un emulador

Mensaje por mcleod_ideafix » Lun Mar 22, 2010 9:14 pm

zx81 escribió:De todas formas, entiendo que las Ultracargas, que nunca he usado ni visto, son más útiles en un Spectrum real que en un emulador. En un emulador puedes hacer desde flashloading, al estilo fuse, o simplemente acelerar la emulación lo que haga falta para que cargue en tiempos razonables. En JSpeccy ahora mismo cargo 10 veces más rápido. Para terminar generando un snapshot z80, cualquier cosa vale. Pero un snap z80 no puede cargarse en un Spectrum real, ¿no?.

Un snap Z80 sí puede cargarse en un Spectrum real, con tal de que disponga de DivIDE, o que sea un +2E/+3E. Otros formatos (SNA quizás?) pueden cargarse desde una unidad +D, o un Disciple. No sé si el Mirage Microdriver también tiene algo de esto.

Lo que propone Decicoder es útil, no sólamente para generar ultracargas a partir de TAP's/TZX's, sino también para usuarios de sistemas +3E. Discutí de ello con zxbruno en este hilo de WOS: http://www.worldofspectrum.org/forums/s ... 464&page=3 . Incluso llegamos a un algoritmo válido para los casos en que no existan multicargas que realizar tras comenzar el juego. Lo que le comenté, en el idioma de Shakespeare, fue esto:
mcleod_ideafix con acento británico escribió:Assuming you want to convert a TAP file to a snapshot format, or a TZX that uses standard ROM routines, a suitable algorithm could be this:
- Start the emulator and autokey the LOAD "" (enter) key sequence (or start the emulator with a preloaded snapshot in which the LOAD "" has just been issued).
- Run the emulator until all TAP blocks have been loaded.
- After the last block has been loaded, continue running until the CPU Program Counter starts executing code from RAM. At that moment, freeze the emulation, get current CPU state and memory and save it all into a snapshot.

The utility that implements this algorithm could have an option to let the user choose at what point the execution should be paused and the snapshot being generated. This way, TZX files with custom loading routines could be used as well.

You could patch the FUSE emulation engine, for instance, to produce this utility, even from command line, no graphic windows really needed for this.

Y en lo que a características de un emulador se refiere, yo aún echo de menos alguna, que no está presente en los emuladores "estrella" para Windows, y son:

- Soporte en DivIDE de tarjetas de memoria reales, no como imágenes. El único que soporta esto, que yo sepa, y con "peros", es el EightyOne.

- Emulación del modo hires de 256x384. Sólo lo soporta EightyOne.
Si alguien pregunta en este punto: "¿y por qué no usas el EightyOne?" le respondo: porque es inestable, y casca con facilidad. Parece ser que su autor ha dejado de soportarlo por problemas personales.

- Soporte, en los que admiten el +3E, de interfaces de 16 bits. Fuse no sé, pero Spectaculator no tiene, y ZXSpin tiene emulación de interfaz CF "barata" de 8 bits.
Las dos cosas anteriores me llevaron a tener que escribir una utilidad que discuto aquí: viewtopic.php?f=11&t=1472

- Emulación fiable de la "lentitud" de dispositivos ATA. Actualmente los emuladores que soporta imágenes de dispositivos IDE, se aserta RDY sin apenas estar tiempo en estado BSY, cuando en un dispositivo real ese tiempo es tangible, y afecta a la velocidad de lectura del dipositivo.

- Sistema de "plugins" documentado, "a la Winamp". De esa forma, un humilde desarrollador de hardware (mí mismo) puede crear un dispositivo tanto en "forma real" como en emulación, para que lo pueda usar todo el mundo, simplemente dando una DLL que el usuario ponga en su carpeta de plugins y active como si "pinchara" el periférico en el bus de expansión. El Fuse permite algo de esto, pero no está documentado (y no, el código fuente no me vale como documentación).
Esto último es, por razones obvias, lo que más me interesa. Sería la puerta a que muchos usuarios probaran cosas que se han hecho, como por ejemplo el Spectranet de Winston. A los propios desarrolladores de hard nos vendría de perlas para depurar el código que maneja el dispositivo, ya que a día de hoy, debemos ser de los pocos que aún hoy depura "a la antigua usanza" por la necesidad de tener que probar el código en un Spectrum real.

- Profiler de Z80, que me diga, en la vista de desensamblador, cuántos T-estados han pasado desde un evento a otro: los eventos podrían ser software (tiempo desde la ejecución de una instrucción en la dirección X hasta la instrucción Y) o mezcla de hard/soft: (tiempo desde que se disparó la interrupción del retrazo vertical hasta la ejecución de la instrucción Y, o tiempo desde que tal puerto de E/S toma cierto valor hasta que se ejecuta cierta instrucción). ZXSpin tiene algo de esto, pero realmente... ¡no sé cómo funciona!

- Una frikada, y seguramente completamente inútil, pero no implementada :D : ningún emulador, pero ninguno ninguno, emula el refresco de memoria del 48K. En el EightyOne se emulan cosas tan bizarras como lo de que le des un golpe al "16K memory pack" de un ZX81 y se bloquee por perder contacto en los pines del conector, pero esto no. Ver este post para detalles: viewtopic.php?f=11&t=394
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
jevilon
Manic Miner
Mensajes: 288
Registrado: Mié Jul 23, 2008 1:15 pm
Ubicación: La Rioja

Re: Características importantes de un emulador

Mensaje por jevilon » Mar Mar 23, 2010 11:01 am

Una cosa que se me olvido y creo que importante para que llegue a todo el mundo...

-Multiplataforma

Porque no veas la gracia que me hace tener el Spectaculator pagado y no poder usarlo XD

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

Re: Características importantes de un emulador

Mensaje por zx81 » Mar Mar 23, 2010 12:28 pm

mcleod_ideafix escribió:Un snap Z80 sí puede cargarse en un Spectrum real, con tal de que disponga de DivIDE, o que sea un +2E/+3E. Otros formatos (SNA quizás?) pueden cargarse desde una unidad +D, o un Disciple. No sé si el Mirage Microdriver también tiene algo de esto.

Lo que propone Decicoder es útil, no sólamente para generar ultracargas a partir de TAP's/TZX's, sino también para usuarios de sistemas +3E. Discutí de ello con zxbruno en este hilo de WOS: http://www.worldofspectrum.org/forums/s ... 464&page=3 . Incluso llegamos a un algoritmo válido para los casos en que no existan multicargas que realizar tras comenzar el juego. Lo que le comenté, en el idioma de Shakespeare, fue esto:
mcleod_ideafix con acento británico escribió:Assuming you want to convert a TAP file to a snapshot format, or a TZX that uses standard ROM routines, a suitable algorithm could be this:
- Start the emulator and autokey the LOAD "" (enter) key sequence (or start the emulator with a preloaded snapshot in which the LOAD "" has just been issued).
- Run the emulator until all TAP blocks have been loaded.
- After the last block has been loaded, continue running until the CPU Program Counter starts executing code from RAM. At that moment, freeze the emulation, get current CPU state and memory and save it all into a snapshot.

The utility that implements this algorithm could have an option to let the user choose at what point the execution should be paused and the snapshot being generated. This way, TZX files with custom loading routines could be used as well.

You could patch the FUSE emulation engine, for instance, to produce this utility, even from command line, no graphic windows really needed for this.


Esa idea que dabas en inglés es posible, aunque no creo que de la forma que lo cuentas. Los programas con cargas raras o turbo también tienen el cargador en RAM, es decir, que no es posible detectar cuando el registro PC está en RAM, porque estará siempre. Sería mucho más seguro detectar la parada de la cinta bien por el fin del fichero TAP/TZX, cosa que no siempre funcionaría, o bien por un bloque de parada en el fichero TZX es seguro que cuando la cinta se ha parado lo que se va a ejecutar después es el código del programa, sí o sí.

mcleod_ideafix escribió:Y en lo que a características de un emulador se refiere, yo aún echo de menos alguna, que no está presente en los emuladores "estrella" para Windows, y son:

- Soporte en DivIDE de tarjetas de memoria reales, no como imágenes. El único que soporta esto, que yo sepa, y con "peros", es el EightyOne.


Supongo que con esto te refieres a que tengas un lector de tarjetas de memoria conectado por USB y que el programa las lea directamente. Sinceramente, eso desde Java no estoy seguro de que sea posible de forma sencilla. Se me ocurren otras formas, como abrir el dispositivo raw e interpretarlo a piñón, pero eso no sería posible en Win (donde alomojó se puede hacer de otra forma y yo no lo sé).

mcleod_ideafix escribió:- Emulación del modo hires de 256x384. Sólo lo soporta EightyOne.
Si alguien pregunta en este punto: "¿y por qué no usas el EightyOne?" le respondo: porque es inestable, y casca con facilidad. Parece ser que su autor ha dejado de soportarlo por problemas personales.


Con esto sí que me has pillado pero totalmente. Sabía, porque lo hice, que en el ZX81 se podía simular un modo de HiRes, pero, ¿en el Spectrum?. ¿Enlaces a info?.

mcleod_ideafix escribió:- Soporte, en los que admiten el +3E, de interfaces de 16 bits. Fuse no sé, pero Spectaculator no tiene, y ZXSpin tiene emulación de interfaz CF "barata" de 8 bits.
Las dos cosas anteriores me llevaron a tener que escribir una utilidad que discuto aquí: viewtopic.php?f=11&t=1472

- Emulación fiable de la "lentitud" de dispositivos ATA. Actualmente los emuladores que soporta imágenes de dispositivos IDE, se aserta RDY sin apenas estar tiempo en estado BSY, cuando en un dispositivo real ese tiempo es tangible, y afecta a la velocidad de lectura del dipositivo.


Aquí nado bastante pez porque no he usado nunca, ni visto, el +3E, ni he conectado a un Spectrum CF's.

mcleod_ideafix escribió:- Sistema de "plugins" documentado, "a la Winamp". De esa forma, un humilde desarrollador de hardware (mí mismo) puede crear un dispositivo tanto en "forma real" como en emulación, para que lo pueda usar todo el mundo, simplemente dando una DLL que el usuario ponga en su carpeta de plugins y active como si "pinchara" el periférico en el bus de expansión. El Fuse permite algo de esto, pero no está documentado (y no, el código fuente no me vale como documentación).
Esto último es, por razones obvias, lo que más me interesa. Sería la puerta a que muchos usuarios probaran cosas que se han hecho, como por ejemplo el Spectranet de Winston. A los propios desarrolladores de hard nos vendría de perlas para depurar el código que maneja el dispositivo, ya que a día de hoy, debemos ser de los pocos que aún hoy depura "a la antigua usanza" por la necesidad de tener que probar el código en un Spectrum real.


Esto es bastante complicado, aunque no imposible. Primero, porque hay que pensar MUY BIEN una arquitectura semejante y que sea viable de implementar y sencilla de hacer los plugins. Y segundo porque documentar esa arquitectura llevaría tanto tiempo como programarla. Y los programadores "vocacionales" tenemos poco gusto por la documentación. Dejando aparte que el FUSE lo empezó Philip Kendall, pero lo han ampliado otros desarrolladores que, unos seguirán y otros se habrán retirado y Kendall no es el mejor conocedor de ciertas partes del código de FUSE (lo sé, porque lo he hablado con él).

Dicho sea de paso, hacer un emulador de Spectrum en Java ha resultado ser una labor de ingeniería de SW bastante complicada. De hecho, solo eso justificaría un hilo completo dedicado al tema. El Spectrum es un sistema fuertemente acoplado donde es realmente difícil separar responsabilidades y ciertas funcionalidades complican aún más el diseño, teniendo en cuenta que al final te ha de quedar un emulador que, además de tener un diseño adecuado, ha de ser rápido en su ejecución. Aún ahora, que tengo un emulador funcional, sigo dándole vueltas al diseño de clases y pensando en cómo mejorarlo. Y, en verdad digo, que es una tarea titánica. Si clavo esta parrafada es porque hacer un sistema de plugins que permita ciertas cosas de manera limpia no es baladí.

mcleod_ideafix escribió:- Profiler de Z80, que me diga, en la vista de desensamblador, cuántos T-estados han pasado desde un evento a otro: los eventos podrían ser software (tiempo desde la ejecución de una instrucción en la dirección X hasta la instrucción Y) o mezcla de hard/soft: (tiempo desde que se disparó la interrupción del retrazo vertical hasta la ejecución de la instrucción Y, o tiempo desde que tal puerto de E/S toma cierto valor hasta que se ejecuta cierta instrucción). ZXSpin tiene algo de esto, pero realmente... ¡no sé cómo funciona!


Diría que algunas de esas cosas, y otras más, las tiene también Specemu, solo que este emulador lo conoce poca gente. A Fuse también se le pueden poner ciertos tipos de breakpoints que yo tampoco sé usar. Cierto es no he investigado nada al respecto. Pero, si he de decirte algo, uno de los objetivos de JSpeccy es, precisamente, tener un debugger funcional y sencillo de manejar (dentro de lo que se pueda). Aunque aún estoy un poco lejos de meterme con el tema....

mcleod_ideafix escribió:- Una frikada, y seguramente completamente inútil, pero no implementada :D : ningún emulador, pero ninguno ninguno, emula el refresco de memoria del 48K. En el EightyOne se emulan cosas tan bizarras como lo de que le des un golpe al "16K memory pack" de un ZX81 y se bloquee por perder contacto en los pines del conector, pero esto no. Ver este post para detalles: viewtopic.php?f=11&t=394


*ES* una frikada. :D
Y pensando en cómo hacerlo, llevaría cierto tiempo de CPU nada despreciable. Para la poca utilidad que tendría a decir verdad. Specemu tiene una funcionalidad "friki" que es emular una conexión de televisión defectuosa y, de vez en cuando, ves "nieve" en la pantalla, como cuando la tele no tiene una antena conectada. :D

Y respecto al hilo que me mencionas, ya hay dos emuladores que emulan el registro escondido MEMPTR al 100%: uno es Specemu, el otro es JSpeccy. ;-)

Me has dado una buena cantidad de ideas. Gracias. :)
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

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

Re: Características importantes de un emulador

Mensaje por zx81 » Mar Mar 23, 2010 12:37 pm

jevilon escribió:Una cosa que se me olvido y creo que importante para que llegue a todo el mundo...

-Multiplataforma

Porque no veas la gracia que me hace tener el Spectaculator pagado y no poder usarlo XD


Bueno, eso ya existe con emuladores como JaS, QAOP o mi emulador, JSpeccy. Si lo he programado en Java es, precisamente, para que sea multiplataforma y para que los usuarios no tengan que compilarse el emulador ni complicarse con cosas semejantes.

Si no puedes usar Spectaculator, tira de Specemu. No tengo Spectaculator, pero hacer algo mejor que Specemu es realmente difícil. De hecho, este fin de semana comentábamos en un canal de IRC de ciertos tests que Spectaculator no pasa (incluso peta al ejecutarlos, me pareció entender).

JSpeccy está todavía muy lejos de estar a la altura de "los grandes", pero puedes probarlo, a ver qué te parece. Para emular un 48K es completamente funcional, aunque le falten cosas. Y gracias a ciertos usuarios de WoS he podido corregir algunos problemas que tenía con el refresco de la pantalla en algunas configuraciones de Windows. A ver quien es el primer usuario de habla hispana en inagurar la lista de errores (en WoS tardaron menos de 24h en informarme de dos o tres, tremendo). :D
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
jevilon
Manic Miner
Mensajes: 288
Registrado: Mié Jul 23, 2008 1:15 pm
Ubicación: La Rioja

Re: Características importantes de un emulador

Mensaje por jevilon » Mar Mar 23, 2010 1:01 pm

Dime url que estoy vago XD. En cuanto llegue a casa lo pruebo a ver que tal va, aunque de errores pues te podria decir si algun juego no funciona o lo hace erroneamente, por que yo lo que es de Z80, codigo maquina y demas para probar, ni idea

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

Re: Características importantes de un emulador

Mensaje por zx81 » Mar Mar 23, 2010 1:40 pm

jevilon escribió:Dime url que estoy vago XD. En cuanto llegue a casa lo pruebo a ver que tal va, aunque de errores pues te podria decir si algun juego no funciona o lo hace erroneamente, por que yo lo que es de Z80, codigo maquina y demas para probar, ni idea


Encantado! :)

http://jspeccy.speccy.org

He probado más de 300 TZX antes de hacerlo público, pero vaya, eso eso poco de los más de 15000 que hay en WoS.
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

Responder

¿Quién está conectado?

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