Calidad emulación de spectrum en entredicho

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
Wally Week
Manic Miner
Mensajes: 212
Registrado: Mié May 09, 2007 5:39 pm
Ubicación: Madrid
Contactar:

Mensaje por Wally Week » Mar Oct 02, 2007 6:15 pm

[quote="zyloj"] Los sistemas de entretenimiento que hemos usado hasta ahora (consolas u ordenadores de 8/16 bits) en su mayoría obtienen mejores resultados con las pantallas de tubo. /quote]
De hecho, yo soy de los que todavía prefieren acoplar el PC (tengo dos en casa) o la videoconsola a buenas pantallas de tubo en lugar de a TFTs, sobre todo si usas los PCs para jugar. En principio mi intención es seguir con el CRT todo el tiempo que pueda....
Wally Week
El Spectrum HOY
http://www.speccy.org/spectrumhoy

"Con el Spectrum al fin del Mundo"

Ivanzx
Nonamed
Mensajes: 1194
Registrado: Lun May 07, 2007 12:11 pm
Ubicación: Frankfurt, Germany
Contactar:

Mensaje por Ivanzx » Mié Oct 03, 2007 5:31 pm

Yo me compre una pantalal plana TFT para mi Spectrum +3 (por imposibilidad de espacio de comprarme una normal) y la calidad es algo mala, hay un tembleque continuo de los pixels, tanto en Spectrum y Super Nintendo, y se pierde un poco de nitidez. Claro que cada vez es mas dificil conseguir una pantalla que no sea tft, de hecho en Amsterdam donde estuve la semana pasada solo se veian 2 modelos ya. :(

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Mensaje por radastan » Vie Oct 19, 2007 9:36 am

Existe una solución, pero pasa por dejar en el tintero todos mis proyectos... y eso me jodería en extremo.

Hace la pila de años comencé un emulador de HARDWARE, la idea que tenía en mente era simular los componentes electrónicos fielmente, para así poder realizar una emulación de un circuito completo:

http://www.redeya.com/scd/scd.html

Lo que veis allí era el "germen", no tenía ni librerías aún, y lo abandoné porque mis profesores de universidad decían que eso ya estaba inventado y que no servía para nada dedicar esfuerzos en ese tema.

La cuestión es, ¿os veis con ganas para continuar el proyecto? el problema es que yo me quedé anclado en el C ANSI de toda la vida, odio los objetos, y nunca he programado algo en Windows (sólo en DOS).

Puedo ayudaros con el código base, pero el resto os lo tendríais que currar vosotros.

A modo de resumen os digo como funciona:

Tenemos dos matrices de puntos, una es la que vamos a simular, y la siguiente la que corresponde al ciclo de tiempo que fijemos. Funciona de esta forma:

- cada componente se une a la malla por puntos
- con el circuito completo fijamos un ciclo de tiempo por ciclo para la simulación
- se simula componente por componente y se anota el resultado en la segunda malla
- se copia la malla resultante a la primera y vuelta a empezar

Como veis presenta un problema MUY GORDO, la ULA, si no sabemos exactamente como era por dentro no tenemos nada que hacer, y el resto de componentes (Z80, memorias, etc) costarían un tiempo horrible en implementarse con eficacia.

Eso si, lo mejor de todo es que se podría realizar una emulación PERFECTA, 100% fiel a la máquina original, y se puede aprovechar el trabajo realizado para más ordenadores (el Z80 se usa en varios sistemas).

Yo lo veo más como un macroproyecto, en el que se implique mucha gente, pero si lo vamos a hacer 4 gatos y a rato perdido no tiene mucho sentido.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Gandulf
Nonamed
Mensajes: 1067
Registrado: Lun May 07, 2007 10:06 pm

Mensaje por Gandulf » Vie Oct 19, 2007 9:44 am

A mi me interesa. Me parece de todas formas un trabajo mastodóntico. Simuladores de componentes electrónicos e integrados hay algunos, puede que hasta tengan el Z80 implementado en alguno (lo dudo). Desde luego crear los componentes a base de puertas lógicas puede tener mucha tela, sobre todo sería fácil equivocarse y poner alguna parte de la lógica mal por descuido o error.

Casi veo más viable e interesante el hacerlo físicamente. O sea, montar un spectrum con componentes actuales y no perecederos. En este caso "sólo" tendríamos que salvar el problema de la ULA.

De todas formas puede ser un proyecto interesante. Si hay más gente yo me apunto.
Un saludo,

Gandulf

Ivanzx
Nonamed
Mensajes: 1194
Registrado: Lun May 07, 2007 12:11 pm
Ubicación: Frankfurt, Germany
Contactar:

Mensaje por Ivanzx » Vie Oct 19, 2007 1:55 pm

radastan escribió:Existe una solución, pero pasa por dejar en el tintero todos mis proyectos... y eso me jodería en extremo.


No, no, mejor dejalo como esta :D

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

Re: Calidad emulación de spectrum en entredicho

Mensaje por zx81 » Sab Dic 29, 2007 7:05 pm

Aunque hace dos meses que nadie aporta nada a este hilo, como me he registrado hoy, meto baza. :)

He leído el hilo entero y aporto mis ideas para ver que piensa el resto de contertulios.

Primero, siempre me ha parecido que lograr una buena emulación en un sistema multitarea es MUCHO más complicado de conseguir que en un sistema monotarea como DOS. En realidad, diría que sin un sistema de tiempo real es imposible. Si se quiere emular realmente hay que respetar todos los tiempos a rajatabla, cosa que no es posible de garantizar en ningún Unix normal ni menos aún en Windows.

La idea (absurda por lo descomunal) pasaría por hacer, practicamente, un pequeño sistema operativo pensado expresamente para emular al Spectrum con todo el detalle posible. Imposible será emular los detalles de la TV en un monitor, parece que más difícil en un TFT (no tengo TFT ni lo quiero de momento), ni algunas cosas del teclado. La cosa pasaría por ser algo parecido a un CD o DVD, lleno de programas y que arrancara directamente desde ahí. En pocas palabras, trataríase de poner el HW del PC a disposición absoluta de la tarea de emulación. Incluso quizá sirviera arrancar un FreeDOS por debajo que realizara las tareas más básicas. Es evidente que se trata de un trabajo de chinos.

La otra vía, ya sugerida por aquí de alguna forma, sería simplificar al máximo la emulación a base de hardware real. Quizá una placa PCI, con un Z80 real y un reloj programable para poder ajustar la velocidad de forma lo más precisa posible. Ello centraría la mayor parte de la emulación en la ULA, dejando una emulación perfecta y en TR de la Z80. Había que pensar como tratar lo de la memoria, porque podría compartirse memoria del PC con ese Z80 (probablemente complicado) o quizá esa placa pudiera llevar su propia memoria que debería verse en el espacio de direcciones del PC, todo a costa de más electrónica y más complicaciones.

Probablemente, los pocos juegos que hacen uso de características muy específicas del Spectrum, no justifican semejante esfuerzo. Como en todo, hay un nivel de equilibrio. Probablemente se ha llevado la emulación a un nivel superior al 98% de precisión y elevar el nivel hasta casi el 100% exige un esfuerzo 10 veces superior a lo ya hecho solo para acercarse a esa deseada perfección. Y aún así, quizá ni con ello consiguiéramos una perfección absoluta.

Por cierto, añado de paso. Las páginas de documentación de Harlequin son estupendas. El tema es si no debería hacerse copia en algún lugar conocido, no vaya a ser que al hombre ese le de por venirse a España a practicar el deporte nacional de apilar tochos de barro cocido para revenderlos después con un 400% de margen y mande al garete su Web. No sería la primera vez que pasa algo así, que conste....
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
TrueVideo
Jack The Nipper
Mensajes: 195
Registrado: Mié May 23, 2007 8:34 am
Ubicación: BCN
Contactar:

Re: Calidad emulación de spectrum en entredicho

Mensaje por TrueVideo » Dom Dic 30, 2007 12:15 am

Hola, y bienvenido al foro.

zx81 escribió:Si se quiere emular realmente hay que respetar todos los tiempos a rajatabla, cosa que no es posible de garantizar en ningún Unix normal ni menos aún en Windows.


