Core alternativo de Kyp

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Core alternativo de Kyp

Mensaje por Kyp » 03 Dic 2016, 19:39

He corregido un pequeño fallo que me traía por el camino de la amargura. El problema era que los atributos estaban desplazados un pixel. Lo curioso es que parecía que solo pasaba cuando un atributo tenía flash. Tras darle muchas vueltas por fin he encontrado el fallo. Estaba cargando el latch de salida de atributos demasiado pronto. De paso he modificado el core de la ULA para que sea más combinacional y menos secuencial :silbando:

El caso es que ahora sí, la ULA es 100% fiel a la original.

Para el que quiera probar:
COREn.zip
(77.52 KiB) Descargado 254 veces
Y los fuentes para los curiosos:
https://1drv.ms/u/s!Aj2oYYIgITnQkDeQ6In2UkXgIlsd

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Core de Spectrum alternativo

Mensaje por Kyp » 03 Dic 2016, 19:50

antoniovillena escribió:Ya he probado el core. Si quieres integrarlo con el firmware, lo primero que haría sería darle acceso a la SPI Flash. Es exactamente el mismo hardware que el DivMMC, pero con otros puertos:
$FC3B y $FCDB serían los puertos genéricos, y los registros:
$02 FLASHSPI
$03 FLASHCS
Más info en la wiki:
http://www.zxuno.com/wiki/index.php/ZX_Spectrum

Para probar puedes emplear la utilidad BACKUP (por ESXDOS) por ejemplo
http://www.atc.us.es/svn/zxuno/software/upgrade/
He visto en el código lo de la flash. De hecho quité esa parte al copiar del ZX-Uno el acceso a la SD para mi core (gracias, por cierto :oops: ).
El caso es que no se me ocurre para qué usarlo. Así, a bote pronto, podría leer la ROM de la flash y así no iría embebida en el .BIT y sería más legal. ¿Para qué otra funcionalidad podría usarlo?

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

Re: Core de Spectrum alternativo

Mensaje por antoniovillena » 03 Dic 2016, 21:28

Kyp escribió: He visto en el código lo de la flash. De hecho quité esa parte al copiar del ZX-Uno el acceso a la SD para mi core (gracias, por cierto :oops: ).
El caso es que no se me ocurre para qué usarlo. Así, a bote pronto, podría leer la ROM de la flash y así no iría embebida en el .BIT y sería más legal. ¿Para qué otra funcionalidad podría usarlo?
Para hacer tu core compatible con la BIOS. Así puedes probar distintas ROMs sin tener que recompilar el core. También puedes hacer tu propio firmware que cargue las ROMs de la SD como hizo Fabio, pero esta opción requiere que te curres ese firmware.

azesmbog
Mensajes: 319
Registrado: 17 Feb 2016, 23:07

Re: Core alternativo de Kyp

Mensaje por azesmbog » 04 Dic 2016, 06:46

Kyp escribió: Para el que quiera probar:
Very interesting.
Is it possible version with scandoubler with VGA?
and, of course, thank you for the source :-)

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Core alternativo de Kyp

Mensaje por Kyp » 04 Dic 2016, 19:38

Nueva actualización. Ahora ya funciona la memoria contenida. Al menos pasa el test que hace mi demo de recopilación de músicas de referencia (The Blossoming Years, de MmcM). Es un gusto poder oír el ZX-Uno en estéreo (ACB) :concascos:

