Desprotección discos +3

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2967
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 68 veces
Gracias recibidas: 322 veces
Contactar:

Re: Desprotección discos +3

Mensajepor zup » 30 Sep 2018, 20:13

A ver, mangoneando un poco alguno de los juegos...

Ice-Breaker (original de Topo Soft)
Primero carga la pantalla de la FAD y el logo de Topo Soft. Luego, desde código máquina, se cargan los siguientes bloques:
- Pantalla de carga.
- Un bloque en la página RAM 3, desde la dirección 49152 y que ocupa 2242 bytes.
- El bloque principal (desde 23552, con 41253 bytes de longitud).
- Si el equipo es un 128k, carga otro bloque en la RAM 3, empezando en 51394 y con 10618 bytes de longitud.
Por último, se inicia la ejecución del juego en la dirección 23552.

Posibles arreglos:
Se puede cargar TODO desde BASIC, cambiando algunas cosillas:
- (Opcional): Los logos de la FAD y Topo Soft.
- Se carga el screen$.
- Se carga todo el contenido de la página 3.
- Se cargan los bytes de la dirección 23552 a la 25000 en la página 4.
- Se carga el juego desde la dirección 25000 hasta el final.
- Se salta a c/m. Desde ahí, se rescatan desde la página 4 los bytes entre 23552 y 25000 y se salta al principio del juego.

Lorna (versión portuguesa)
Este tiene algún problemilla más, concretamente (y cómo habías apuntado) la forma de cargar las fases. Afortunadamente, en Topo Soft hicieron las rutinas de la multicarga MUY claras de entender.

Primero se cargan desde BASIC los logos de la FAD y Topo Soft, junto con la pantalla de carga y un programa que nos lleva al menú. De ahí nos metemos a código máquina y no salimos.

Dependiendo de la fase que elijamos, podemos cargar uno de tres bloques de datos. La rutina que selecciona el bloque empieza en la dirección 60963 y acaba (más o menos) en 61077, así que tenemos unos 100 bytes ahí para mangonear y meter una rutina de carga en c/m.

El mayor problema que le veo es que, mientras prepara la carga, machaca 576 bytes a partir de la dirección 23296. Para poder usar el +3DOS se necesita (creo) que el área de variables del sistema esté en orden. Por otra parte, durante la carga el stack está en las últimas direcciones de la RAM... y yo necesito tenerlo por debajo de 49152 para poder usar el +3DOS.

(Vale, mirándolo bien no es tan crítico... puedo hacer malabarismos y meter tanto el stack como los datos en la memoria de pantalla, pero esto requerirá un poquito de esfuerzo)

RAM (versión portuguesa)
Esta versión carga todo desde BASIC. Lo más rápido es usar el tapedisc de Microhobby para pasarlo a cinta y modificar el cargador BASIC para que añadir el nombre de los bloques.

Quizás la única dificultad es que el CLEAR está realmente bajo... puede haber problemas (porque el BASIC se hará más grande al añadir los nombres de los bloques). Lo bueno es que como el Spectrum +3 NO imprime los nombres de los bloques que carga desde disco, podemos "recortar" un buen cacho del cargador (el que define l y k los pokea).

Mad Mix 2 (versión portuguesa)
Aquí hay una mezcla de todo, pero con algunas ventajas de las que aprovecharnos.

Primero, el BASIC carga los logos de la FAD y Topo y un cargador en c/m. Este cargador lee la pantalla de carga y un pequeño bloque de 8800 bytes a partir de la dirección 24576. Se entra al menú y después de elegir las opciones se carga el juego principal en la dirección 24672 (son 31800 bytes). Este bloque nos va a machacar la rutina que ejecuta el menú del juego.

Después (si el equipo es un 128k) se procede a cargar todas las fases en las páginas 3 y 4 de la RAM. El juego se ejecuta en la dirección 24672.

Posibles arreglos (en su día ya lo arreglé):
Cargar TODO desde BASIC, con un par de retoques.
- Se cargan los logos de la FAD y Topo Soft.
- Se cargan los datos de la RAM 3 y 4.
- Se cargan los primeros 8704 bytes del bloque principal en la RAM 6.
- Se carga el resto del bloque principal.
- Se carga en minibloque del menú.

El truco sería hacer un parche para que (después de ejecutar el menú) en vez de cargar el bloque principal se rescaten esos 8704 bytes "perdidos".

Convertir RAM, Ice Breaker y Mad Mix 2 no es muy complicado... puedo preparar versiones en cinta que hagan esos mismo pasos (luego se pueden pasar a disco con el tapedisc). Lorna tiene su truco y parte del cargador de disco estaría en c/m, pero tampoco es excesivamente complicado.

NOTA 1: En Mad Mix 2 y Lorna también hay un par de parches que no he mencionado... el disco va solo, así que nos sobran los mensajes de "pulsa play" y "pulsa stop".

NOTA 2: ¿A que parece que estoy evitando usar la RAM 1? Eso es porque la caché del +3DOS (sí, tiene caché) machaca los datos que haya en los primeros 4k de la página 1. Se puede evitar con un poco de código, nada complicado. Lo complicado es la RAM 7... en un +3 que vaya a cargar de disco esta página es sagrada.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

