Tarjeta SD como cartucho en Spectrum, ya es posible
Publicado: Sab Oct 24, 2020 11:34 am
Hola a todos!
Recientemente en un grupo de Telegram estuvimos viendo si era posible usar tarjetas SD o microSD como cartuchos, sobre todo teniendo en cuenta la cantidad de gente que tiene un Spectrum montado y tiene además un DivMMC o DivIDE. La idea era básicamente que tuviéramos una SD/microSD que con solo meterla en el DivMMC arrancara el juego, o un menú o una aplicación, o lo que sea, es decir, que actuara exactamente como un cartucho, aunque con alguna ventajilla que luego cuento.
Bien, el primer problema es que, aunque la inmensa mayoría de DivMMCs y DivIDEs llevan ESXDOS como sistema operativo (bueno, los DivMMCs todos), ESXDOS es un SO que la mitad va metido en la flash del DivMMC y la otra mitad en un fichero en la SD. Esto hace que - hasta ahora - para que una SD funcionara, debiera tener dentro los ficheros de ESXDOS de la misma versión. Esto hacía imposible crear un "cartuchoSD", porque habría que hacer un cartucho por versión de ESXDOS. Pues bien, ese muro es el que ha caído. Encontramos la manera de poder evitar ese problema, y además que los juegos auto-arranquen, incluso en versiones antiguas de ESXDOS que no tenían funcionalidad de autor arranque.
Aquí podéis verlo funcionando:
https://www.youtube.com/watch?v=fkUoQY4nX9A
Y aquí hay una explicación más larga:
https://github.com/Utodev/utoboot/blob/main/README.md
Ahí se explica la "técnica" y además hay tres cargadores sencillos que he hecho para juegos que empiecen en 32768, para juegos hechos con AGD y para juegos hechos con DAAD.
La idea final es poder distribuir juegos de la misma manera que se está haciendo en Spectrum Next, por ejemplo:
Por otro lado, he estado trasteando, y es perfectamente posible que la misma tarjeta SD contenga el juego para Spectrum, y una version del juego para Amstrad CPC para M4, ya que no se pisan y ambas pueden arrancar sin problemas.
¿Ventajas frente a un cartucho "de verdad"?
- Las tarjetas SD, o microSD con adaptador son muy fáciles de obtener
- A diferencia del interface 2 u otros interface de cartucho, muchísima gente tiene ya un DivMMC o DivIDE
- Es posible usar funciones de ESXDOS para leer y guardar ficheros en la tarjeta SD, y es realmente sencillo. Pueden hacerse por tanto utlidades, grabar partidas, etc. También tener más espacio para "fases" como en otros cartuchos.
- El especio disponible en una tarjeta SD es inmenso, probablemente se puede hacer incluso un cartuchoSD con todos los juegos de libre distribucíón del Spectrum, creando un menú.
Eso es todo.Ahora solo citar a los "culpables" de que esto funcione:
- Mcleod_ideafix: no estuvo envuelto directamente, pero de una cosa que él hizo fue la semilla que llevó al resultado.
- Andrew Owen: su conocimiento de ESXDOS es alto, y nos llevó por el buen camino más de una vez.
- Antonio Villena: empezó a buscar la solución, y en realidad ya tenia una que funcionaba en todos los DivMMC, pero había que pulsar el boton de NMi para arrancar.
Y finalmente yo mismo, claro, que terminó el asunto, documenté, y encontré la manera de que no fuera necesario pulsar el botón de NMi.
Recientemente en un grupo de Telegram estuvimos viendo si era posible usar tarjetas SD o microSD como cartuchos, sobre todo teniendo en cuenta la cantidad de gente que tiene un Spectrum montado y tiene además un DivMMC o DivIDE. La idea era básicamente que tuviéramos una SD/microSD que con solo meterla en el DivMMC arrancara el juego, o un menú o una aplicación, o lo que sea, es decir, que actuara exactamente como un cartucho, aunque con alguna ventajilla que luego cuento.
Bien, el primer problema es que, aunque la inmensa mayoría de DivMMCs y DivIDEs llevan ESXDOS como sistema operativo (bueno, los DivMMCs todos), ESXDOS es un SO que la mitad va metido en la flash del DivMMC y la otra mitad en un fichero en la SD. Esto hace que - hasta ahora - para que una SD funcionara, debiera tener dentro los ficheros de ESXDOS de la misma versión. Esto hacía imposible crear un "cartuchoSD", porque habría que hacer un cartucho por versión de ESXDOS. Pues bien, ese muro es el que ha caído. Encontramos la manera de poder evitar ese problema, y además que los juegos auto-arranquen, incluso en versiones antiguas de ESXDOS que no tenían funcionalidad de autor arranque.
Aquí podéis verlo funcionando:
https://www.youtube.com/watch?v=fkUoQY4nX9A
Y aquí hay una explicación más larga:
https://github.com/Utodev/utoboot/blob/main/README.md
Ahí se explica la "técnica" y además hay tres cargadores sencillos que he hecho para juegos que empiecen en 32768, para juegos hechos con AGD y para juegos hechos con DAAD.
La idea final es poder distribuir juegos de la misma manera que se está haciendo en Spectrum Next, por ejemplo:
Por otro lado, he estado trasteando, y es perfectamente posible que la misma tarjeta SD contenga el juego para Spectrum, y una version del juego para Amstrad CPC para M4, ya que no se pisan y ambas pueden arrancar sin problemas.
¿Ventajas frente a un cartucho "de verdad"?
- Las tarjetas SD, o microSD con adaptador son muy fáciles de obtener
- A diferencia del interface 2 u otros interface de cartucho, muchísima gente tiene ya un DivMMC o DivIDE
- Es posible usar funciones de ESXDOS para leer y guardar ficheros en la tarjeta SD, y es realmente sencillo. Pueden hacerse por tanto utlidades, grabar partidas, etc. También tener más espacio para "fases" como en otros cartuchos.
- El especio disponible en una tarjeta SD es inmenso, probablemente se puede hacer incluso un cartuchoSD con todos los juegos de libre distribucíón del Spectrum, creando un menú.
Eso es todo.Ahora solo citar a los "culpables" de que esto funcione:
- Mcleod_ideafix: no estuvo envuelto directamente, pero de una cosa que él hizo fue la semilla que llevó al resultado.
- Andrew Owen: su conocimiento de ESXDOS es alto, y nos llevó por el buen camino más de una vez.
- Antonio Villena: empezó a buscar la solución, y en realidad ya tenia una que funcionaba en todos los DivMMC, pero había que pulsar el boton de NMi para arrancar.
Y finalmente yo mismo, claro, que terminó el asunto, documenté, y encontré la manera de que no fuera necesario pulsar el botón de NMi.