Tutorial para volcar juegos desprotegidos de cinta a disco en Spectrum +3 y creando un menú de disco.

Avatar de Usuario
kikems
Mensajes: 3392
Registrado: 30 May 2013 19:23
Agradecido : 978 veces
Agradecimiento recibido: 1348 veces

Tutorial para volcar juegos desprotegidos de cinta a disco en Spectrum +3 y creando un menú de disco.

Mensajepor kikems » 29 Oct 2018 17:20

Derivado del último contenido realizado en AmigaWave, quiero dejar aquí redactado el proceso para que quede para el futuro.

La idea es mostrar el proceso, paso a paso, de volcar juegos desprotegidos de cinta a disco sin freezers o similar. El proceso es el mismo para un Spectrum +3 o para cualquier otra solución de almacenamiento en disco del tipo Opus, Disciple , Wafadrive, etc...

Lo primero que necesitamos tener es un disco en blanco, el cassette del juego a volcar y un copión de disco para conocer la dirección de memoria y la longitud de cada uno de los bloques que vamos a volcar. Casi cualquier copión de cinta a cinta de la época sirve para obtener estos valores, yo he usado el de DupliTape de Microhobby.

01-duplitape.png
01-duplitape.png (39.35 KiB) Visto 546 veces


A modo de ejemplo vamos a basarnos el algo real y he decidido tomar el Navy Moves como ejemplo, por tanto todo el proceso vamos a hacerlo con este gran juego que nos dio Dinamic en los 80.

Paso 1 - Obteniendo los datos necesarios.

NOTA: muestro el proceso tomando el supuesto de que vamos a usar una máquina real, algunos emuladores como el spectaculator ya muestra estos valores de posición y longitud al cargar una cinta en el emulador y por tanto este caso se puede saltar.

Cargamos el Duplitape y con la opción J vamos al aparatado de volcado de la cinta a memoria. Una vez en este menú , insertamos la cinta de nuestro juego y le damos al play. A medida que va cargando bloques, nos muestra el nombre, la dirección de inicio y la longitud, que son los valores que necesitamos anotar en un papel para usar posteriormente.

02-datosDuplitape.png
02-datosDuplitape.png (43.9 KiB) Visto 546 veces


Como podemos ver en la imagen, lo primero es la cabecera de basic, que no necesitamos saber datos de ella. Lo siguiente es el archivo "army$" que es la pantalla de carga en modo binario ( en otras ocasiones está en formato simple de Spectrum llamado screen$ ) y finalmente tenemos el bloque en binario del juego. Anotamos los valores de dirección de carga y longitud de cada bloque binario.

navy1 - esta es la cabecera de basic que vemos que autoejecuta en la línea 10
army$ 30000, 6924
nvycode1 25730, 39805

Una vez que hemos obtenido los catos de la primera carga del juego , procedemos a dar la vuelta a la cinta y anotar los datos de la segunda parte del juego que está en la cara B. Estos son los datos obtenidos:

navy2 - cabecera de basic que vemos que también autoejecuta en la línea 10
army$ 30000, 6924 ( en este caso tanto la imagen como los datos de la pantalla de presentación vemos que son los mismos para la carga de la cara A como la carga de la cara B )
navcod 26267, 39268

Nota: no necesitamos cargar los bloques, por lo que una vez que lee la cabecera del bloque y obtiene los datos podemos avanzar rápido en el cassette hasta el siguiente bloque y ahorrar tiempo.

Paso 2 - Abriendo y editando la cabecera de basic.

Reiniciamos el Spectrum y nos vamos al Basic+3. Rebobinamos la cinta por la cara A hasta el principio e insertamos un disco en blanco en la unidad.
Formateamos el disco de la unidad con el comando : format "a:" , ya tenemos el disco listo para trabajar con él.
En un Spectrum +3 , por defecto, todas los comandos de carga y salvado apuntan directamente a la unidad de disco y por tanto tenemos que ejecutar la línea : load "t:" , para que de ahora en adelante todas las rutinas de carga y salvado trabajen directamente sobre la unidad de cinta.
Ahora vamos a "abrir" la cabecera de basic del juego para poder ver y editar su contenido. Con el comando : merge "" ,pulsamos el play en la cinta y carga y lista la cabecera de basic del juego.

03-Cabecera basic.png
03-Cabecera basic.png (40.34 KiB) Visto 542 veces


En las líneas 20 y 30 vemos un load"" code , que sirven para cargar los archivos binarios, pero como está diseñado para cinta, no indica el nombre a cargar que necesita ya que como la información en la cinta ya está ordenada de forma secuencial, no es necesario indicar un nombre. Nuestra intención es volcarlo a disco y es imprescindible asignarle el nombre del archivo al que hace referencia la carga.
En la línea 20 modificamos el " 20 load "" code....." por " 20 load "army$" code....." y lo mismo en la línea 30 " 30 load "navycode1" code.....", de modo que nos queda como en la siguiente imagen.

04-cabecera_modificada.png
04-cabecera_modificada.png (43.16 KiB) Visto 538 veces


Ya tenemos lista nuestra cabecera de basic para que funcione directamente desde disco, así que procedemos a guardarla con el comando : save "a:navymoves1.bas" line 10. Es este caso ponemos lo del ".... line 10" para que al cargar la cabecera basic se autoejecute desde la linea 10 y no necesitemos hacer un "run" cada vez que la carguemos.

Paso 3 - cargando y volcando los binarios a disco.

Hasta ahora solo tenemos unos datos anotados en un papel con unas direcciones y en el disco solo tenemos un archivo, la cabecera modificada de basic.

Vamos a proceder a cargar los bloques binarios, uno a uno y volcarlos a disco. Antes del primer " load "army$"..... ", hay un clear 25729, si en la cabecera hay algún clear como este antes de la primera carga es necesario ejecutarlo, ya que prepara la memoria para cargar el bloque binario. Si no preparamos ese área de memoria es muy posible que al terminar de cargar el bloque el ordenador sufra un cuelgue. Escribimos el comando :

clear 25729

Ahora escribimos el comando : load "" code y pulsamos play en la cinta. Comienza la carga del bloque de datos "army$".
Una vez que termine la carga de datos, vuelve a parpadear el cursos de basic, ya está en memoria , ahora tenemos que guardarlos de la siguiente manera. En el primer paso habíamos obtenido unos datos de dirección y longitud que ahora vamos a introducir. Para el archivo "army$" era 30000 y 6924 como longitud. Para guardar correctamente el binario en memoria introducimos el comando :

save "a:army$" code 30000,6924

Ya tenemos listo el binario de la pantalla en el disco. Ahora hacemos lo mismo con el binario del juego, escribimos el comando : load "" code , de nuevo y pulsamos play en la cinta. Una vez que termine la carga y tirando de los datos que teníamos anotados del paso uno, introducimos el comando :

save "a:nvycode1" code 25730,39805

Con esto ya tenemos listo el disco con los archivos necesarios de la primera parte del juego. Reiniciamos el Spectrum y volvemos al Basic +3 , con el comando : cat "a:" , podemos ver el listado del contenido del disco y veremos que tenemos lo siguiente:

navymoves1.bas
army$
nvycode1

De ahora en adelante con hacer un load"navymoves.bas" ya podemos cargar el juego desde disco.
Como queda espacio libre en el disco, ahora deberéis hacer el mismo proceso para la carga B del juego teniendo en cuenta no usar los mismos nombres para no pisar archivos, por ejemplo el basic yo lo llamaría "navymoves2.bas" y el binario del juego lo llamaría "nvycode2". En el caso de la pantalla, como es exactamente la misma para las dos cargas, solo usaría un archivo que lo llamaría desde ambos cargadores basic y así ahorramos espacio en disco y no duplicamos la pantallas para las dos cargas.

NOTA IMPORTANTE: Este juego se da el caso de que usa un binario para la pantalla de carga, pero eso no siempre era así. Otros muchos juegos usan lo que se llamaba una pantalla del tipo "screen$" en vez de un binario, eso se sabe mirando que use el comando screen$ en el cargador de basic y también te das cuenta cuando carga, ya el formato screen$ es en el que ves cómo se carga la pantalla línea a línea y finalmente le aplica el color. En el caso de que la pantalla de carga sea un screen$ tenemos que usar el comando de carga y salvado unido en una sola línea para cargarlo a pantalla y guardarlo a disco de la siguiente forma:

load "" screen$ : save "a:nombrepantalla" screen$


Ahora que ya tenéis el juego en disco, podéis seguir añadiendo más juegos y experimentando con el basic de las cabeceras, añadir pokes, un selector de de juegos, un listador de contenido de disco o lo que se os ocurra para mejorar vuestro recopilatorio en disco.

Aquí os dejo en enlace del video que realizamos en el directo de AW de esta semana donde se ve el proceso en vivo.

https://youtu.be/NMLgee-rHJM?t=4112

Para evitar tener que entrar al Basic+3 cada vez que quiero usar el disco, yo he utilizado esta cabecera de basic y la he guardado como "disk" en el disco para que al encender el ZX y pulsar la opción "cargador" en el menú principal, auto ejecute este menú basic y desde ahí ya lanzo los juegos. Es muy básico, se puede mejorar enormemente, con músicas, pantalla de fondo etc... pero eso ya lo dejo para vuestras aportaciones en este hilo.

