lunes, 26 de mayo de 2025

Gotek Flashfloppy en Amstrad CPC 6128

Muy buenas amigos y amigas de lo retro!!!

Amstrad CPC 6128 fue uno de los ordenadores más icónicos de Europa y por supuesto, en España. Este microordenador de 8bits ya lo hemos visto anteriormente cuando le dimos una buena limpieza y puesta a punto.

En competencia directa con el Commodore 64 y el ZX Spectrum, su hardware robusto, teclado de calidad y gráficos en color lo convirtieron en una plataforma ideal para juegos y aplicaciones. Sin embargo, como toda tecnología de la época, dependía de un soporte físico frágil y obsoleto hoy en día: los disquetes de 3 pulgadas.

Con el paso de los años, las disqueteras originales han ido fallando debido al desgaste de los cabezales, la degradación de las bandas elásticas y la escasez de discos en buen estado.

Esto hace cada vez más difícil disfrutar de la amplia biblioteca de software del CPC... hasta que llegó la Gotek, un dispositivo que ha revolucionado la forma en que los usuarios de sistemas retro interactúan con su software.


¿Qué es exactamente una Gotek?

La Gotek es una unidad de disquete emuladora basada en un microcontrolador STM32, diseñada originalmente para entornos industriales como reemplazo económico de disqueteras.

Sin embargo, la comunidad retro rápidamente descubrió su potencial: al conectarla a un ordenador clásico como el Amstrad CPC y cargar un firmware alternativo como FlashFloppy, la Gotek se convierte en una "disquetera virtual" capaz de leer cientos de juegos desde una simple llave USB.


¿Qué es FlashFloppy?

FlashFloppy es un firmware alternativo y mejorado para las unidades Gotek, desarrollado por keirf. Esta disponible en su repositorio de GitHub y con el podemos sacarle mucho más jugo a nuestros amados ordenadores de 8bits.

El firmware de Flashfloppy ofrece muchas más funciones que el original, mejoras funcionales ya que admite diferentes mods como pantalla OLED o encoder rotativo.

El mod de la pantalla OLED ofrece mejoras visuales como mostrar el archivo seleccionado o la navegación por carpetas:

  • Soporte para múltiples formatos de disco (.DSK, .EDSK, .IPF, .HFE, etc.).
  • Navegación por carpetas en el USB.
  • Pantallas OLED o LCD para visualizar el archivo seleccionado.
  • Soporte para rotary encoder (selector giratorio en lugar de botones).
  • Autoconfiguración para diferentes sistemas (Amstrad CPC, Spectrum, MSX, etc.).
  • Personalización de sonidos y temas visuales.

Es en este punto donde decidimos integrar este sistema en el CPC 6128 y estas son los puntos que tenemos que tener en cuenta antes de empezar:

Microcontrolador: Los dispositivos Gotek han presentado tres generaciones de MCU:

  • STM32F105
  • Artery AT32F415
  • Artery AT32F435

La Gotek que tenemos es la que tiene el chip Artery AT32F435.

Materiales:

  • Cable USB-A a USB-A Este cable lo podemos fabricar con un par de cables USB que tengamos sin usar. Solo hay que unir los cables que tengan el mismo color. En el caso de que no lo sean, hay que medir con el polímetro que los pines coincidan.
  • Pines y puentes Necesarios para que la operación sea más cómoda para la instalación y futuras actualizaciones.

Ahora que tenemos todos los materiales, vamos a ver las modificaciones que tenemos que realizar sobre la placa:

La pantalla Oled en la Gotek es algo prácticamente imprescindible, puede ser de 128x32 o 128x64. Dispondremos de una información más detallada sobre las capetas y archivos.

Listado de pines del zócalo de programación:

  • Boot Jumper: Puenteado con "3V" ponemos la Gotek en modo de programación.
  • 3V: Alimentación 3V
  • Tx: Puerto Tx para programador USB.
  • RX: Puerto Rx para programador USB.
  • RST: No se usa.
  • 5V: Alimentación 5V.
  • GND: GND o masa.