Qué te hace pensar que los emuladores actuales no respetan los tiempos a rajatabla?

La idea (absurda por lo descomunal) pasaría por hacer, practicamente, un pequeño sistema operativo pensado expresamente para emular al Spectrum con todo el detalle posible. Imposible será emular los detalles de la TV en un monitor, parece que más difícil en un TFT (no tengo TFT ni lo quiero de momento), ni algunas cosas del teclado. La cosa pasaría por ser algo parecido a un CD o DVD, lleno de programas y que arrancara directamente desde ahí. En pocas palabras, trataríase de poner el HW del PC a disposición absoluta de la tarea de emulación. Incluso quizá sirviera arrancar un FreeDOS por debajo que realizara las tareas más básicas. Es evidente que se trata de un trabajo de chinos.


Lo que sugieres suena un tanto anacrónico. En realidad equivale simplemente a tomar por la fuerza el hardware de la máquina (o ir al hierro, como se decía hace años, cuando realmente valía la pena saltarse las normas). En cualquier caso no sería necesario escribir ningún mini-sistema en miniatura: un emulador podría ignorar el SO y punto. Ahora la pregunta que me hago es.. para qué?

Probablemente, los pocos juegos que hacen uso de características muy específicas del Spectrum, no justifican semejante esfuerzo. Como en todo, hay un nivel de equilibrio. Probablemente se ha llevado la emulación a un nivel superior al 98% de precisión y elevar el nivel hasta casi el 100% exige un esfuerzo 10 veces superior a lo ya hecho solo para acercarse a esa deseada perfección. Y aún así, quizá ni con ello consiguiéramos una perfección absoluta.


Qué juegos son esos? Si hay algo que caracteriza al Spectrum es precisamente la austeridad de sus características, y las pocas que tiene ya están cubiertas por los emuladores desde hace mucho tiempo.

Saludos, y feliz año!

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

Re: Calidad emulación de spectrum en entredicho

Mensaje por zx81 » Dom Dic 30, 2007 8:52 am

TrueVideo escribió:Hola, y bienvenido al foro.

Qué te hace pensar que los emuladores actuales no respetan los tiempos a rajatabla?

Gracias por la bienvenida. :)

El sistema operativo te quita la CPU cuando cree conveniente y te la vuelve a dar cuando le parece. Lo normal en un sistema descargado es que casi toda la CPU la tengas siempre para ti, pero eso no es necesariamente cierto. En mi máquina tengo ahora mismo unos 60 procesos que se arrancan automáticamente. La mayor parte de ellos no usan la CPU, pero son impredecibles. Habitualmente, cuando un proceso consume mucha CPU tiene más probabilidades de que se la quiten si algún otro la necesita.

Lo que sucede es que hay dos tiempos, uno virtual y el del mundo real. En el virtual, un segundo sería algo así como un segundo de tiempo Spectrum, pero ese segundo puede durar más de un segundo de tiempo real, digamos 1'10, pero podrían ser más dependiendo de las circunstancias. Estoy seguro de que si se pudiera probar un programa con una cierta precisión de tiempo en el Spectrum, ese mismo programa tendría un tiempo real de ejecución ligeramente diferente en un emulador, siempre superior, obviamente.

Quizá de ahí vengan también ciertas percepciones que indican que a veces el teclado del Speccy responde mejor, no solo por las diferencias de los propios teclados, sino por la respuesta del programa en el emulador. Es curioso, pero minúsculas diferencias en los tiempos no se aprecian visualmente, pero sí "se sienten".

Por algo existen los sistemas de tiempo real y, en el caso de un emulador que quisiera alcanzar la perfección absoluta, debería ser de tiempo real estricto (hard real time). Al menos a esa conclusión he llegado yo, que no descarto que sea errónea. Pero como un sistema multitarea es impredecible en sí mismo, no creo estar muy errado. Para empezar, la precisión máxima que puede alcanzarse es la del timer del sistema, 10 ms si tienes 100 interrupciones de timer por segundo (en Linux y Solaris es posible llevarlas hasta 1000, pero eso es una barbaridad). A eso hay que sumar los tiempos de ejecución de las tareas internas y externas del sistema. Una especificación que deben dar los sistemas de TR es el tiempo máximo de intercambio de tareas. En cualquier sistema multitarea normal no tenemos ni idea de cual es.

Ahora que hay sistemas con CPU de doble core y hasta de cuádruple core, quizá pudiera pensarse en una nueva forma de hacer el emulador. Un proceso asociado a una CPU para la emulación del Z80 y otro proceso asociado a otra CPU para emular a la ULA. Quizá, solo quizá, eso facilitara la tarea de emular la contended memory. El sistema debe ser capaz de asociar procesos a CPUs concretas y dejarlos ahí o no ganamos nada. Quizá de esa forma pudiéramos acercarnos más a la emulación a tiempo real, pero ni aún así estaría asegurado.

TrueVideo escribió:Lo que sugieres suena un tanto anacrónico. En realidad equivale simplemente a tomar por la fuerza el hardware de la máquina (o ir al hierro, como se decía hace años, cuando realmente valía la pena saltarse las normas). En cualquier caso no sería necesario escribir ningún mini-sistema en miniatura: un emulador podría ignorar el SO y punto. Ahora la pregunta que me hago es.. para qué?

Básicamente ya lo he explicado en el tocho anterior, para tener el HW dedicado exclusivamente a la tarea de emulación. Sería una especie de mini-SO de tiempo real. Un emulador no puede ignorar el sistema como hacían con DOS. De hecho, en las extensiones de tiempo real para Linux es el SO el que se gestiona como una tarea de la parte de TR. Quizá esa sería una solución, un emulador que se ejecute en las extensiones de TR de Linux, pero eso, o lo facilitas mucho o es un problema para los usuarios. Y encima, los procesos de TR en Linux se escriben como módulos cargables que se ejecutan en espacio de kernel (un mojón).

TrueVideo escribió:Qué juegos son esos? Si hay algo que caracteriza al Spectrum es precisamente la austeridad de sus características, y las pocas que tiene ya están cubiertas por los emuladores desde hace mucho tiempo.

Saludos, y feliz año!

Juegos tan simples como Aquaplane y su horizonte artificial simulado. O algunos otros, un poco más complejos, como el Blind Alley. Creo recordar que había un juego que creaba una cuenta atrás usando el border, creo que era el I, of the Mask. Si es ese es una pena, porque tiene la distribución prohibida. :(
Me refería principalmente a los juegos que tienen alguna rutina que depende mucho del tiempo exacto para hacer efectos "especiales".

Saludos y feliz año para ti también. ;)
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
Metalbrain
Freddy Hardest
Mensajes: 592
Registrado: Lun May 07, 2007 8:17 am
Ubicación: Sevilla
Contactar:

Re: Calidad emulación de spectrum en entredicho

Mensaje por Metalbrain » Dom Dic 30, 2007 12:33 pm

zx81 escribió:Un proceso asociado a una CPU para la emulación del Z80 y otro proceso asociado a otra CPU para emular a la ULA. Quizá, solo quizá, eso facilitara la tarea de emular la contended memory. El sistema debe ser capaz de asociar procesos a CPUs concretas y dejarlos ahí o no ganamos nada. Quizá de esa forma pudiéramos acercarnos más a la emulación a tiempo real, pero ni aún así estaría asegurado.


¡Ala que bestia!... la sincronización entre ambos procesos podría ser una auténtica pesadilla, y malgastar mas tiempo del que usa el sistema operativo. Y como ejemplo, en mi ordenador, que va para cumplir ya 3 años, el Spectaculator 5.3 suele usar en torno al 2-3% del tiempo de la CPU, con picos ocasionales de hasta el 7%. Con eso el sistema operativo y otras tareas tienen tiempo de sobra para hacer lo que tengan que hacer en background sin molestar. ¿que es posible que alguna vez se ralentize por alguna causa especial, como por ejemplo que el eMule se ponga a comprobar un archivo tocho recien llegado? Pues no te digo que no, pero si tanto te molesta y quieres evitarlo a toda costa, no uses el eMule mientras juegas. Y lo mismo digo de cualquier otra tarea potencialmente tocahuevos, la quitas o la desactivas mientras estés jugando, pero no creo que sea imprescindible cambiar de sistema operativo o usar dos cores de un Cell en exclusiva para respetar los tiempos. Haciendolo así, lo que seguro que lograrás será que dichos cores se queden la mayoría del tiempo en stand-by.