menu-basic.png
menu-basic.png (35.18 KiB) Visto 531 veces
menu.png
menu.png (11.04 KiB) Visto 531 veces

Avatar de Usuario
kikems
Mensajes: 3392
Registrado: 30 May 2013 19:23
Agradecido : 978 veces
Agradecimiento recibido: 1348 veces

Re: Proceso para volcar juegos desprotegidos de cinta a disco en ZX Spectrum

Mensajepor kikems » 29 Oct 2018 18:03

Mi pregunta para los sabios del lugar es.... ahora que ya tengo esto listo con un menú de inicio básico , ¿ qué rutinas o replayers hay actualmente para ZX para poder cargar un AY en el menú inicial y cómo se introduce desde basic ?

Avatar de Usuario
kikems
Mensajes: 3392
Registrado: 30 May 2013 19:23
Agradecido : 978 veces
Agradecimiento recibido: 1348 veces

Re: Tutorial para volcar juegos desprotegidos de cinta a disco en ZX Spectrum

Mensajepor kikems » 29 Oct 2018 23:10

Aquí una versión con pantalla de carga de MAC de Batman Group, me falta meterle música.

Captura de pantalla 2018-10-30 a las 13.37.57.png
Captura de pantalla 2018-10-30 a las 13.37.57.png (123.28 KiB) Visto 444 veces
Adjuntos
MenuDisco.dsk
(190.25 KiB) Descargado 7 veces

Avatar de Usuario
minter
Mensajes: 2534
Registrado: 22 Jul 2014 18:51
Agradecido : 2390 veces
Agradecimiento recibido: 1043 veces

Re: Tutorial para volcar juegos desprotegidos de cinta a disco en ZX Spectrum

Mensajepor minter » 30 Oct 2018 12:20

Mirate esta página kikems:

http://www.specay.co.uk/

Es un player de AY para spectrum. Pero contiene una aplicación para MSDos que convierte los mods de AY en formato TAP

Eso igual ayuda luego a cargar el modulo en memoria. Luego es averiguar los comandos que hay que dar al AY para que reproduzca.

Supomgo que sea dar al AY la posición de memoria del modulo a reproducir, y iniciar o parar.

No creo que sea tan facil, pero eso igual Chema nos puede indicar como ordenar al AY el lanzar un módulo. Será parecido en Oric como en el resto de equipos con el mismo chip de sonido.

Y a partir de ahí, incluir en el cargador los POKEs correspondientes.

Si se necesita rutina de reproducción, eso lo desconozco.

Bueno, es mi pequeño grano de arena.

Mola el spectrum! :)

Avatar de Usuario
kikems
Mensajes: 3392
Registrado: 30 May 2013 19:23
Agradecido : 978 veces
Agradecimiento recibido: 1348 veces

Re: Tutorial para volcar juegos desprotegidos de cinta a disco en ZX Spectrum

Mensajepor kikems » 30 Oct 2018 13:25

minter escribió:Mirate esta página kikems:

http://www.specay.co.uk/

.......

Mola el spectrum! :)


He buscado y la verdad que me parece increíble que para una máquina tan común como el ZX no exista ya o sea fácil de encontrar un binario para integrar en basic y controlarlo con un par de pokes de play y stop.

Voy a probar con esto , a ver que me encuentro.

Avatar de Usuario
ron
Mensajes: 18472
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1647 veces
Agradecimiento recibido: 1369 veces

Re: Tutorial para volcar juegos desprotegidos de cinta a disco en ZX Spectrum

Mensajepor ron » 30 Oct 2018 13:34

Eso es porque todavía no has visto las idas de olla de los rusos, las filigranas que hacen con los cargadores y un sinfín de cosas que nos dejarían a todos medio boquiabiertos. xD

Problema, que está todo en cirílico y no hay cristo que lo entienda. -507 -rofl

Avatar de Usuario
kikems
Mensajes: 3392
Registrado: 30 May 2013 19:23
Agradecido : 978 veces
Agradecimiento recibido: 1348 veces

Re: Tutorial para volcar juegos desprotegidos de cinta a disco en ZX Spectrum

Mensajepor kikems » 30 Oct 2018 13:41

ron escribió:Eso es porque todavía no has visto las idas de olla de los rusos, las filigranas que hacen con los cargadores y un sinfín de cosas que nos dejarían a todos medio boquiabiertos. xD

Problema, que está todo en cirílico y no hay cristo que lo entienda. -507 -rofl


Cierto lo de los rusos es de locura, pero buscaba algo sencillo y asequible para cualquier usuario básico y que a la vez quede chulo.

Avatar de Usuario
kikems
Mensajes: 3392
Registrado: 30 May 2013 19:23
Agradecido : 978 veces
Agradecimiento recibido: 1348 veces

Re: Tutorial para volcar juegos desprotegidos de cinta a disco en ZX Spectrum

