SmartROM firmware

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

SmartROM firmware

Mensaje por Uto » 18 Feb 2021, 17:58

Hola!

Aunque ya lo he comunicado por otros lados, lo dejo aquí para el que le pueda interesar. He desarrollado un firmware para el core de Spectrum delZX-UNO pensado para funcionar en placas FPGA que no tengan flash, o que no puedas usarla (Spectrum Next, por ejemplo).

En su momento mcleod hay había hecho un core "sin flash", que por simplificar digamos que lleva la ROM del toastrack ingles y ESXDOS metido en el propio core, lo que permite arrancar el core de ZX-UNo directamente sin usar ninguna flash, pero claro, sin poder cambiar settings ni poder seleccionar otras ROMs.

El proyecto SmartROM incluye una versión ligeramente modificada de ese core, junto con un fichero que se pone en la SD que permite que al arrancar puedas cargar otras ROMs, y además cambiar algunos settings (joysticks, video output, frecuencia, etc.), además de arrancar en modo rooted, o cambiar la ROM que, en caso de no pulsar ninguna tecla, arranque por defecto.

Para poner ROMs solo hay que poner un fichero ROMS.ZX1 sacado de cualquier ZX-Uno normal en una carpeta.

Espero que esto pueda servir para que el core de Spectrum del ZX-Uno llegue a otras FPGAs que hasta ahora no podían, y llegue con la flexibilidad que ya tiene el core cuando se ejecuta en la placa de ZX-Uno original o sus clones.

Esta es la página del proyecto:
https://github.com/Utodev/smartROM

Avatar de Usuario
desUBIKado
Mensajes: 933
Registrado: 05 Ago 2016, 22:33

Re: SmartROM firmware

Mensaje por desUBIKado » 19 Feb 2021, 09:23

Genial desarrollo que ayudará a expandir el core de Spectrum del ZX-Uno en más FPGA. ¡Enhorabuena!

Una de las cosas que veo que este proyecto podría mejorar, incluso a los que tienen ZX-Uno o ZX-DOS, es que se pudiese superar el límite de 64 slots de 16K para las ROMS (1 MB). Bien por que se pudiese emplear otro formato para almacener las roms, por ejemplo de tamaño variable, y que fuese creciendo según el número de roms incluidas, o bien aumentar el tamaño del fichero ROMS.ZX1 que se pudiese emplear 4MB o 16MB.

Con esos tamaños se podrían meter todas las roms de Spectrum (versiones francesas, árabes, rusas, etc), además que juegos que se quieran cargar como una rom.

gatora
Mensajes: 14
Registrado: 30 Sep 2017, 20:51

Re: SmartROM firmware

Mensaje por gatora » 20 Feb 2021, 09:49

Fantastic development, excellent work !!!!!

I tested it for several hours and describe my experience so far.

1.)
In "core/common/joystick_protocols.v" 87. line : reg [7:0] joyconf = {1'b0,KEMPSTON, 1'b0,KEMPSTON};
I corrected to : reg [7:0] joyconf = {1'b0, KEMPSTON, 1'b0, SINCLAIRP1};

2.)
It doesn't work well for me the "Manic Pietro 1.1".
Starts, but full reset after some time.
I don't know what's causing it.

However, I really like it !!!!!
Many thanks for Your work !!!!!

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

Re: SmartROM firmware

Mensaje por Uto » 20 Feb 2021, 22:37

desUBIKado escribió:
19 Feb 2021, 09:23
Genial desarrollo que ayudará a expandir el core de Spectrum del ZX-Uno en más FPGA. ¡Enhorabuena!

Una de las cosas que veo que este proyecto podría mejorar, incluso a los que tienen ZX-Uno o ZX-DOS, es que se pudiese superar el límite de 64 slots de 16K para las ROMS (1 MB). Bien por que se pudiese emplear otro formato para almacener las roms, por ejemplo de tamaño variable, y que fuese creciendo según el número de roms incluidas, o bien aumentar el tamaño del fichero ROMS.ZX1 que se pudiese emplear 4MB o 16MB.

Con esos tamaños se podrían meter todas las roms de Spectrum (versiones francesas, árabes, rusas, etc), además que juegos que se quieran cargar como una rom.
La SmartROM la hice pensando en aprovechar el mayor número de recursos existentes, es decir, no repetir trabajo. Por eso uso el ROMS.ZX1 que exporta la BIOS original, y que hay un par de aplicaciones que lo manejan. Dicho de otro modo me quité de en medio la engorrosa tarea de hacer un formato nuevo, que habría dado lugar a parte de trabajo tedioso, que me conozco y acaba produciendo mi abandono de proyectos :roll:

Sin embargo, si alguien hiciera un ROMS.ZX1 de 256 slots no sería nada complicado cambiar la SmartROM para soportarlo. Sería cuestión de 15-30 minutos darle soporte, y un poco más si queremos que soporte ambos formatos. Tendría que ser un ROMS.ZX1 con la info de los 256 slots al principio, y luego las ROMS.

Así que si alguno de los autores de herramientas que gestionan el ROMS.ZX1 se anima a hacer algo así, me avisáis (por Telegram preferiblemente) y le doy soporte al ROMS256.ZX1 o como queramos llamarlo.

Otra opción es que la SmartROM soporte cargar hasta 4 ficheros ROMS.ZX1, es decir, que busque en la carpeta el ROMS.ZX1, ROMS2.ZX1, ROMS3.ZX1 y ROMS4.ZX1. Lo que pasa es que esto ya es bastante más incómodo de manejar, y si os soy sincero, este proyecto me ha dejado un poco exhausto y si muchas ganas de andar tocándolo demasiado :-)

Por otro lado, es GPL, así que tampoco hace falta que sea yo, alguien puede hacer un fork o un pull request ;-)

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

Re: SmartROM firmware

Mensaje por Uto » 20 Feb 2021, 22:45

gatora escribió:
20 Feb 2021, 09:49


I tested it for several hours and describe my experience so far.

1.)
In "core/common/joystick_protocols.v" 87. line : reg [7:0] joyconf = {1'b0,KEMPSTON, 1'b0,KEMPSTON};
I corrected to : reg [7:0] joyconf = {1'b0, KEMPSTON, 1'b0, SINCLAIRP1};
Thank you for noticing that, I've checked original source code and it was right the opposite, but it was wrong anyway:

Código: Seleccionar todo

reg [7:0] joyconf = {1'b0, SINCLAIRP1, 1'b0, KEMPSTON};
Here the original sources:
http://svn.zxuno.com/svn/zxuno/cores/sp ... rotocols.v

gatora escribió:
20 Feb 2021, 09:49
It doesn't work well for me the "Manic Pietro 1.1".
Starts, but full reset after some time.
I don't know what's causing it.
Does that ROM work with an original ZX-Uno? If so, does it have proper settings? Most common reason for crashes is triggering DIvMMC trap addresses when executing in ROM with DivMMC active. Most (well, probably all) game ROMs should work with DivMMC disabled.

If you have more information about how that ROM works and how the game is loaded in RAM, maybe I can find how to build it.

I don't have that ROM by the way, so if you can PM it it would be nice :-)

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

Re: SmartROM firmware

Mensaje por azesmbog » 21 Feb 2021, 05:28

Uto escribió:
20 Feb 2021, 22:45

Does that ROM work with an original ZX-Uno?
Моя любимая игра PSSST. ROM с оригинальным ZX-Uno точно работает, а с этим ядром - даже не запускается, черный экран. Manic Miner тоже вроде не заработал из ROM.

Модуль TurboSound работает криво,и тест этого модуля не проходит, но это насколько помню еще в оригинальном ядре ошибка присутствует.
в модуле
https://github.com/Utodev/smartROM/blob ... rbosound.v
65 строка
oe = ~oe_n_ay1;
неверная, должно быть
oe = ~oe_n_ay2;

