Cargando Leches
La idea de CargandoLeches me vino a la cabeza en diciembre de 2011. Quería usar unos de los algoritmos de ultracargas que usa k7zx, pero que se puedan cargan cintas de forma transparente. El inconveniente de k7zx, y de cualquier ultracargador aparecido hasta la fecha, es que hay que especificar los bloques que quieres cargar. Esa información es posible obtenerla de las cabeceras y del bloque BASIC cargador, aunque no es muy fiable y no funciona si el bloque cargador está escrito en código máquina. La única forma de hacerlo, sin alterar el software original, es reemplazar la rutina cargadora de la ROM en cada llamada a la dirección $0556, y emular su comportamiento en cuanto a parámetros, bytes cargados y estado de los registros a la vuelta.

Entonces me puse en contacto con Francisco Villa (creador de k7zx), para que él decidiera cual de los múltiples algoritmos de k7zx era el más adecuado para este proyecto, decantándose por el Throwing Shavings Slow y Raudo. Los dos métodos usan la misma modulación, la diferencia es que Slow es más simple pero menos preciso, y Raudo se comporta mejor en cuanto a temporizaciones pero es más complejo: requiere una tabla mayor y se cuelga o falla si pulsas cualquier tecla.

Comencé a implementar la ROM optando por Raudo con la idea de que la rutina soporte varias velocidades y que funcione incluso con la carga estándar. Poco a poco Francisco iba haciendo sugerencias, y el proyecto se hacía cada vez más ambicioso. Se solucionó parcialmente el problema del cuelgue al pulsar teclas, la posibilidad de cargar snapshots, de trabajar a diferentes frecuencias de muestreo (22050, 24000, 44100 y 48000Hz), rutina descompresora en ROM y posibilidad de cargar en +2A ó +3 sin necesidad de modificar la ROM. Se ha optado por maximizar la compatibilidad, siendo esta de prácticamente del 100% en modelos sin bus flotante. Sólo fallarán los juegos pensados para 16K que hagan uso del IM2 apuntando como tabla de vectores a la zona no usada (bytes a FF) de la ROM original, y en modelos con bus flotante.

La mayoría del código Z80, el reproductor y la web han sido escritos por mí (Antonio Villena). La rutina principal de las ultracargas y el código que calcula el checksum es responsabilidad de Francisco Villa. Miguel Ángel Rodríguez ha colaborado como betatester, como consultor técnico y como traductor. Y el código descompresor exomizer ha sido desarrollado por Metalbrain.

Para dudas, sugerencias o reporte de bugs utilicen el siguiente formulario:

Formulario de contacto







Enviar