Mensajepor kikems » 30 Oct 2018 14:25

Aquí he sacado un binario de una demo de música de spectrum, que se carga con load "musica"code y se ejecuta con un randomize, pero como imaginaba me anula el teclado y evidentemente prevalece sobre el resto del listado basic. Aquí es donde necesito un multiface, para meterle mano al cógido y mapear el teclado, pero la idea es poderlo hacer todo desde basic para dejar aquí un menú de disco chulo y que sea adaptable a cualquier recopilación que hagamos en un disco.

https://youtu.be/aOt7BssdDoE
Adjuntos
MenuDisco.dsk
(190.25 KiB) Descargado 11 veces

Avatar de Usuario
kikems
Mensajes: 3392
Registrado: 30 May 2013 19:23
Agradecido : 978 veces
Agradecimiento recibido: 1348 veces

Re: Tutorial para volcar juegos desprotegidos de cinta a disco en Spectrum +3 y creando un menú de disco.

Mensajepor kikems » 30 Oct 2018 19:51

Me he tirado a lo básico, Basic -grin . El caso es que finalmente he decidido usar la música escrita en basic, así va todo sencillito y en el mismo listado.
Buscando me he encontrado esta web con unas cuantas músicas escritas en Basic para el comando PLAY del AY del +3 y me he tomado una de ellas que he incluido en mi cargador "disk" del menú de arranque.
http://www.subliminalia.com/2018/04/his ... -y-musica/

Ya está con gráficos y música, jajjj, en Spectrum con poner el print de texto sobre negro generalmente ya era más que suficiente, pero esto ya parece un menú de disco de C64 -rofl .
Bueno, el caso es que tengo gráficos, tengo música y tengo el control de pulsación de tecla, para saber que juego tiene que lanzar el menú, hasta aquí ha sido pan comido. -thumbup

EL PROBLEMA.
No consigo que se ejecute la música paralelamente al control del teclado, por lo que parece el comando PLAY interrumpe la ejecución del basic hasta que termine la canción.
Imagino que hay que hacer algún tipo de loop o abrir un thread o algo así para hacer la ejecución simultánea , pero mis limitados conocimientos del Basic del +3 no me permiten dar con la fórmula. A ver si los que saben más del tema me pueden ayuda a resolver ese problema.

https://youtu.be/yLgvwV7HQ4w
Adjuntos
MenuDisco.dsk
(190.25 KiB) Descargado 8 veces

Avatar de Usuario
superjmotero
Mensajes: 40
Registrado: 20 Oct 2018 18:25
Agradecido : 16 veces
Agradecimiento recibido: 16 veces

Re: Tutorial para volcar juegos desprotegidos de cinta a disco en Spectrum +3 y creando un menú de disco.

Mensajepor superjmotero » 31 Oct 2018 01:14

Kikems, solo un apunte, respecto al procedimiento lo he estado siguiendo en el sobremesa con el Fuse emulando un +3. Usando save "navymoves1.bas" me daba un error tipo: Bad Name ..." creo recordar y al final use nombres cortos para los .bas. ¿Será fallo mío o hay que usar nombres 8.3 en el basic como máximo?.
-m3s3x user since 1984 -thumbup

Avatar de Usuario
kikems
Mensajes: 3392
Registrado: 30 May 2013 19:23
Agradecido : 978 veces
Agradecimiento recibido: 1348 veces

Re: Tutorial para volcar juegos desprotegidos de cinta a disco en Spectrum +3 y creando un menú de disco.

Mensajepor kikems » 31 Oct 2018 02:01

superjmotero escribió:Kikems, solo un apunte, respecto al procedimiento lo he estado siguiendo en el sobremesa con el Fuse emulando un +3. Usando save "navymoves1.bas" me daba un error tipo: Bad Name ..." creo recordar y al final use nombres cortos para los .bas. ¿Será fallo mío o hay que usar nombres 8.3 en el basic como máximo?.


Tienes razón, debería de tener en cuenta limitar la longitud de los nombres.

Avatar de Usuario
kikems
Mensajes: 3392
Registrado: 30 May 2013 19:23
Agradecido : 978 veces
Agradecimiento recibido: 1348 veces

Re: Tutorial para volcar juegos desprotegidos de cinta a disco en Spectrum +3 y creando un menú de disco.

Mensajepor kikems » 31 Oct 2018 18:21

Dentro de las limitaciones que tengo, voy a tirarle hoy un rato de directo y hacer un Gabinete de +3 y completar el disco menú de RetroWiki. A las 21:00 h.

viewtopic.php?f=26&t=35&p=200100961#p200100961

EDITO: Subimos la apuesta, va a ser Gabinete y RetroCrypta 2 en 1.


Volver a “Software Spectrum”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado