Problema con la carga de Tai-Pan 128k

zx81
Mensajes: 56
Registrado: 08 Ene 2018, 16:55

Problema con la carga de Tai-Pan 128k

Mensaje por zx81 » 08 Ene 2018, 23:20

Estaba yo esta noche probando diferentes juegos y, la verdad es que disparando a matar, probé con la versión de 128k de Tai-Pan. Al acabar la carga se resetea. Eso es típico de esa protección SpeedLock 4 que verifica que todos los registros del AY mantienen unos valores que pone, incluidos los registros Port-A y Port-B.

Me suena haber leído que esos registros no están implementados en la emulación del AY. pero no consigo encontrar donde he leído eso.

Supongo que hay buenas razones para no implementarlos (ahorrar celdas, supongo), pero si no costara mucho... :roll:

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Problema con la carga de Tai-Pan 128k

Mensaje por antoniovillena » 08 Ene 2018, 23:52

zx81 escribió:Estaba yo esta noche probando diferentes juegos y, la verdad es que disparando a matar, probé con la versión de 128k de Tai-Pan. Al acabar la carga se resetea. Eso es típico de esa protección SpeedLock 4 que verifica que todos los registros del AY mantienen unos valores que pone, incluidos los registros Port-A y Port-B.

Me suena haber leído que esos registros no están implementados en la emulación del AY. pero no consigo encontrar donde he leído eso.

Supongo que hay buenas razones para no implementarlos (ahorrar celdas, supongo), pero si no costara mucho... :roll:
El que lleva el core de spectrum es @mcleod_ideafix. Nos vienen bien tus reportes, ya que al ser autor de emuladores tienes más facilidad de encontrar la raíz del problema (como en este caso). Para los que no lo sepan, zx81 es el autor del emulador JSpeccy (Java) y ZXBaremulator (Raspberry Pi Bare Metal):

http://jspeccy.speccy.org/
http://zxmini.speccy.org/

Avatar de Usuario
Kyp
Mensajes: 240
Registrado: 18 May 2016, 20:16

Re: Problema con la carga de Tai-Pan 128k

Mensaje por Kyp » 09 Ene 2018, 23:27

En el código del AY (realmente es un core de YM2149) parece que están implementados los dos puertos IO.

De todas formas, el YM tiene dos puertos IO, es como un AY-3-8910 pero el Spectrum tiene un AY-3-8912 que solo tiene uno. No se si eso puede tener algo que ver con que no funcione bien la protección.

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Problema con la carga de Tai-Pan 128k

Mensaje por antoniovillena » 09 Ene 2018, 23:38

Kyp escribió:En el código del AY (realmente es un core de YM2149) parece que están implementados los dos puertos IO.

De todas formas, el YM tiene dos puertos IO, es como un AY-3-8910 pero el Spectrum tiene un AY-3-8912 que solo tiene uno. No se si eso puede tener algo que ver con que no funcione bien la protección.
Si no me equivoco tanto AY-3-8912 como el AY-3-8910 tienen la misma pastilla de silicio pero con diferente encapsulado. Así que a nivel software se comportarán igual. El registro B se podrá leer y escribir en el AY-3-8912 a pesar de no reflejarse por ningún pin.

zx81
Mensajes: 56
Registrado: 08 Ene 2018, 16:55

Re: Problema con la carga de Tai-Pan 128k

Mensaje por zx81 » 10 Ene 2018, 08:09

Por lo que veo en la datasheet del ym, es funcionalmente igual al AY. Pero si de algo estoy seguro es que una de las cosas que dan problemas con esa protección es un AY no todo lo finamente emulado que debería. Por eso lo suelo usar como test cada vez que modifico algo en la emulación del AY.

Bien es cierto que esa versión de SpeedLock, la 4, se usó muy poco, no sé si por ser demasiado problemática. No creo que las mínimas diferencias en la emulación Z80 influyan, ni tampoco me parece buen momento el final de la carga para comprobar el bus flotante, que es otro de los lugares donde veo que hay diferencias con el real. Además, el juego funciona igual en el 128k que en el +2a, así que no puede ser eso.

Puedo poner trazas en el emulador y ver qué hace con los registros del AY durante la carga. Pero dado que el core sale airoso de todas las protecciones que son las que suelen hacer uso de las cosas más exóticas del Z80, me sigo inclinando porque pasa algo con el PSG.

zx81
Mensajes: 56
Registrado: 08 Ene 2018, 16:55

Re: Problema con la carga de Tai-Pan 128k

Mensaje por zx81 » 10 Ene 2018, 14:29

Ya sé lo que hace. Al principio de la protección envía valores a IoPort-A e IoPort-B y, al final de la carga, comprueba que el valor enviado a IoPort-B siga siendo el mismo (0xE5) y lo continúa comprobando, al menos, una vez por frame. Si no tiene ese valor en algún momento posterior, se resetea.