Listado de pines de control:

  • J5: Cambio de disco.
  • JA: Botón Seleccionar/Expulsar/Insertar con pulsador.
  • JC
  • JB: Conexión de un pequeño altavoz o buzzer (J- y B+).
  • S0: On=Gotek seleccionada como unidad A (S1=OFF).
  • S1: On=Gotek seleccionada como unidad B (S0=OFF).
  • M0

Listado de pines para pantalla Oled:

  • SDA: Conexión de datos I2C
  • SCL: Conexión de datos I2C
  • 3V: Alimentación + .
  • GND: Alimentación - .

Actualización del Firmware

En este paso necesitamos el cable USB-A a USB-A y en la placa puentear los pines marcados como Boot Jumper y 3V como se muestra en la parte inferior de la siguiente imagen:


En este paso vamos a cargar el firmware en una maquina con Linux instalado, en este caso Ubuntu:

Vamos a utilizar la herramienta "dfu-util" para flashear el firmware de la Gotek que soporta el protocolo DFU (Device Firmware Upgrade).

Abrimos un terminal y escribimos:


sudo apt update && sudo apt-get install dfu-util

Con la herramienta instalada descargamos el software de Flashfloppy y descargamos la última versión.

Solo falta descomprimir el archivo, lo podemos hacer en el mismo directorio /Descargas. Encontraremos el archivo con extensión .dfu dentro del directorio dfu.

Recuerda usar el firmware correspondiente al microcontrolador que use la placa, en este caso el Artery AT32F435.

Ahora seguimos los siguiente pasos:


1-. Configuración de pines:

Establecemos el pin de programación en la Gotek tal y como hemos visto en la imagen anterior.


2-. Conexión:

Conectamos la Gotek con el cable USB-A a USB-A


3-. Desbloqueamos el firmware actual:

Abrimos un terminal y escribimos:


  dfu-util --list

dfu-utils nos devuelve la siguiente información:

Para romper la protección del firmware en el hilo original proponen el siguiente comando:


sudo dfu-util -D /path/to/flashfloppy-at415-st105-3.36.dfu -a 0 -s 0x08000000:unprotect:force

Pero por algún motivo nos daba un error como que había dos unidades y que le especificara la dirección de la disquetera correcta.

Este dato lo obtenemos del mismo comando "dfu-utils --list" y en este caso es: 2e3c:df11 al que llamaremos "MAC_GOTEK". Investigando un poco por internet tenemos esta variación del comando dfu-util en la que se incluye dicha dirección:


sudo dfu-util -v -d MAC-GOTEK -a 0 -s 0x08000000:unprotect:force -D /path/to/flashfloppy-at415-st105-3.36.dfu 

Esto termina con un error, pero desactiva la protección, por mi parte bien...


4-.Instalacion de Flashfloppy:

Ahora instalamos el firmware Flashfloppy donde tenemos que cambiar /path/to/ por el directorio donde tengamos el archico .fdu y X.XX por la versión de flashfloppy que hayamos descargado


sudo dfu-util -D /path/to/flashfloppy-at415-st105-X.XX.dfu -a 0


5-. Comprobación

Ya tenemos instalado Flashfloppy en nuestro dispositivo Gotek, Ahora desconectamos el cable USB y retiramos el puente entre el "Boot Jumper" y "3V"

Ahora volvemos a conectar el cable USB y en la pantalla aparecerá la siguiente imagen:

¡¡¡Enhorabuena ya tienes la Gotek con firmware Flashfloppy!!!

¿Y ahora?

Ahora nos toca configurar las opciones básicas que, por suerte, son pocas.

En el directorio "examples" tenemos el archivo FF.CFG con la configuración básica de la Gotek. Este archivo lo leera la unidad USB antes de empezar y modificará la configuración con los parámetros que hayamos definido en el archivo FF.CF.

Es decir, para que tenga efecto solo tenemos que copiar el archivo FF.CFG en la raíz de la memoria USB.

