Diferencias entre +2A/B y +3

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2718
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: 49 veces
Gracias recibidas: 208 veces
Contactar:

Re: Diferencias entre +2A/B y +3

Mensajepor zup » 28 Sep 2013, 13:09

Raro. A mi me ha funcionado siempre SET1346. En cuanto tenga un rato probaré con las ROMS 4.0, 4.1 y +3e a ver qué pasa.

De momento, puedes probar con el Rocky Horror Show. Forma de probarlo:

- Haz un MERGE "RHS.BAS".
- En la línea 25, quita el RANDOMIZE USR (p+VAL"28") (o le pones un REM o lo que quieras).
- RUN.

Después de la pantalla de carga, saldrá el castillo con los rayos. Cuando llegue a la pantalla de título (con cuatro bailarines y la música del "time warp") el título (en rojo) debería salir totalmente corrompido. Este es el efecto que sale cuando la página se corrompe (en este juego en concreto).

Resetea y haz un LOAD "RHS.BAS". Si la caché se desactiva, el título debería salir bien. Ahora solo hace falta repetir la prueba en todas las ROMs que se pueda ;)

EDITO:
- El +2A no activa caché con ninguna de las roms que he descargado (4.0, 4.1 y castellano). Un +2A con ROMS de +3e (1.38 para divIDE) activa la caché solo si tiene el divIDE enchufado, aunque no tenga ninguna unidad de disco conectada al divIDE.
- El +3 activa la caché siempre, y la desactiva correctamente en las tres versiones.
- Las ROMs del +3e siempre usan la caché, se lea de disquete o de disco duro. SET1346 funciona correctamente.
- Las ROMs 4.0 llevan la versión 1.0 del +3DOS. Las ROMs 4.1 y las ROMs en castellano llevan la versión 1.1. En cuanto a las del divIDE, dicen ser la versión 1.1 (tienen además versión IDEDOS, en mi caso 1.06).
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
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5314
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 46 veces
Contactar:

Re: Diferencias entre +2A/B y +3

Mensajepor mcleod_ideafix » 28 Sep 2013, 14:00

Mi problema fue con otro juego, "Where Time Stood Still". Este juego ocupa practicamente todos los 128K de la máquina. El juego original en formato disco tiene un arranque especial protegido. Yo quería hacer una versión que funcionara tanto en disquete como en una Compact Flash usando +3e. Partí de la versión en cinta y logré que funcionara bien si lo arrancaba desde la CF, pero si lo hacía desde el disquete, fallo total.

Si quieres echarle un vistazo, a ver si es que se me pasó algo, aquí tienes el código fuente del cargador (reubicador de páginas mejor dicho) junto con los archivos que se cargan. El cargador BASIC se llama "wtss" (sin extensión). Éste carga primero un pequeño módulo en C/M "wtss.lod" que es el que hice para reubicar páginas, quitar la caché, etc, y cuyo código fuente es el que doy. Lo ejecuta, la parte de quitar la caché. A continuación carga la pantalla "wtss.scr" y después carga varios bloques en distintas páginas (ficheros wtss1,3,4 y 6 ; el número indica a qué página van). Luego se carga el bloque, digamos principal, "wtssmc" que ocupa las páginas 2, 5 y 0. Por último, carga el bloque 7 (se supone que la caché se quitó al principio) y se llama de nuevo a otra rutina del cargador que reubica algunos trozos de ciertas páginas en otras, para después saltar al principio del juego.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
oblo
Amiga 1200
Amiga 1200
Mensajes: 1260
Registrado: 29 Mar 2011, 16:08

Re: Diferencias entre +2A/B y +3

Mensajepor oblo » 28 Sep 2013, 14:15

Lo que comentáis explicaría entonces lo que me pasa con el Gryzor de 128k. La edición sin protección carga todas las fases con código con cabecera normal y corriente, por lo que se puede copiar sin problemas de cinta a disco. Una vez editado el .BAS para que cargue y guarde correctamente las fases en sus correspondientes bancos de memoria, el +3 se resetea si se intenta cargar el juego desde disco; en cambio la carga desde cinta va sin problemas.

salu2

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5314
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 46 veces
Contactar:

Re: Diferencias entre +2A/B y +3

Mensajepor mcleod_ideafix » 28 Sep 2013, 14:34