BlackHole
Amiga 1200
Amiga 1200
Mensajes: 1442
Registrado: 07 Nov 2009, 11:38
Sistema Favorito: C64
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo SNES
Ubicación: Madrid
Gracias dadas: 9 veces
Gracias recibidas: 209 veces

Re: Desprotección discos +3

Mensajepor BlackHole » 01 Oct 2018, 01:31

zup: Pero, este post de arriba, ¿analiza las versiones de cinta o de disco de esos juegos?

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2967
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 68 veces
Gracias recibidas: 322 veces
Contactar:

Re: Desprotección discos +3

Mensajepor zup » 01 Oct 2018, 07:12

Solo las de cinta.

Son ideas para pasar sus ediciones 30 aniversario por la vía rápida a disco. La verdad es que, para analizar las versiones en disco, tendría que averiguar cómo funciona la controladora de disco (estos juegos NO usan el +3DOS para cargar, ni siquiera leyendo sector a sector).

Curiosidad del día: Aunque parece que "Lorna" no se editó en disco por separado, se incluyó en el pack "Mega 4" que sí se editó en disco.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

Avatar de Usuario
Topo sigloXXI
Spectrum 48K Plus
Spectrum 48K Plus
Mensajes: 40
Registrado: 22 Abr 2017, 10:49
Sistema Favorito: Amstrad CPC
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sega Genesis/Megadrive
Primera consola: Sega Genesis/Megadrive
Gracias dadas: 34 veces
Gracias recibidas: 29 veces

Re: Desprotección discos +3

Mensajepor Topo sigloXXI » 01 Oct 2018, 08:57

Pues todo lo que dices me parece perfecto, aunque yo no sé hacerlo... salvo lo del RAM o programas que no lleven multicarga, de hecho el RAM ya lo tenía hecho hace mucho tiempo, luego la traducción y metiendo las pantallas que sustituyen a la de FAD (que hizo mi compañero Roberto -URI-el Herrera) y modificando la de carga (que hizo mi otro compañero Roberto P. -ACE-bes).

Los programas que tienen problemas de lectura de disco son muy pocos en topo soft. y son precisamente la mayoría de mi época como Zona 0, Mad Mix 2, Lorna, Ice Breaker, *Chicago's 30 (*este es mono-carga con lo que no hay problemas de desprotección), Perico Delgado ...

El resto de programas de topo soft. los tengo en disco que puedo modificar con lo que no hay problemas y Desperado que no se puede "modificar" por problemas de copyright por el Gunsmoke

Bueno a ver ... luego sigo que me tengo que ir al curro
saludos
-Borrocop.-
Imagen ...Los juegos de Ayer, Hoy...

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2967
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 68 veces
Gracias recibidas: 322 veces
Contactar:

Re: Desprotección discos +3

Mensajepor zup » 02 Oct 2018, 08:24

¿Sabes? Mirando un poco lo que hacen Lorna, Zona 0 y Mad Mix 2 (cargar una especie de menú y luego el juego en sí), el acabado parece un poco "chapucero". Entiendo que en un 48k no caben a la vez ese menú y el juego, pero en un 128k se puede cargar todo de una tacada sin molestar al usuario con pausas.

Ice-Breaker también tiene su "pifia"... hay un minibloque que siempre se carga en la RAM3, pero el último bloque se carga solo si es un 128k (pudiendo haber juntado ambos bloques y cargarlos solo si es 128k). Y, si no entendí mal a los de WOS, Chicabo's 30 tiene un bug con los 128k... que solo está presente en la edición de disco (!).

Perico Delgado es otra bestia... ni siquiera cabe entero en los 128k. Ese sí que habría que mirarlo bien (aunque tiene el cargador "clásico" compartido por Lorna, Zona 0 y Mad Mix 2 lo que lo hace fácil de manipular).

En fin, creo que voy a escribir algo en un blog acerca de cómo cargar cosas con +3DOS aprovechando que estoy mirando esos juegos.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

Avatar de Usuario
Topo sigloXXI
Spectrum 48K Plus
Spectrum 48K Plus
Mensajes: 40
Registrado: 22 Abr 2017, 10:49
Sistema Favorito: Amstrad CPC
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sega Genesis/Megadrive
Primera consola: Sega Genesis/Megadrive
Gracias dadas: 34 veces
Gracias recibidas: 29 veces

Re: Desprotección discos +3

Mensajepor Topo sigloXXI » 02 Oct 2018, 08:39

Bueno me alegro que algo se pueda hacer y te sirva para hacer un buen artículo sobre estas protecciociones.

Chicago's 30 tiene ese bug que dices pero que parece que lo han resuelto parcheándolo, de esa versión he tomado el juego y he hecho una versión de disco que tengo y sigo revisando juego a juego para tener la mayor parte de los juegos de topo soft. dentro de mis pocos conocimientos.

Se puso de "moda" dentro de nuestros juegos hacer un menú en el que primero elegías el tipo de movimiento (teclado-joystick) como bien dices, para luego cargar el juego y posteriormente ir cargando fases (modo 48k) o cargar las fases enteras todo seguido en 128k.

Venga seguimos en contacto y ya me cuentas
un saludo compi
-Borrocop.-
Imagen ...Los juegos de Ayer, Hoy...


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 13 invitados