Claro, es justo el volcado que estoy intentando pasar a disco, pero imagino que no será el de la edición distribuida en España...El juego está volcado en CPC-Power casi seguro. En Amstrad.es vamos poco a poco.
Volcar un DSK a disco
- jgonza
- Keeper of The Forum
- Mensajes: 962
- Registrado: Mié 04 Abr , 2007 9:21 pm
- Ubicación: Alboraya (Valencia)
Re: Volcar un DSK a disco
Visita mi canal de YouTube http://www.youtube.com/c/jgonza
- jgonza
- Keeper of The Forum
- Mensajes: 962
- Registrado: Mié 04 Abr , 2007 9:21 pm
- Ubicación: Alboraya (Valencia)
Re: Volcar un DSK a disco
Perdonad que reflote el hilo, he empezado a hacer el programa y estoy leyendo información de la cabecera de un Extended DSK (el del Knight Force cara A)Me respondo a mi mismo: http://www.cpcwiki.eu/index.php/Format: ... ile_format
Voy a ver si me hago un programita que sea capaz de al menos leer e interpretar ficheros DSK.
Prácticamente he leído con éxito todos los datos que hay en el DISK INFORMATION BLOCK excepto el último campo que se hace llamar "track size table" que entiendo que debe ser una tabla con los tamaños de cada pista. Por lo que parece, es 1 byte para almacenar la información del tamaño de cada pista. Lo que no me termina de quedar claro es ¿qué significa "tamaño"?
Además, justo a continuación se habla de la TRACK OFFSET TABLE, que yo diría que es justamente eso mismo (track size table) ¿Por qué ese pequeño cambio de nombre? En esta sección ya no se habla de "tamaños" sino de "byte alto de la longitud de pista" y apunta que es equivalente a la longitud de la pista dividido por 256... no me aclaro... y por último se indica que la descripción de (el tamaño de) la pista 0 se hace en el desplazamiento 1 lo cual no tiene mucho sentido para mi, debería ser en el desplazamiento 0 ¿no?
Help!
Visita mi canal de YouTube http://www.youtube.com/c/jgonza
- robcfg
- Master of The Forum
- Mensajes: 1308
- Registrado: Jue 03 Abr , 2008 5:32 pm
- Ubicación: Estocolmo
- Contactar:
Re: Volcar un DSK a disco
Buenas!
Yo me hice una clase de C++ para leer archivos DSK/EDSK y lo que tengo es lo siguiente:
Asi que es la distancia dentro del archivo de donde te quedas al terminar de leer una pista y donde empieza la siguiente, dividido entre 256.
Espero no equivocarme o liarte mas
Yo me hice una clase de C++ para leer archivos DSK/EDSK y lo que tengo es lo siguiente:
Código: Seleccionar todo
// Read tracks
for( unsigned short int track = 0; track < diskInfoBlock.tracksNum; ++track )
{
for( unsigned char side = 0; side < diskInfoBlock.sidesNum; ++side )
{
// Read Track info block if this is not an extended DSK, or if the disk is an
// extended DSK and thus the track size table has a non-zero value.
if( !isExtendedDSK || diskInfoBlock.trackSizeTable[ (track * diskInfoBlock.sidesNum) + side] )
{
size_t fileOffset = ftell(pIn);
if( !ReadTrackInformationBlock(pIn) )
{
fclose(pIn);
return false;
}
if( isExtendedDSK )
fseek( pIn, fileOffset + (diskInfoBlock.trackSizeTable[ (track * diskInfoBlock.sidesNum) + side]*256),SEEK_SET );
}
else
{
// Insert unformatted track info
CDSKFile_TrackInfoBlock tib;
tib.isUnformatted = true;
sides[side].push_back(tib);
}
}
}
Espero no equivocarme o liarte mas
- jgonza
- Keeper of The Forum
- Mensajes: 962
- Registrado: Mié 04 Abr , 2007 9:21 pm
- Ubicación: Alboraya (Valencia)
Re: Volcar un DSK a disco
Sí, creo que ya lo he pillado. En hexadecimal, el número &WXYZ son 2 bytes, el byte alto sería WX y el byte bajo sería YZ.
Por tamaño de pista, se está refiriendo a número de bytes que ocupa la información de dicha pista dentro del fichero EDSK.
Así, un byte alto de 26 (que es lo que me sale a mi al leer ese dato del .dsk de la cara A del Knight Force, significa que el tamaño de la pista en bytes dentro del archivo sería de &2600, o lo que es lo mismo multiplicar ese 26 en hexadecimal por 256 (16 al cuadrado), es decir, 38 * 256 = 9728 bytes = 9.5Kb. Eso es el espacio dentro del fichero que ocupa la información almacenada para esa pista en concreto.
Aunque sigo pensando que hay una errata en el documento y que la información del byte alto de la longitud de la pista 0 debería estar en el offset 00 y no en el 01 como así se indica.
Por cierto, yo lo estoy haciendo en Java, y aunque sea algo que ya está hecho, lo considero un ejercicio necesario para poder aprender del tema.
Salu2 y gracias!!!
P. S. Aunque quizá (viendo el tamaño del archivo) ese 26 ya sea en decimal, o sea, el tamaño sería 26 * 256 = 6656 bytes = 6.5Kb
Por tamaño de pista, se está refiriendo a número de bytes que ocupa la información de dicha pista dentro del fichero EDSK.
Así, un byte alto de 26 (que es lo que me sale a mi al leer ese dato del .dsk de la cara A del Knight Force, significa que el tamaño de la pista en bytes dentro del archivo sería de &2600, o lo que es lo mismo multiplicar ese 26 en hexadecimal por 256 (16 al cuadrado), es decir, 38 * 256 = 9728 bytes = 9.5Kb. Eso es el espacio dentro del fichero que ocupa la información almacenada para esa pista en concreto.
Aunque sigo pensando que hay una errata en el documento y que la información del byte alto de la longitud de la pista 0 debería estar en el offset 00 y no en el 01 como así se indica.
Por cierto, yo lo estoy haciendo en Java, y aunque sea algo que ya está hecho, lo considero un ejercicio necesario para poder aprender del tema.
Salu2 y gracias!!!
P. S. Aunque quizá (viendo el tamaño del archivo) ese 26 ya sea en decimal, o sea, el tamaño sería 26 * 256 = 6656 bytes = 6.5Kb
Visita mi canal de YouTube http://www.youtube.com/c/jgonza
-
- Me voy lanzando
- Mensajes: 74
- Registrado: Jue 25 Dic , 2014 9:46 am
Re: Volcar un DSK a disco
¿conseguiste volcarlo?
- jgonza
- Keeper of The Forum
- Mensajes: 962
- Registrado: Mié 04 Abr , 2007 9:21 pm
- Ubicación: Alboraya (Valencia)
Re: Volcar un DSK a disco
pues... no me acuerdo de lo que sí estoy seguro es que este tema lo dejé aparcado hace tiempo
Visita mi canal de YouTube http://www.youtube.com/c/jgonza
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro
La Comunidad Española |