Aun así algo no va fino del todo porque los efectos de borde no son del todo exactos :(

Adjunto el core:
COREn.zip
(78.58 KiB) Descargado 233 veces
Y los fuentes:
https://1drv.ms/u/s!Aj2oYYIgITnQkDidhcfnRSCc56Zr

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Core alternativo de Kyp

Mensaje por Kyp » 12 Dic 2016, 23:55

He hecho una puesta a punto completa de mi core. He reescrito la mayor parte en Verilog y la verdad, creo que el código me ha quedado muy claro y ordenado. He eliminado todos los IP Cores. Y ya de paso he cambiado el core de Z80 que usaba antes por el que usa el ZX-Uno que es más fiel al original.

Son cuatro proyectos:

01. Solo la generación de vídeo tal y como lo haría la ULA del 48K. La imagen está almacenada en una ROM usando BRAM.

02. Añado el Z80 y 16K de RAM implementada como una RAM de doble puerto usando BRAM. Lo justo para que arranque el Spectrum, pero no hay ni sonido ni teclado, ni contienda de memoria.

03. Añado los 32K de RAM que faltaban, el sonido, el teclado PS2 e implemento la contienda de memoria. Tenemos un Spectrum de 48K completo. De momento solo podemos cargar de cinta. Toda la memoria RAM está usando la SRAM de la placa. La ROM sigue estando implementada con la BRAM de la FPGA y uso otros 8K de BRAM duplicando la RAM de vídeo, que usa la ULA para generar la imagen.

04. Añado el chip AY en configuración estéreo ACB y el DivMMC. La ROM del DivMMC está también implementada con BRAM.

Los fuentes, incluyendo las versiones anteriores en VHDL están aquí:
https://1drv.ms/f/s!Aj2oYYIgITnQkDHgl2E2_gZD3DWq

El core de la revisión 04:
COREn.zip
(79.43 KiB) Descargado 241 veces
El siguiente paso será, probablemente, cargar las ROMs desde la flash para no depender tanto de la BRAM y a continuación, convertirlo en un Specturm de 128K.

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

Re: Core alternativo de Kyp

Mensaje por antoniovillena » 13 Dic 2016, 00:20

Pues para alguien que quiera aprender FPGAs está muy bien. Yo estoy tratando de adaptar los ejemplos del libro "FPGA Prototyping by VHDL examples" de Pong P. Chu, para que funcionen con el addon uno-trainer.

https://github.com/antoniovillena/zxuno ... ores/curso

Adjunto los binarios.
Adjuntos
curso.zip
(75.33 KiB) Descargado 340 veces

Avatar de Usuario
jepalza
Mensajes: 613
Registrado: 02 Oct 2015, 18:52

Re: Core alternativo de Kyp

Mensaje por jepalza » 13 Dic 2016, 07:02

antoniovillena escribió:Pues para alguien que quiera aprender FPGAs está muy bien. Yo estoy tratando de adaptar los ejemplos del libro "FPGA Prototyping by VHDL examples" de Pong P. Chu, para que funcionen con el addon uno-trainer.

https://github.com/antoniovillena/zxuno ... ores/curso

Adjunto los binarios.
El display lo hice funcionar yo por diversión cogiendo el código de uno de los que he ido adaptando, creo que fue el del Commodore Pet (se ve en las fotos que pone 2016). Le indicas el número que quieres mostrar, y te saca los 4 dígitos. No lo publiqué por que no pensé en ello, pero si es necesario, lo arreglo el finde y lo dejo por aquí. El resto de elementos ya los he empleado mas de una vez, sobre todo los leds, y los interruptores.

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: Core alternativo de Kyp

Mensaje por chernandezba » 13 Dic 2016, 08:45

Kyp escribió:He hecho una puesta a punto completa de mi core. He reescrito la mayor parte en Verilog y la verdad, creo que el código me ha quedado muy claro y ordenado. He eliminado todos los IP Cores. Y ya de paso he cambiado el core de Z80 que usaba antes por el que usa el ZX-Uno que es más fiel al original.
....
Buen trabajo! Sigue así, tiene muy buena pinta :gracias!:
----

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

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Core alternativo de Kyp

Mensaje por Kyp » 20 Dic 2016, 19:36

Estoy modificando el core para implementar un Spectrum 128K, concretamente un +2. Ya he modificado los timmings e implementado el paginado de la RAM. También he ampliado la VRAM para tener dos bancos y, bueno, eso aparentemente funciona.

Me surgen una duda acerca de la contienda. Según WOS los bancos de memoria 1, 3, 5 y 7 tienen contienda, pero o yo lo estoy interpretando mal, o el core del ZX-Uno solo lo hace en el 5 y en el 7. ¿Qué sería lo correcto?

Tras varios intentos he conseguido que mi core se comporte casi igual que el del ZX-Uno con los juegos que tengo para probar. Lo de casi es porque hace lo mismo con todos menos uno, el Fairlight II, que no se porqué pero el efecto de las letras en rojo antes de empezar a jugar hace un extraño y se lo salta. El caso es que aparentemente el juego funciona después bien.

Por cierto, el Robin of the Wood no funciona ni en mi core ni en el del ZX-Uno, parece cosa del DivMMC, pero con el POKE de la churrera no se arregla.

Los juegos que he probado son:
- Brunilda
- Castlevania
- Dreamwalker
- Fairlight II
- Goku mal
- Ninjarjar
- Pentacorn
- Robin of the Wood
- The Hobbit
- Scape from the sewers
Si se os ocurre algún otro conflictivo para probar...

Responder