Но это все мелочи. Главное я не смог запустить New File Browser for ZX-UNO bob_fossil :((
перепробовал ВСЕ!!! версии, sd-card вчера за вечер 150! раз переписывал туда-обратно, вставлял-вытаскивал :(
с оригинальным браузером EsxDos 0.8.8 - все нормально, как только ставлю браузер от Боба - все очень и очень плохо. Какая-то ОГРОМНАЯ! несовместимость :) Обидно, да??
И еще много мелочей, сейчас не вспомню, но они есть.

Но в общем и целом это ядро мне очень понравилось! :plasplas: Мои большие поздравления!!! Очень интересный проект!!!
:gracias!: :gracias!: :gracias!:

Avatar de Usuario
desUBIKado
Mensajes: 933
Registrado: 05 Ago 2016, 22:33

Re: SmartROM firmware

Mensaje por desUBIKado » 21 Feb 2021, 11:42

He probado un poco y en principio funciona bastante bien. En la selección de joystick tarda bastante desde que aprietas la tecla y sale un nuevo protocolo.

Por otra parte una vez que eliges una rom por defecto cuando vuelve a arrancar me parece muy poco tiempo el que presenta la pantalla de selección de roms y opciones. Quizás una opción para retardar el tiempo de espera como en la BIOS del ZX-Uno estaría bien.

Asimismo, he probado 2 roms un poco "especialitas", como son la DerbyPro++ 64K y la SE Basic IV 4.2 20.09.30 Iggy. En caso de la primera, tras elegirla como rom por defecto, y hacer un arranque en frío, no arranca en modo 128K (funcionamiento normal en esta rom), sino en modo 48K. Se puede hacer un soft reset y ya arranca en modo 128K.

Y por último, en la rom SE Basic IV 4.2 20.09.30 Iggy, arranca perfectamente, pero si haces un soft reset la pantalla se queda en PAPER 0 como colgada. Si se hace un soft reset de nuevo pero manteniendo pulsada la tecla SHIFT entonces si arranca bien.

Estas dos roms, a diferencia de las otras roms tipo 128K que con el esxDOS activado arrancan en modo 48K, sí arrancan directamente en modo 128K. Quizás tenga algo que ver su mal funcionamiento con el core smartROM con la funcionalidad de autoboot del esxDOS. No lo se.

EDITO: Otro fallo que he encontrado es que no funciona mi teclado PS/2 con el layout Spectrum (KEYMAPZX.ZX1 -- renombrado --> KEYMAP.ZX1 en carpeta /ZXUNO)

kounch
Mensajes: 1
Registrado: 21 Feb 2021, 13:33

Re: SmartROM firmware

Mensaje por kounch » 21 Feb 2021, 13:42

Uto escribió:
20 Feb 2021, 22:37

Sin embargo, si alguien hiciera un ROMS.ZX1 de 256 slots no sería nada complicado cambiar la SmartROM para soportarlo. Sería cuestión de 15-30 minutos darle soporte, y un poco más si queremos que soporte ambos formatos. Tendría que ser un ROMS.ZX1 con la info de los 256 slots al principio, y luego las ROMS.

Así que si alguno de los autores de herramientas que gestionan el ROMS.ZX1 se anima a hacer algo así, me avisáis (por Telegram preferiblemente) y le doy soporte al ROMS256.ZX1 o como queramos llamarlo.
Hola
acabo de darme de alta en el foro para poder responder. He intentado localizar a alguien con un alias parecido al tuyo en Telegram, pero no ha aparecido nada. Por eso escribo por aquí.

Yo soy el autor de zx123_tool (https://github.com/kounch/zx123_tool) y veo posible hacer los cambios como dices para dar soporte a más slots.

Quizás (viendo que el formato sería incompatible con el anterior), se podría pensar de paso en añadir una firma al principio para poder distinguir entre las dos versiones, y dejar un poco de espacio por si hiciera falta para el futuro, y para que quede todo alineado.


Si el fichero ROMPack original es así:

Código: Seleccionar todo

0x000000 - 0x000FFF => Hasta 64 bloques de 64 bytes (ROM Entries) (rellenar con 0x00 hasta el final)
0x001000 - 0x00103F => Hasta 64 bloques de 1 byte con ROM Index Entry (rellenar con 0xFF hasta el final)
0x001040 - 0x001040 => Default ROM Index (1 byte)
0x001041 - 0x101040 => Hasta 64 slots de 16384 bytes (rellenar con 0x00 hasta el final)

Una propuesta (¿ROMPack v2?) podría ser esta:

Código: Seleccionar todo

0x000000 - 0x000003 => Signature 'RPv2'
0x000004 - 0x00003F => Reservado
0x000040 - 0x004000 => Hasta 255 bloques de 64 bytes (ROM Entries) (rellenar con 0x00 hasta el final)
0x004000 - 0x0040FE => Hasta 255 bloques de 1 byte con ROM Index Entry (rellenar con 0xFF hasta el final)
0x0040FF - 0x0040FF => Default ROM Index (1 byte)
0x004100 - 0x400100 => Hasta 255 slots de 16384 bytes (rellenar con 0x00 hasta el final)
Un saludo

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

Re: SmartROM firmware

Mensaje por Uto » 22 Feb 2021, 18:39

No consigo reproducir lo de la ROM Derby+ 64K, la he probado desde dos ROMS.ZX1 distintos y en ambos arranca en "modo 128k".

El ROMS.ZX1 lo cogí, si no recuerdo mal, del pack de @DEsubiKado, pero en el ROMS.ZX1 que me ha pasado Kounch para probar ficheros de ROMS de 256 slots, también viene, y me arranca en modo 128K igual .

Tengo que mirar lo del keymap, la verdad es que no debería ser complicado pero algo he debido hacer mal.

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

Re: SmartROM firmware

Mensaje por Uto » 22 Feb 2021, 18:57

Ah, he probado tanto el jetpac como el manic miner a modo de ROM, y ambos hacen cosas raras. O bien no estoy desactivando bien el DivMMC, o algo raro pasa. Le echaré un ojo.

Responder