zx81 escribió:Estoy seguro de que si se pudiera probar un programa con una cierta precisión de tiempo en el Spectrum, ese mismo programa tendría un tiempo real de ejecución ligeramente diferente en un emulador, siempre superior, obviamente.


Pues a mi no me parece nada obvio. Lo lógico es que el emulador se sincronize con el sistema operativo.

zx81 escribió:
TrueVideo escribió:Qué juegos son esos? Si hay algo que caracteriza al Spectrum es precisamente la austeridad de sus características, y las pocas que tiene ya están cubiertas por los emuladores desde hace mucho tiempo.


Juegos tan simples como Aquaplane y su horizonte artificial simulado. O algunos otros, un poco más complejos, como el Blind Alley. Creo recordar que había un juego que creaba una cuenta atrás usando el border, creo que era el I, of the Mask. Si es ese es una pena, porque tiene la distribución prohibida. :(
Me refería principalmente a los juegos que tienen alguna rutina que depende mucho del tiempo exacto para hacer efectos "especiales".


Bienvenido a 1999, cuando RealSpectrum logró la emulación de la memoria en contienda. Algo más tarde se logró lo mismo para la contienda en la entrada/salida, y poco a poco se han ido puliendo hasta tenerlas prácticamente perfectas. Hoy día casi todos los emuladores pueden emular desde el horizonte artificial del Aquaplane hasta demos tan espectaculares como la Shock Megademo. Poco queda ya por hacer sobre las temporizaciones en Spectrum.
SevenuP se escribe con u minúscula y P mayúscula.

Avatar de Usuario
TrueVideo
Jack The Nipper
Mensajes: 195
Registrado: Mié May 23, 2007 8:34 am
Ubicación: BCN
Contactar:

Re: Calidad emulación de spectrum en entredicho

Mensaje por TrueVideo » Dom Dic 30, 2007 5:50 pm

zx81 escribió:Juegos tan simples como Aquaplane y su horizonte artificial simulado


...

No te lo tomes a mal, pero cuándo fue la última vez que probaste un emulador? 1995? Los emuladores reproducen a la perfección efectos en el borde bastante más complejos que el de Aquaplane desde hace muchos años.

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

Re: Calidad emulación de spectrum en entredicho

Mensaje por zx81 » Dom Dic 30, 2007 6:09 pm

TrueVideo escribió:
zx81 escribió:Juegos tan simples como Aquaplane y su horizonte artificial simulado


...

No te lo tomes a mal, pero cuándo fue la última vez que probaste un emulador? 1995? Los emuladores reproducen a la perfección efectos en el borde bastante más complejos que el de Aquaplane desde hace muchos años.


Uso regularmente algunos emuladores, el emuZWin uno de ellos. El Spectaculator no lo he probado. Y el fuse es imposible de compilar en Solaris porque la libspectrum no puede compilarse SIN la gcrypt.

He editado el mensaje para desdecirme y certificar que el horizonte artificial del Aquaplane en el EmuZWin se ve donde debe estar, al menos en la máquina donde he podido probarlo (un dual core a 2'4 Ghz me parece). Quizá la última vez que lo cargué era en mi P-III 500 Mhz que ya no da para mucho más.... :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
TrueVideo
Jack The Nipper
Mensajes: 195
Registrado: Mié May 23, 2007 8:34 am
Ubicación: BCN
Contactar:

Re: Calidad emulación de spectrum en entredicho

Mensaje por TrueVideo » Dom Dic 30, 2007 7:37 pm

Te iba a responder justo cuando he visto la rectificación. Me sorprendía que pusieses como ejemplo justo el Aquaplane porque no es precisamente un juego que requiera una sincronización muy apurada. El borde está en su sitio desde hace mucho tiempo. En mi antiguo PIII ya se veía bien.

Responder

¿Quién está conectado?

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