[UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

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:

Re: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por zx81 » Jue Sep 03, 2015 8:40 pm

jcgamestoy escribió:
Que es eso del gigascreen :?: :?: :?:

Jajajajajajaj acabo de darme cuenta que una vez más con lo de Gigascreen (Que yo llamaba interlaced blending) he vuelto a inventar la rueda.

Esta tecnica se usa mucho en Commodore 64 (y en Amstrad CPC en la demo Batman).

Yo lo hago todo en la GPU así que gasta 0 ciclos :lol: :lol: :lol: basicamente es un alpha-blending entre los dos frames la formula es: actual*(1-ib)+anterior*ib donde ib es el valor del "interlaced blending este" (En una próxima version pondre gigascreen).

En el emulador dejo variar este valor entre 0 y 0.5 en los preajustes del crt lo pongo mas o menos a 0.4 para que se vea un pelin de parpadeo.

Si quereis verlo de cine cine sin un solo parpadeo poner el slider a la izquierda y sobre todo verlo en un monitor a traves de HDMI y configurando OS X a 50hz :wink:
Es que yo creo que no lo vemos bien porque lo hacemos mal. Y eso mismo es lo que causa que determinados efectos, como scrolls de textos, a veces se vean como con fallos. Voy a darme una explicación de cómo hacerlo bien y a ver qué pensáis.

Una imagen PAL normal está formada por dos frames consecutivos, uno con las líneas pares y otro con las impares. Lo normal es que las pares y las impares sean iguales pero en el caso del Spectrum pueden no serlo porque la imagen de cada cuadro se forma con lo que hay en la memoria de video en ese momento. Si creas el frame y actualizas toda la imagen, en realidad no lo estás haciendo como deberías. Lo suyo es ir actualizando líneas pares e impares por separado. Eso obliga a que el tamaño mínimo de imagen sea de 512x386 pixeles (más el borde, al que se le aplica la misma técnica). Debe ser así porque una pantalla de 512x192 quedaría horrible.

Efectivamente puedes aplicar un efecto, y quizá sea más rápido así por hacerlo en la GPU, pero lo suyo es separar cuadros pares e impares. O eso pienso yo.
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: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por zx81 » Jue Sep 03, 2015 8:46 pm

jcgamestoy escribió:
zx81 escribió:Yo no hago emulación a nivel de T-estado porque realmente creo que no es necesario llegar a ese nivel. Lo más delicado es la pantalla y eso pinta 8 pixeles en 4 T-estados. Una vez que ha leído el byte de pantalla y el de atributos los otros 4 T-estados ya no van a cambiar nada. De hecho, se ejecutan bien demos como Overscan y Shock Megademo. Aunque a nivel de tiempos, la más puñetera de todas es la Paralaktica y en tu emulador se ve de cine. Si no ando muy desencaminado, la Paralaktica se ve bien a partir de que tengas una precisión aproximada de 4 T-estados.
Cierto para la pantalla, no tan cierto para la entrada salida sobre todo en los 128k, que puedes cambiar el banco o a la pantalla de la RAM 7 en cualquier momento (creo).

Ademas si en un futuro me quiero liar con los clones rusos creo recordar que Pentagon (o era Scorpion) actualizan el borde cada 1-T.

Lo que si que tiene que tener una precision al ciclo sobre todo en los 48k es la contienda.

En cuanto a paralaktica (Que pason de Demo) en mi emulador tiene truco. Fíjate en como cambia si la ves con uno de los preajustes de video que empiezan por LCD a como se ve con uno que empiece por CRT.
Ciertamente, para emular a los clones rusos necesitas precisión de 1T. El tema del cambio de pantalla también tenía su miga y no sé si llegaron a encontrar el patrón, porque se podía retrasar si justo en ese momento la ULA estaba leyendo la memoria de video.

Para la contienda, yo la consigo hacer bien sin tener precisión de 1T. Las pantallas de Gigascreen en Paralaktica se ven parpadeando por la razón explicada en el mensaje anterior. Creo que fue Ricardo Cantxo el que hizo una especie de mega-pong usando Gigascreen. Por WoS debe andar.
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
jcgamestoy
rst 0
Mensajes: 38
Registrado: Mié Abr 29, 2015 8:38 am
Contactar:

Re: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por jcgamestoy » Jue Sep 03, 2015 9:01 pm

zx81 escribió:Es que yo creo que no lo vemos bien porque lo hacemos mal. Y eso mismo es lo que causa que determinados efectos, como scrolls de textos, a veces se vean como con fallos. Voy a darme una explicación de cómo hacerlo bien y a ver qué pensáis.

Una imagen PAL normal está formada por dos frames consecutivos, uno con las líneas pares y otro con las impares. Lo normal es que las pares y las impares sean iguales pero en el caso del Spectrum pueden no serlo porque la imagen de cada cuadro se forma con lo que hay en la memoria de video en ese momento. Si creas el frame y actualizas toda la imagen, en realidad no lo estás haciendo como deberías. Lo suyo es ir actualizando líneas pares e impares por separado. Eso obliga a que el tamaño mínimo de imagen sea de 512x386 pixeles (más el borde, al que se le aplica la misma técnica). Debe ser así porque una pantalla de 512x192 quedaría horrible.

Efectivamente puedes aplicar un efecto, y quizá sea más rápido así por hacerlo en la GPU, pero lo suyo es separar cuadros pares e impares. O eso pienso yo.
Exactamente eso es lo que hago yo. pero en vez de escribir las pares y las impares en un frame de 768x576 que seria la resolución PAL exacta yo uso dos de 384x288 y luego los mezclo. Prueba a jugar con lo del "interlaced" lo hago yo en el video que tengo en la web en la configuración de video al final con la demo Mescaline pero el iMovie me desgracio el video y lo bajo a 30fps y se ve un poco chusqui. Mejor pruébalo en emulador directamente.

Asi elimino totalmente el parpadeo. Aunque me cargo la mitad virtual de resolución que tendría la imagen en real.

Tengo que leer mas como realmente lo hace un CRT pero ademas creo que el frame impar esta desplazado medio pixel con respecto al par.

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

Re: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por chernandezba » Vie Sep 04, 2015 9:11 am

Hola

Bueno yo no soy experto en señales de video pero lo básico me lo se...
En cuanto a los dos efectos que se comentan, yo los llamo en mi emulador "Gigascreen" e "Interlaced", que son los dos nombres mas comunes en el mundillo de Spectrum.

-El primero, el gigascreen, consiste en que al cambiar de imagen continuamente a cada frame, el color resultante de cada pixel de cada 2 frames resulta de la combinación de los dos. Es lo que hacen el paralaktica, meskaline y otros. En mi emulador hay una pequeña rutina que, cargando dos imagenes en las dos pantallas del 128k, las va conmutando, generando una imagen final con nuevos colores. Si buscais aqui:
http://zxart.ee/eng/graphics/database/p ... sc/page:1/
Veréis unas cuantas imagenes de ese estilo. Podréis ver que ahí hay varios formatos: mg8, img...

Mas info:
https://en.wikipedia.org/wiki/ZX_Spectr ... GigaScreen

-El segundo, el interlaced, consiste en aprovechar el entrelazado de las lineas pares-impares del PAL para generar una imagen resultante de 256x384. Mi emulador lleva algunas de ejemplo, aqui:
https://www.youtube.com/watch?v=WxvkFyW55Jg

Podeis ver una demo. Por cierto, la del gato es de mcleod_ideafisk
Mas info:
https://en.wikipedia.org/wiki/ZX_Spectr ... #Interlace


Todos estos efectos no se si se ven justamente asi en tv reales, o con ligeros cambios. Me suena a mi que las TV CRT muestran mejor el interlaced y peor el gigascreen. Y las TV planas solo muestran el gigascreen...




Saludos
César
----

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

Avatar de Usuario
jcgamestoy
rst 0
Mensajes: 38
Registrado: Mié Abr 29, 2015 8:38 am
Contactar:

Re: Retro Virtual Machine v1.0.0 disponible!!!

Mensaje por jcgamestoy » Vie Sep 04, 2015 9:19 am

chernandezba escribió:Uff pedazo de trabajo que te has currado con el snow effect...

He intentado corregir el mio pero no funciona, he conseguido que esa demo haga algo parecido a un scroll por columnas, al menos hace algo mejor que antes, pero para nada perfecto.

Creo que tal y como está mi emulador es imposible reproducir el efecto correctamente, dado que yo leo la memoria de scanlines cuando ya se han generado (pero los atributos sí que los voy generando en el mismo core de la cpu). Y para reproducir con exactitud el snow effect requiere leer cada pixel a medida que se ejecuta la cpu... Cosa bastante complicada y que utilizaria demasiada cpu fisica.

Gracias igualmente por pasarme tu trozo de código y la explicación.

Saludos
César
Pues va a ser que el que lo tiene bien eres tu y no yo.

Esta vez me pase de listo se me paso el detalle como bien pone en el libro de la ULA de Chris Smith que el snow es una columna si una no.

En WOS me han puesto un video de la cosa rulando en un 48k y va exactamente igual que en mi emu pero una columna si una no:

http://www.worldofspectrum.org/forums/d ... ect#latest

Asi que creo que vas bien encaminao.

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

Re: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por chernandezba » Vie Sep 04, 2015 9:37 am

Oh dios, por fin una imagen de la dichosa demo en un Spectrum real! :P

Pues si, eso ya se parece mas a lo que yo hice, aunque el mio solo mueve los pixeles (y no el color) pero voy a mirar de "tunearlo" para que se parezca a eso :)
----

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

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

