Proposición ZXUno+

Dudas, cuestiones, sugerencias y peticiones en general sobre el proyecto / Questions and requests about the project
Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Proposición ZXUno+

Mensaje por Uto » 23 Ene 2018, 11:57

mcleod_ideafix escribió: Y de hecho, así es en el ZX-UNO. La única cosa que he hecho es dar la opción a que el pulso de sincronismo vertical pueda ser, o bien un pulso, como en el original, o bien una señal "serrada" como dice la norma. Con la opción de sincronismo vertical "serrado", es PAL progresiva "legal", pero siempre siguen siendo (con la ULA de 48K), frames independientes de 312 lineas cada uno (311 en el 128K y 320 cuando funciona como Pentagon).
De hecho la opción por defecto sigue siendo el pulso de sincronismo vertical único, como en la ULA original. Aún no hay opción en la BIOS para cambiar este setting.
Si esto es lo del COPT, ya no es así desde la BIOS 0.65, por defecto es PAL. Hablé con Antonio de meter los cambios de mi BIOS alternativa en la oficial, y estuvo de acuerdo con ambos (arrancar en rooted pulsando una tecla, y que sea sincronismo PAl por defecto), y ya están metidos.

Lo ideal sería un setting de la BIOS claro, pero al menos en mi opinión es mejor que por defecto sea PAL, porque ayuda a bastante gente a que se vea mejor en sus TVs y la usar la señal original solo hará falta para alguna demo, y siempre puedes usar ZXUC - y no se si ZXUNOCONFIG - para cambiarlo antes de ver la demo (si tu TV lo soporta claro).

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Proposición ZXUno+

Mensaje por mcleod_ideafix » 23 Ene 2018, 13:19

Uto escribió:
mcleod_ideafix escribió:Lo ideal sería un setting de la BIOS claro, pero al menos en mi opinión es mejor que por defecto sea PAL, porque ayuda a bastante gente a que se vea mejor en sus TVs y la usar la señal original solo hará falta para alguna demo, y siempre puedes usar ZXUC - y no se si ZXUNOCONFIG - para cambiarlo antes de ver la demo (si tu TV lo soporta claro).
Las demos, necesiten la precisión que necesiten, les da igual cómo sea la señal de sincronismo vertical. No tenía ni idea de que se planeaba poner por defecto sincronismo PAL "estándar" desde la BIOS. Yo aún uso la 0.64 de hecho. De todas formas, cuando me refería a "por defecto" era en el core, que el valor del registro COPT es 0 cuando el core comienza a funcionar.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

zx81
Mensajes: 56
Registrado: 08 Ene 2018, 16:55

Re: Proposición ZXUno+

Mensaje por zx81 » 23 Ene 2018, 16:39

mcleod_ideafix escribió:
zx81 escribió:Varios. El z80full de Patrik Rak para comprobar la implementación del Z80. Fallan 52 tests, aunque podrían repetirse comprobando por ejemplo las instrucciones sin tener en cuenta el registro WZ (llamado memptr por otros), ni el comportamiento de los bits 3/5 en una instrucción SCF/CCF, por ejemplo. En general, no diría que algo me ha fallado por culpa del Z80 (me queda la duda del Taipan 128k, pero al respecto de eso no has comentado nada).
Como dije, el core de Z80 que tenemos es el que tenemos. A diferencia de lo que suele ocurrir en emulación, en donde cada autor se curra su propio core de Z80, en hardware casi todo el mundo usa el mismo core, el T80 de OpenCores, que funciona "de aquella manera". Hay otro, mucho más exacto, que uso en el core de Amstrad CPC, el az80 de Goran Devic, pero es un core poco optimizado para FPGA, que ocupa mucho más que el T80 y encima es más lento.
Ya imagino que sintetizar una CPU en VHDL no es fácil. Lo de que el core az80 sea más lento no lo entiendo muy bien. Supongo que te referirás a que tiene mayores retardos de propagación o algo similar. Lo poco que he visto de VHDL muestra que, a diferencia de un programa SW, muchas cosas se "ejecutan" en paralelo. Pero claro, si pasas por muchas puertas y tienes mucho retraso, al final tampoco ganas nada.

