Inves Spectrum+ y el fatídico bug de las interrupciones

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
chernandezba
MSX Turbo R
MSX Turbo R
Mensajes: 261
Registrado: 11 Mar 2015, 10:42
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: ZX81
consola_favorita: NeoGeo
Primera consola: Atari 2600
Gracias dadas: 13 veces
Gracias recibidas: 158 veces

Inves Spectrum+ y el fatídico bug de las interrupciones

Mensajepor chernandezba » 14 Nov 2024, 20:19

Es ampliamente conocido los problemas del Inves en cuanto a efectos en pantalla y también algunos juegos que no van.
En cuanto a esos juegos, la lista mas recordada de esos juegos son los que fallan debido a la falta del bus flotante, pues el Spectrum +2A/+3 también tiene ese problema. Entre esos juegos hay por ejemplo el Arkanoid, Cobra o Short Circuit. Esos juegos los corrigieron cuando salió el Spectrum +2a/+3.

Pero creo que recuerda poca gente que el Inves tiene otro problema que hace que se cuelguen o se reseteen muchos otros juegos. Este problema radica en que cuando se dispara una interrupción, sobreescribe la dirección de memoria formada por (I*256+R) con valor 255, o sea, acaba sobreescribiendo la tabla de vectores de interrupción. Dado que en el Inves se usan los dos bytes últimos de la tabla de vectores (en presencia del valor 255 en el bus) este fallo no suele ser un problema mientras el valor de R no alcance el valor 254 o 255. Como el registro R inicialmente vale 0 y se incrementan solo los 7 bits inferiores (el bit 8 se conserva el valor) este problema solo se hace presente cuando algún juego modifica el registro R y le asigna un valor mayor de 127. En ese caso, sobreescribirá los dos últimos bytes de la tabla de vectores (dado que va incrementandose, en algún momento llegará al valor 254 o 255). Y si esos dos bytes no contienen el valor 255, es cuando se sobreescriben con otro valor diferente y el Inves se acabará colgando o reseteando.

Curioso, verdad?

Bien, con estas condiciones, lancé ZEsarUX con un proceso automático para ver qué juegos (de un mirror de WOS local que tengo) podrían tener este fallo. Para ir rápido, dejé que cada juego se ejecutase durante 10 segundos, para así pasar al siguiente. Con estas condiciones, en 3 tardes lanzando el proceso conseguí sacar una lista de una decena de juegos. Estoy seguro que hay muchos más, pues algunos juegos alteran el registro R al pulsar una tecla en el menú por ejemplo, cosa que no puedo automatizar con mi proceso. A esa decena de juegos se suman unos cuantos que muy amablemente David Carrión me dijo (también fue un sufridor del Inves como yo).

Os paso a continuación esta lista de juegos que en Inves NO se pueden jugar, lo podéis validar en máquina real o en ZEsarUX (incluso la última versión de ZEsarUX te avisa con un mensaje en pantalla de si un juego tiene ese fallo). En mi repositorio de ZEsarUX extras dispongo de una lista de compatibilidades con Inves, donde están listados estos juegos además de otros juegos que se pueden colgar o presentar efectos extraños. La lista completa aquí:

https://github.com/chernandezba/zesarux ... y_list.txt

Y los juegos afectados por este bug de las interrupciones (tenemos hasta algún juego hecho por Retroworks):

4x4 Off-road Racing
Commando
Commando Tracer
Gothik
JINJ 2 Belmonte's Revenge (jinj2.tzx, by Retroworks)
KliatbaNoci (KliatbaNoci.tzx)
Pick Out 2 (PickOut2.tzx, same authors as KliatbaNoci)
Prince of Persia (POPERSIA.TAP, version converted from td-dos to tap)
Ranarama - Erbe Edition, Players premiere edition
Sach Mat (Sach-Mat.tzx, same authors as KliatbaNoci)
Shadow of the Beast
Super Pipeline II (PIPELIN2.TAP)
Teodoro no sabe volar (TeodoroNSVen.tap, by Retroworks)
Tiddly Drinks (T_DRINKS.TAP)
Tuition (Tuition.tzx, same authors as KliatbaNoci)
Twilight (Twilight.tzx, same authors as KliatbaNoci)
World Series Basketball (BSKETBAL.TAP, cracked version by Digital Cracking Service)
Zaxxon (ZAXXON.TAP)

Saludos

César
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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