A continuación estos son algunos parametros a los que merece la pena echar un vistazo

Mantener pantalla encendida:


# Turn an LCD or OLED display off after N seconds of inactivity.
# N=0: always off; N=255: always on
# - Values: 0 <= N >= 255
# display-off-secs = 60
display-off-secs = 255

Cambio del tamaño del texto

Primero definimos la pantalla en display type y activamos la opción -narrow:


# Display Type.
# auto: Auto-detect (7-seg LED, LCD, OLED)
# lcd-CCxRR: CCxRR backlit LCD with I2C backpack (16<=CC<=40, 02<=RR<=04)
# oled-128xNN: 128xNN I2C OLED (NN = 32 | 64)
#  -rotate:     OLED view is rotated 180 degrees
#  -hflip:      OLED view is flipped horizontally
#  -narrow[er]: OLED view is restricted to Gotek display cutout
#               (-narrow: 18 chars; -narrower: 16 chars)
#  -inverse:    Inverse/reverse video (black text on white background)
#  -ztech:      ZHONGJY_TECH 2.23" 128x32 SSD1305 OLED display
#  -slow:       Run I2C bus slower (use this if OLED regularly blanks/corrupts)
# Values: auto | lcd-CCxRR | oled-128xNN[-rotate][-narrow[er]]...
# display-type = auto
display-type=oled-128x32-narrow

Y cambiamos el tamaño en la sección OLED Font:


# OLED Font. Narrow and wide options.
# Narrower 6x13 font permits:
#  - More characters per row
#  - Use of Gotek display cutout (eg. "display-type=oled-128x32-narrow")
# Values: 6x13 | 8x16
# oled-font = 6x13
oled-font = 8x16

Podemos volver a la configuración original si retiramos la memoria USB y después mantenemos pulsados los botones A(+) y B(+) durante 3 segundos y nos aparece el mensaje: Reset Flash Configuration

Con todo configurado ya podemos conectar la Gotek a nuestro Amstrad CPC6128 con un cable de disquetera estándar FDD que tenga la entrada para disqueteras de 5.25. No hace falta ninguna modificación en el cable FDD.


Ahora si, Cargar discos con Gotek

Con la memoria USB con los juegos y el archivo FF.CFG, lo introducimos en la Gotek y le damos alimentación.

El archivo FF.CFG se carga automáticamente (no hay que hacer nada) y ya podemos pasar a utilizar el archivo que seleccionemos.

Para movernos entre archivos y directorios la Gotek cuenta con 2 pulsadores para el controlar el disco que queremos cargar:

Pulsador A (+) :

  • Siguiente Archivo

Pulsador B (-) :

  • Archivo anterior

Ambos:

  • Reset memoria Flash

Resolución de problemas frecuentes

Como todo, siempre pueden surgir fallos o cosas que salen como deseamos, veamos los fallos mas comunes:

  • Cable de datos mal conectado:

En este caso nos aparece un mensaje en la pantalla OLED informando que el cable no esta mal conectado. Este mensaje no aparece si no hay cable.

  • Inserte Disco en la unidad B:

Si tenemos este error limpia los conectores del puerto de disco. Para una buena limpieza es recomendable usar alcohol isopropílico y un bastoncillo para los oídos. Si esto no funciona cambia el cable.

Este fallo nos puede volver un poco locos, si escribimos:

  • |b

y luego el comando:

  • "cat"

y leía el contenido del archivo pero al ejecutar run"program.bas" saltaba el mensaje de que no hay disco. Como ya hemos comentado arriba, una buena limpieza al conector y un repaso al cable con un pincel y problema solucionado.


Descarga el firmware de FlashFloppy (Release).

Otra fuente de inspiración es la web de Retromaquinas donde hay mucha información y modificaciones.

Información sobre la programación en Linux aquí (en Ingles).

Una gran cantidad de juegos en formato .DSK Amstrad.es .

Otro proyecto que me he escontrado es con Symbos, un sistema gráfico capaz de funcionar en un cpc 6128.

No hay comentarios :

Publicar un comentario