Re: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por chernandezba » Vie Sep 04, 2015 9:47 am

Ale, modificado mi algoritmo y también mueve los colores, ya se parece bastante mas a la imagen real.
De todas maneras, Juan Carlos, me gustaba más como se veía en tu emulador, con el scroll entero ;)

No será que hay algunos modelos de 48k (dependiendo del issue o que se yo) en que se vea a scroll completo?
No se podría contactar con el autor de dicha demo para saber qué efecto pretendía conseguir? (y si lo probó con un spectrum real)...

Saludos
César
----

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

Avatar de Usuario
jcgamestoy
rst 0
Mensajes: 38
Registrado: Mié Abr 29, 2015 8:38 am
Contactar:

Re: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por jcgamestoy » Vie Sep 04, 2015 11:21 am

El autor es Hikaru me dijo en WOS en el hilo que he pegado más arriba que lo hizo por ensayo error y que cuando vio que no avanzaba lo abandono.

Y según pone por aquí creo que todos lo hacen igual solo las columnas pares tienen el snow effect.

http://www.zxdesign.info/dynamicRam.shtml

Pero luego lo mirare en el libro que esta mejor explicado a ver porque.

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

Re: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por chernandezba » Vie Sep 04, 2015 11:47 am

Aah ok, así el autor mismo dice que lo del scroll completo nada...

