Volcar un DSK a disco

Cómo pasar juegos a diferentes archivos, herramientas, software.
Avatar de Usuario
jgonza
Keeper of The Forum
Keeper of The Forum
Mensajes: 962
Registrado: Mié 04 Abr , 2007 9:21 pm
Ubicación: Alboraya (Valencia)

Re: Volcar un DSK a disco

Mensajepor jgonza » Sab 19 Oct , 2019 8:17 pm

El juego está volcado en CPC-Power casi seguro. En Amstrad.es vamos poco a poco.
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...
Visita mi canal de YouTube http://www.youtube.com/c/jgonza

Avatar de Usuario
jgonza
Keeper of The Forum
Keeper of The Forum
Mensajes: 962
Registrado: Mié 04 Abr , 2007 9:21 pm
Ubicación: Alboraya (Valencia)

Re: Volcar un DSK a disco

Mensajepor jgonza » Jue 14 Nov , 2019 1:38 pm

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.
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)

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

Avatar de Usuario
robcfg
Master of The Forum
Master of The Forum
Mensajes: 1308
Registrado: Jue 03 Abr , 2008 5:32 pm
Ubicación: Estocolmo
Contactar:

Re: Volcar un DSK a disco

Mensajepor robcfg » Jue 14 Nov , 2019 3:20 pm

Buenas!

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);
}
}
}
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 :mrgreen:

Avatar de Usuario
jgonza
Keeper of The Forum
Keeper of The Forum
Mensajes: 962
Registrado: Mié 04 Abr , 2007 9:21 pm
Ubicación: Alboraya (Valencia)

Re: Volcar un DSK a disco

Mensajepor jgonza » Vie 15 Nov , 2019 1:28 pm

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
Visita mi canal de YouTube http://www.youtube.com/c/jgonza

cosa_nostra-6128
Me voy lanzando
Me voy lanzando
Mensajes: 74
Registrado: Jue 25 Dic , 2014 9:46 am

Re: Volcar un DSK a disco

Mensajepor cosa_nostra-6128 » Vie 30 Abr , 2021 3:17 pm

¿conseguiste volcarlo?

Avatar de Usuario
jgonza
Keeper of The Forum
Keeper of The Forum
Mensajes: 962
Registrado: Mié 04 Abr , 2007 9:21 pm
Ubicación: Alboraya (Valencia)

Re: Volcar un DSK a disco

Mensajepor jgonza » Lun 03 May , 2021 11:44 am

:-k pues... no me acuerdo :mrgreen: de lo que sí estoy seguro es que este tema lo dejé aparcado hace tiempo :-ss
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
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic