Buenas señores...
Me alegro mucho de que esto vaya avanzando, que se haya liado la gente a generar muchos TSX y que ya se esté hablando del soporte por emuladores e incluso en RomCenter.
Sin embargo, me gustaría dar mi opinión y hacer algunos comentarios sobre todo esto que se está hablando de los CRCs y de la identificación de los volcados.
Lo que habría que hacer es ver cómo lo hacen en otros sistemas que usen el formato, y en concreto en el formato originario: Spectrum y TZX. No olvidemos que nuestro TSX no es más que una ampliación de ese formato, y que todas las dudas y opciones que se están planteando ya las tuvieron en su momento esos usuarios, por lo que habrá unos procedimientos establecidos y unas soluciones a las que llegaran en su día para la catalogación y clasificación. Se trata de no reinventar la rueda.
Yo por mi parte soy partidario de incluir los metadatos en los cálculos de checksum, pero eso sí, estandarizando de alguna manera la información reflejada y extraida de la cinta, me explico un poco mejor a continuación.
En mis tiempos hice algunos volcados de cintas de Spectrum en TZX, y nunca una misma cinta producía un TZX idéntico. Ningún motor de casete normal (a lo mejor la NASA tiene uno que sí) es tan estable como para tener siempre la misma velocidad en todo momento, y las cintas tampoco están en las mismas condiciones después de dos pasadas que de veinte, si llevan tiempo sin usarse. Así que a veces un silencio era de 995 ms, y en otro intento ese mismo silencio era de 1003 ms. Sin embargo el estándar de grabación de Spectrum dictaminaba que ese silencio era de 1 s (1000 ms) y la lógica así lo indicaba también.
El tema de los baudios es el mismo caso, sin embargo aquí el MakeTZX sí que redondeaba habitualmente la cifra detectada y lo marcaba como carga estándar aunque fuera un poco más rápido o lento de la cuenta, corrigiendo él mismo las desviaciones del motor de la cinta.
Aplicado esto al MSX, yo soy partidario de corregir los metadatos a las cifras "oficiales" del estándar o a lo que la lógica dicte para los resultados obtenidos. De esa manera 1150 o 1250 baudios serían claramente 1200 baudios, mientras que los tiempos de silencio o de tonos guía habrían de ajustarse a lo definido en el estándar. Claro, esto no se puede aplicar a todas las cintas ya que muchas tienen carga turbo o silencios de duración no estándar. Pero es un buen punto de partida y de esa manera obtendríamos una manera de estandarizar y unificar también los metadatos.
Por otra parte una vez que se hubieran volcado muchas cintas, ya se podría ir viendo la estructura habitual de las cargas turbo y las protecciones más habituales, aplicando entonces la estandarización o redondeo de baudios, silencios, etc...
En Spectrum ya hice muchas de estas preguntas que se están haciendo aquí, y las respuestas que me dieron es que había gente que lo hacía de una manera y otra gente que lo hacía de la otra: vamos que cada uno hacía lo que le parecía más correcto, sin que hubiera una manera de trabajar unificada.
Al principio lo importante era definir el formato y arrancar, pero ya que nos estamos poniendo serios quizás merezca la pena dedicarle un rato a todo esto que comento. Y prometo que cuando vuelva a tener tiempo empezaré a colaborar volcando mis centenares de cintas originales.
Un saludo
PD: por rizar el rizo, quizás estaría bien calcular y almacenar el checksum de las dos maneras posibles: solo los datos o datos+metadatos. De esa manera todo el mundo estaría contento y tendríamos la manera de identificar de manera inequívoca un mismo juego, y por otro lado ver si además es el mismo volcado u otro distinto.