El juego salió también para CPC y MSX. ¿Significaría algo ese valor en otra máquina y quedo el código como un residuo o fue algo hecho aposta?. Desconozco si en otras máquinas el IoPort-B podía servir para hacer cosas «ilegales». :D

zx81
Mensajes: 56
Registrado: 08 Ene 2018, 16:55

Re: Problema con la carga de Tai-Pan 128k

Mensaje por zx81 » 24 Ene 2018, 19:21

Vuelvo por aquí para contar novedades al respecto. Como siempre que se toca más de una cosa a la vez, no sabes cual de las dos era la causa del problema. Ayer actualicé el core al EXP25-v4 y ya funciona el Tai-Pan.

Pero es que, además, me he dado cuenta de que el playtzx que usaba hasta ahora no maneja bien ciertos bloques, porque juegos como Arkanoid y Bruce Lee no cargan tampoco. He juankeado un poco mi emulador JSpeccy para que de más volumen y ahora cargan los tres.

Como sé que el SpeedLock 4 del Tai-Pan es un peacho sinvergüenza que cuando hay errores no te dice nada y al final simplemente se resetea, casi desconfío más del playtzx que del core, la verdad. No voy a volver atrás el core solo para repetir la prueba, no vaya a ser que no supere el cambio. :D

A ver si un día de estos me levanto con el cuerpo con ganas de marcha y convierto parte de JSpeccy en una especie de Tapir escrito en Java para que lo pueda usar todo el mundo.

Avatar de Usuario
carmeloco
Mensajes: 751
Registrado: 25 Dic 2015, 12:02

Re: Problema con la carga de Tai-Pan 128k

Mensaje por carmeloco » 24 Ene 2018, 22:09

zx81 escribió:Vuelvo por aquí para contar novedades al respecto. Como siempre que se toca más de una cosa a la vez, no sabes cual de las dos era la causa del problema. Ayer actualicé el core al EXP25-v4 y ya funciona el Tai-Pan.

Pero es que, además, me he dado cuenta de que el playtzx que usaba hasta ahora no maneja bien ciertos bloques, porque juegos como Arkanoid y Bruce Lee no cargan tampoco. He juankeado un poco mi emulador JSpeccy para que de más volumen y ahora cargan los tres.

Como sé que el SpeedLock 4 del Tai-Pan es un peacho sinvergüenza que cuando hay errores no te dice nada y al final simplemente se resetea, casi desconfío más del playtzx que del core, la verdad. No voy a volver atrás el core solo para repetir la prueba, no vaya a ser que no supere el cambio. :D

A ver si un día de estos me levanto con el cuerpo con ganas de marcha y convierto parte de JSpeccy en una especie de Tapir escrito en Java para que lo pueda usar todo el mundo.
Esa prueba, la puedo hacer yo, cargando desde un Maxduino, pero necesitaria el TZX que has usado, ya que en WOS, no está.

zx81
Mensajes: 56
Registrado: 08 Ene 2018, 16:55

Re: Problema con la carga de Tai-Pan 128k

Mensaje por zx81 » 24 Ene 2018, 22:31

carmeloco escribió:
zx81 escribió:Vuelvo por aquí para contar novedades al respecto. Como siempre que se toca más de una cosa a la vez, no sabes cual de las dos era la causa del problema. Ayer actualicé el core al EXP25-v4 y ya funciona el Tai-Pan.

Pero es que, además, me he dado cuenta de que el playtzx que usaba hasta ahora no maneja bien ciertos bloques, porque juegos como Arkanoid y Bruce Lee no cargan tampoco. He juankeado un poco mi emulador JSpeccy para que de más volumen y ahora cargan los tres.

Como sé que el SpeedLock 4 del Tai-Pan es un peacho sinvergüenza que cuando hay errores no te dice nada y al final simplemente se resetea, casi desconfío más del playtzx que del core, la verdad. No voy a volver atrás el core solo para repetir la prueba, no vaya a ser que no supere el cambio. :D

A ver si un día de estos me levanto con el cuerpo con ganas de marcha y convierto parte de JSpeccy en una especie de Tapir escrito en Java para que lo pueda usar todo el mundo.
Esa prueba, la puedo hacer yo, cargando desde un Maxduino, pero necesitaria el TZX que has usado, ya que en WOS, no está.
Tai-Pan

Dentro de ese ZIP van dos TZX, uno para 48k y el otro para 128k. Pero no te preocupes. Acabo de probar con el core que tengo y el playtzx y se resetea al acabar cuando hace un rato ha cargado usando JSpeccy como player. Ya tenemos al culpable. Lo que no es óbice para que si, quieres, pruebes con el T24 para descartar. Por mi parte, lo descarto por adelantado.

Gracias de todos modos.

jevilon
Mensajes: 339
Registrado: 24 Mar 2016, 12:26

Re: Problema con la carga de Tai-Pan 128k

Mensaje por jevilon » 25 Ene 2018, 08:41

Prueba con tapir

Responder