Pues así descartado, hacer un scroll completo imposible con efecto snow... o no?

Creo que ya no toco mas la emulación del snow en mi emu, así está muy mono ;)

Saludos
César
----

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

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

Re: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por chernandezba » Vie Sep 04, 2015 12:07 pm

jcgamestoy escribió:
Y según pone por aquí creo que todos lo hacen igual solo las columnas pares tienen el snow effect.

Bueno a mi me ha salido tal cual, cuando voy a leer un byte de pantalla, si esa dirección está en contienda, y según la tabla tipica de contienda (en caso de 48k: 5, 4, 3, 2, 1, 0, 0, 6) si el valor de la tabla es mayor que 2, hago snow. Porque 2? Porque si... lo he probado a ojo, porque si pruebo la comparación con 3 en vez de 2, el efecto no se produce en esa demo. Aunque comparando el efecto con el robocop 3
https://www.youtube.com/watch?v=ouWwhyutkiI

Con valor 2 se ve demasiado en este juego... Creo que lo mejor será un valor seleccionable :P
----

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

Avatar de Usuario
jcgamestoy
rst 0
Mensajes: 38
Registrado: Mié Abr 29, 2015 8:38 am
Contactar:

Re: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por jcgamestoy » Vie Sep 04, 2015 1:37 pm

chernandezba escribió:
jcgamestoy escribió:
Y según pone por aquí creo que todos lo hacen igual solo las columnas pares tienen el snow effect.

Bueno a mi me ha salido tal cual, cuando voy a leer un byte de pantalla, si esa dirección está en contienda, y según la tabla tipica de contienda (en caso de 48k: 5, 4, 3, 2, 1, 0, 0, 6) si el valor de la tabla es mayor que 2, hago snow. Porque 2? Porque si... lo he probado a ojo, porque si pruebo la comparación con 3 en vez de 2, el efecto no se produce en esa demo. Aunque comparando el efecto con el robocop 3
https://www.youtube.com/watch?v=ouWwhyutkiI

Con valor 2 se ve demasiado en este juego... Creo que lo mejor será un valor seleccionable :P
Joer que putada si te fijas bien en el video, si miras al principio en las letras de Robocop justo al lado de la P esta haciendo snow en dos columnas consecutivas....

Grrrr pero esto puede que sea porque la ULA del 128 va de otra forma, nos vendría bien ver lo del scroll en un toastrack o un +2 que no pete.

Yo de momento lo voy a parchear a columnas alternas y prou.

:lol:

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

Re: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por chernandezba » Vie Sep 04, 2015 2:12 pm

Mmmm parece que si que son dos columnas consecutivas, pero creo que no coinciden en scanline, estan en scanlines diferentes... creo...
Y si , seguramente tenga que ver que es para un 128K y no para 48K...

En fin, esto ya es hilar demasiado fino. Creo que ya no lo toco mas... ;)
----

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


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

Re: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por chernandezba » Sab Sep 05, 2015 4:39 pm

Bravo! Les has enviado información tu? O lo han descubierto ellos mismos?
----

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

Avatar de Usuario
jcgamestoy
rst 0
Mensajes: 38
Registrado: Mié Abr 29, 2015 8:38 am
Contactar:

Re: [UPDATED] Retro Virtual Machine v1.0.1 disponible!!!

Mensaje por jcgamestoy » Sab Sep 05, 2015 7:11 pm

Les mande dos tweets a dos editores de applesfera pero no contestaron.

Ayer por DM una persona me pregunto de donde podia bajarse juegos, no le di importancia y hoy me he encontrado con esto (resulta que el que me pregunto era el que ha escrito el articulo).

No se si sus compis se lo han chivado a este o a sido casualidad el hecho es que esta entrando gente en la web a saco :lol: :lol:

Responder

¿Quién está conectado?

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