¿No has llegado a probar a ver qué pasa poniendo el az80 junto con lo básico para tener un 48k, para empezar?. Si cabe un CPC...

Y yo, si hay que prescindir de "delicatessen" como el ULA+ o el DivMMC, con tal de tener un 48k que se cagues las patas p'abajo, me sacrifico. :D
mcleod_ideafix escribió:
zx81 escribió:El Fusetest que va con el emulador Fuse. Además de fallar en algunas instrucciones del Z80, falla en floating bus. De este mismo emulador, el Frame.tap, que da una diferencia en el cálculo de frames.
Ok. Lo veo, pero... ¿cómo debo interpretar que el test ha fallado? Veo que dice ""failed", pero no sé cómo interpretar ese fallo ni en qué me ayuda.
Para eso ayuda más el floatspy o el ulatest3-modified que te dice lo que va encontrando. Los test de Fuse solo dicen que algo ha fallado, pero no qué.
mcleod_ideafix escribió:
zx81 escribió:El ulatest3-modified, que es un programa de Jan Bobrowski, el autor de 'qaop' y modificado por Chris Smith, de hecho me parece que me lo bajé de su web. Se ve claramente como las contenciones están desplazadas.
Curioso que el ulatest original de JB sí que me sale igual que en el QAOP/JS
Yo uso el -modified porque sale en colorillos y queda más claro qué tipo de contención tiene. La verdad es que no he probado ese emulador, debe ser que le tengo la misma manía al JodeScript que le tienes tú a Java. Pero ya hace años que Jan hizo un emulador de 48k que iba bastante bien. Aunque hace mucho que no lo uso, me extrañaría que no pasara ese test. Yo suelo comparar con Fuse, que es el que tengo más a mano.
mcleod_ideafix escribió:
zx81 escribió:También de Jan, el btime.tap, que muestra como el primer byte de pantalla se pinta en el t-state 14335 y no en el 14336 como correspondería a un 'early-timing'
Acabo de probarlo y comienza la escritura en 14336. Si pulso A, la linea se desplaza 8 pixeles a la izquierda. El comportamiento lo veo idéntico al emu QAOP/JS.

De hecho, de esta página:
http://wizard.ae.krakow.pl/~jb/qaop/tests.html

Me funcionan (funciona = sale lo mismo que en el QAOP/JS) los siguientes tests:
btime
stime
ulatest3
minfo
contention
iocontention
zexbit
timingtest

No he probado:
keyboard

Fallan:
fusetest
z80tests (sobre todo el segundo.... está claro que el T80 no implementa, o lo hace mal, el registro WZ)
Timing Tests de Richard Butler

Desde luego, si intento (sería la cuarta vez) escribir un core Z80 desde cero, estos tests tendré que trillármelos a base de bien, pero mientras tanto, me temo que uso el T80 como si fuera (casi) una caja negra. El código está en VHDL, que no domino (yo uso Verilog), pero lo peor es que no está nada documentado, ni unos comentarios, ni ná.
Lo acabo de recomprobar y no, el QAOP/JS lo hace bien, el ZX-Uno no, al menos con el FW 0.64, core T24 que tengo yo. Cuando el btime arranca, "parece" que sale bien. Pero si pulsas 'a' y vas al estado 14335, la línea roja debería desplazarse hacia atrás el equivalente a 8 pixels. Y si vas con 'q' hacia adelante, la linea roja salta 8 pixels hacia adelante en 14339 y debería hacerlo en 14340.
mcleod_ideafix escribió:
zx81 escribió:La "demo" BorderTrix de Andrew Owen (llamarlo demo es muy exagerado, creo yo, llamémoslo prueba de concepto), no muestra una imagen fija, sino saltarina en los bordes superior e inferior.
Esa demo también me funciona bien. ¿Qué versión del core tienes?
Confirmo, la T24-04022017.
mcleod_ideafix escribió:
zx81 escribió:Si el 128k tiene contención en las páginas 1,3,5 y 7 es ahí donde la pongo.
Aunque el programa no falle, sí se nota. Pongamos un ejemplo: el infame e injugable por estar completamente roto, "Tarzán" de Martech. Lo único bueno del programa es la melodía del principio y esa melodía tiene la peculiaridad de escucharse como se compuso en el 128k/+2 y acelerada como un Neng en el +2a/+3. Si no recuerdo mal, los datos de la melodía están guardados en una página de memoria en contienda en el 128k, pero en una sin ella en el +2a. La verdad es que no recuerdo bien los detalles, pero por ahí iba el asunto. Otro programa afectado es el Cabal 128k, que se suponer que no funciona en el 128k, solo en el +2a por un problema similar. Otro programa afectado es el Robocop 3 que, no es que no funcione (en teoría NO funciona por poner el registro I donde no debe estar, pero yo lo he cargado en un +2 y no se ha reseteado). Cuando lo cargas en un +2a todo se ve OK. Pero si lo cargas en un 128k/+2 y te pones a ver la demo del principio, sin jugar, aparece la primera fase con los edificios. Fíjate entonces en el scroll de los mismos y verás como en la parte de la base de los edificios el scroll se desincroniza y se ven partidos, efecto que no sucede en el +2a. Eso no rompe el juego, pero para mi gusto y opinión no hace lo que hace el real.
Estos juegos que me dices..... tienen esos glitches porque esperan contención en esas páginas entonces?
Sí, en juegos como Robocop 3 o Tarzán es claramente porque la contención cambia de las páginas 1,3,5,7 en el 128k a 4,5,6,7 en el +2a. Eso suponiendo que sea fácil también en la reproducción del +2a hacer que los accesos a la I/O no tengan contención.
mcleod_ideafix escribió:
zx81 escribió:Esto es un poco más lioso de explicar pero si me aclaras un par de puntos yo también sabré algo más. Si no me equivoco, a diferencia del Spectrum el ZX-Uno genera una imagen con todas las bendiciones del estándar PAL. Y eso... es un problema. Los timings del Spectrum van intrínsecamente unidos a una imagen fuera del estándar, por desgracia.
Y de hecho, así es en el ZX-UNO. La única cosa que he hecho es dar la opción a que el pulso de sincronismo vertical pueda ser, o bien un pulso, como en el original, o bien una señal "serrada" como dice la norma. Con la opción de sincronismo vertical "serrado", es PAL progresiva "legal", pero siempre siguen siendo (con la ULA de 48K), frames independientes de 312 lineas cada uno (311 en el 128K y 320 cuando funciona como Pentagon).
De hecho la opción por defecto sigue siendo el pulso de sincronismo vertical único, como en la ULA original. Aún no hay opción en la BIOS para cambiar este setting.
Lo "alegal" o "paralegal" no es que la señal de sincronismo tenga una forma u otra. El asunto es que el refresco de un 48k son 50.08 Hz, no los 50 que prescribe el estándar. Y la imagen debe ser interlazada, no progresiva. El asunto es que si muestras 50 cuadros por segundo de 69888 t-estados cada uno, eso hacen 3.494.400 Hz de CPU y no los 3.500.000 del original. Cada 625 cuadros (¿casualidad?) pierdes uno entero, aproximadamente cada 12'5 segundos.

El otro día estábamos haciendo pruebas comparativas de sonido, entre lo generado por un Spectrum + y por el ZX-Uno, y poniendo en un canal de audio el Spectrum+ y en el otro el ZX-Uno, buscando un punto de sincronismo es evidente que el sonido se desincroniza rápidamente.

El asunto es una putada porque, si haces un emulador que funcione exactamente al ritmo del Spectrum real y lo ves en una pantalla a 576i - 50 Hz, se ve genial con la pega de que ves subir la línea de retrazo. Y a ver cómo le dices a una TV moderna por HDMI que quieres una resolución de 50.08 Hz (el caso es que si conectas el Spectrum real se ve a esa frecuencia, aunque sea de pena).

Para alguien novato en esto del ZX-Uno, ¿es seguro poner el core EXP25v4 sin tener que salir corriendo al chapista?. Que luego no quiero tener que andar operando al ZX-Uno conectándolo vía real a una PI para sacarlo del coma etílico... :D

P.D.: Edito para decir que me he tirao al toro y al torero, he actualizado el core al EXP25v4 y con eso el BTIME de Jan ya sale en su sitio.
Última edición por zx81 el 23 Ene 2018, 20:04, editado 1 vez en total.

Avatar de Usuario
mapache
Mensajes: 272
Registrado: 15 Dic 2016, 22:24

Re: Proposición ZXUno+

Mensaje por mapache » 23 Ene 2018, 16:51

Si no lo cargas como el core principal diría que no (aparte del riesgo de que cada vez que actualizas un core pueda brickearse por ejemplo si se va la luz), aunque mejor que responda un experto. Para recuperarlo también puedes usar USB blaster de Antonio Villena.

Sobre la discusión del Z80, es interesantísimo, ¿no sería viable usar un Z80 real junto a la FPGA como hace ZX Evolution? siendo el core principal y la razón de ser del equipo todo lo que sea alcanzar precisión bienvenido sea. En mi tele la demo "Mescaline" no mezcla bien los colores y se nota mucho parpadeo, no sé si es cosa de la tele o de lo que comenta zx81 porque probé en otra y se venía mucho mejor si no recuerdo mal. En cuanto pueda pruebo la opción de la BIOS.

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Proposición ZXUno+

Mensaje por antoniovillena » 23 Ene 2018, 17:14

mapache escribió: Sobre la discusión del Z80, es interesantísimo, ¿no sería viable usar un Z80 real junto a la FPGA como hace ZX Evolution? siendo el core principal y la razón de ser del equipo todo lo que sea alcanzar precisión bienvenido sea. En mi tele la demo "Mescaline" no mezcla bien los colores y se nota mucho parpadeo, no sé si es cosa de la tele o de lo que comenta zx81 porque probé en otra y se venía mucho mejor si no recuerdo mal. En cuanto pueda pruebo la opción de la BIOS.
Es viable. De hecho existe un addon para ZX-Uno que contiene un Z80 en el repositorio, que ha usado McLeod bastante para depurar cores (tanto el de Spectrum como el de Amstrad CPC). El problema de esto es que un addon así incrementa el coste. Además el 90% del espacio del core lo ocupa la CPU y si se la quitas del core tendrás la FPGA infrautilizada. Ahora bien, para CPLDs sí que resulta interesante el tema de tener un Z80 aparte (como hacen el Humble 48 y el ZX Max 48).

zx81
Mensajes: 56
Registrado: 08 Ene 2018, 16:55

Re: Proposición ZXUno+

Mensaje por zx81 » 23 Ene 2018, 17:19

mapache escribió:Si no lo cargas como el core principal diría que no (aparte del riesgo de que cada vez que actualizas un core pueda brickearse por ejemplo si se va la luz), aunque mejor que responda un experto. Para recuperarlo también puedes usar USB blaster de Antonio Villena.[/qoute]

Pero el core que hay en el SVN se llama SPECTRUM.ZX1, supongo que listo, presto y dispuesto para cargarlo como core principal. ¿Podría renombrarlo simplemente a COREn.ZX1 y funcionaría?.
mapache escribió:Sobre la discusión del Z80, es interesantísimo, ¿no sería viable usar un Z80 real junto a la FPGA como hace ZX Evolution? siendo el core principal y la razón de ser del equipo todo lo que sea alcanzar precisión bienvenido sea. En mi tele la demo "Mescaline" no mezcla bien los colores y se nota mucho parpadeo, no sé si es cosa de la tele o de lo que comenta zx81 porque probé en otra y se venía mucho mejor si no recuerdo mal. En cuanto pueda pruebo la opción de la BIOS.
SI pones una placa con un Z80, no se te olvide añadir un AY, y así matamos dos pájaros de un tiro... :D