oblo escribió:Lo que comentáis explicaría entonces lo que me pasa con el Gryzor de 128k. La edición sin protección carga todas las fases con código con cabecera normal y corriente, por lo que se puede copiar sin problemas de cinta a disco. Una vez editado el .BAS para que cargue y guarde correctamente las fases en sus correspondientes bancos de memoria, el +3 se resetea si se intenta cargar el juego desde disco; en cambio la carga desde cinta va sin problemas.

salu2


Pues lo más seguro es que te pase lo mismo que me pasa a mi :O
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2718
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: 49 veces
Gracias recibidas: 208 veces
Contactar:

Re: Diferencias entre +2A/B y +3

Mensajepor zup » 28 Sep 2013, 19:34

mcleod_ideafix escribió:Mi problema fue con otro juego, "Where Time Stood Still". Este juego ocupa practicamente todos los 128K de la máquina. El juego original en formato disco tiene un arranque especial protegido. Yo quería hacer una versión que funcionara tanto en disquete como en una Compact Flash usando +3e. Partí de la versión en cinta y logré que funcionara bien si lo arrancaba desde la CF, pero si lo hacía desde el disquete, fallo total.


Te vas a descojonar.

Cuando tuve la fiebre por convertir juegos a +3e, le eché un ojo al WTSS (tengo las notas por ahí). En algún momento de las discusiones sobre este juego ví que alguien ya lo había convertido y como ya había una versión buena pasó a tener prioridad cero.

En fin, creo que la única complicación que tiene es la página 7, pero creo que tengo un plan para restaurarla correctamente.

-- Actualizado 28 Sep 2013, 20:58 --

De mis notas de WTSS:
- El juego carga usa páginas 0, 1, 3, 4 y 6 completas.
- De la página 7 usa 9472 bytes desde la dirección 56064.
- También carga un bloque de código desde 22629 con 22400 bytes de longitud.

He echado una ojeada a tu cargador, lo único raro que veo es cómo mueve los datos. Como sólo he echado un ojo al asm, no tengo mucha idea de qué pretendes hacer. Me suena algo raro que cojas datos de la página 1... esa página la carga completa según mis notas (aunque podría haber algún hueco, eso no lo miré).

Mi plan maestro para la página 7: pasarle el zx7 y si hubiera cabido en 6912 cargarla en memoria de pantalla y descomprimirla. Mala suerte, no cabe.

Lo que he hecho al final:
- Cargo normalmente el bloque de código y las páginas 0, 1, 3, 4, y 6.
- Según mis notas, hay un área de 6636 bytes en la página 7 que podemos usar sin problemas. Este área va de la dirección 49428 a la 56063 y corresponde prácticamente a la segunda memoria de pantalla.
- Cargo 6000 bytes de la página 7 sobre la pantalla, y los muevo a ese área (línea 65 del cargador).
- Cargo el resto de bytes de la página 7 en la memoria de pantalla.
- Meto la página 7, muevo los 6000 primeros bytes a su ubicación definitiva y luego muevo los siguientes 3472 bytes a su sitio.
- Por último meto la página 0 y salto a la dirección de inicio.

El PAUSE de la línea 60 es para que de tiempo a ver la pantalla de presentación; el PAUSE de la línea 70 es para que se pare el motor de disco (vale, debería poner un OUT pero soy muy vago).

Mi versión "+3e friendly": http://www.mediafire.com/?z6wqfgwkswe1eqh

Un consejo para cuando hagas movimientos "raros" con las páginas (compresiones, copias de bloques de una a otra, etc):
- Usa ZXSpin.
- Pon un breakpoint en la dirección de inicio del juego.
- Cuando salte el breakpoint usa tus notas y salva a disco los bloques de datos que ha cargado el programa (opción Save Binary, puedes elegir de la RAM principal o de qué bancos quieres copiar datos).

Con eso tienes una copia literal de lo que ha cargado el juego. Si te metes en problemas, lo primero que deberías hacer es repetir la operación con tu versión del juego y luego usar fc /b para comprobar si lo que carga el programa es exactamente igual a lo que tienes tú en memoria. De esta manera averiguarás qué es lo que has roto (casi siempre la página 7, hay que planificar mucho las cosas ahí).

EDITO: Acabo de hacer un disco con tu versión... ¿seguro que lo que me has pasado no funciona? En Spectaculator ha arrancado desde disquete; después de analizar lo que carga he visto algunas diferencias en algunas páginas (pero podría ser por haber utilizado una versión diferente del juego). En ZXSpin carga y arranca desde el disco duro. No sé si se corromperá/fallará más adelante, pero parece funcionar.
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!


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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