El problema es que en las TV modernas depende mucho de cómo lo haga cada una a nivel interno, lo verás mejor o peor. La mía, cuando la pones a 576i@50, se nota que está haciendo un procesado del carajo y ves como algunas partes se redibujan tarde o algo así, da igual que lo veas por SCART, compuesto o por soleares.

zx81
Mensajes: 56
Registrado: 08 Ene 2018, 16:55

Re: Proposición ZXUno+

Mensaje por zx81 » 23 Ene 2018, 17:23

antoniovillena escribió:
mapache escribió: Sobre la discusión del Z80, es interesantísimo, ¿no sería viable usar un Z80 real junto a la FPGA como hace ZX Evolution? siendo el core principal y la razón de ser del equipo todo lo que sea alcanzar precisión bienvenido sea. En mi tele la demo "Mescaline" no mezcla bien los colores y se nota mucho parpadeo, no sé si es cosa de la tele o de lo que comenta zx81 porque probé en otra y se venía mucho mejor si no recuerdo mal. En cuanto pueda pruebo la opción de la BIOS.
Es viable. De hecho existe un addon para ZX-Uno que contiene un Z80 en el repositorio, que ha usado McLeod bastante para depurar cores (tanto el de Spectrum como el de Amstrad CPC). El problema de esto es que un addon así incrementa el coste. Además el 90% del espacio del core lo ocupa la CPU y si se la quitas del core tendrás la FPGA infrautilizada. Ahora bien, para CPLDs sí que resulta interesante el tema de tener un Z80 aparte (como hacen el Humble 48 y el ZX Max 48).
Hasta que se consiga tener un Z80 full-equip y que quepa de sobras en la FPGA, yo diría que no es una solución, es LA solución. Y si de paso le añades un AY, me ponga dos y me las envuelve para regalo. :D

Y como decía un compañero mío de curro, el agua nunca sobra. Pues lo mismo. Si quitas el core Z80 de la FPGA, seguro que acabará lleno, no sé con qué, pero espacio nunca sobra.

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Proposición ZXUno+

Mensaje por Uto » 23 Ene 2018, 17:35

También se ha dicho en algún sitio de este foro que poner un Z80 real limita la velocidad máxima, porque no hay Z80 reales a 28Mhz.

zx81
Mensajes: 56
Registrado: 08 Ene 2018, 16:55

Re: Proposición ZXUno+

Mensaje por zx81 » 23 Ene 2018, 17:44

Uto escribió:También se ha dicho en algún sitio de este foro que poner un Z80 real limita la velocidad máxima, porque no hay Z80 reales a 28Mhz.
Como todo en esta vida, depende del objetivo que busques. El mío es tener un clon del Spectrum 48k (si lo tengo del 128k también, miel sobre hojuelas) que sea indistinguible del original en todos los sentidos posibles. Con 3'5 Mhz me bastan (3'5469 Mhz para el 128k).

En mis objetivos no están el CPC, el MSX, los Timex, el Sam Coupé, los modos ULA+, el DivMMC o el Space Invaders. Respeto a quien sí lo quiera, pero yo prefiero tener UN solo core que sea perfecto, a tener cuatro docenas a medias.

Esta es mi opinión. Si no le gusta, tengo otras... :)

Avatar de Usuario
mapache
Mensajes: 272
Registrado: 15 Dic 2016, 22:24

Re: Proposición ZXUno+

Mensaje por mapache » 23 Ene 2018, 17:54

A mi desde luego me interesaría un ZX-Uno "Purist bitch" edition. Echa un ojo a ZX Nuvo 128, el harlequín moderno, aunque no sé como de preciso es.
Última edición por mapache el 23 Ene 2018, 18:30, editado 2 veces en total.

Responder