Tuto, fix para el zx omni rev.2 problemas de reinicio por decodificacion del AY
Publicado: 30 May 2020, 14:00
Pues aquí estamos, esta vez con un fix al ZX Omni rev.2 de retroradionics.
El problema encontrado es que hay juegos que usan el AY para hacer sonidos o poner música y que cuando se arrancan o bien se resetean o se quedan colgados y / o comportamientos erráticos.
Al habla con Habi (Habisoft creador del es.pectrum, y diversos inventos para el PCW que podeis ver en su página), resulta que este omni tiene un bug que hace que, si el juego en cuestión no genera la tabla completa de IM2 (por ejemplo entre 0xFE00 y 0xFF01) en determinadas condiciones que mejor no me extiendo para no aburrir.... el AY pone "morralla" en el bus de datos y cuando el Z80 acepta la interrupcion en modo IM2, crea una dirección que no es 0xFEFF y, si la tabla IM2 tiene valores 0 pues la dirección de salto será 0x0000 (osea un reset en toda regla)... o si la tabla tiene otro valor pues saltará allá.
El fix en este caso es sencillo aunque requiere desoldar un pin de un chip smd (U4, 74HC138) y conectarlo al /M1 para que el AY no "devuelva" datos.
Video con el zx omni lanzando Gauntlet (que solo usa #FEFF ) y funcionando
El problema encontrado es que hay juegos que usan el AY para hacer sonidos o poner música y que cuando se arrancan o bien se resetean o se quedan colgados y / o comportamientos erráticos.
Al habla con Habi (Habisoft creador del es.pectrum, y diversos inventos para el PCW que podeis ver en su página), resulta que este omni tiene un bug que hace que, si el juego en cuestión no genera la tabla completa de IM2 (por ejemplo entre 0xFE00 y 0xFF01) en determinadas condiciones que mejor no me extiendo para no aburrir.... el AY pone "morralla" en el bus de datos y cuando el Z80 acepta la interrupcion en modo IM2, crea una dirección que no es 0xFEFF y, si la tabla IM2 tiene valores 0 pues la dirección de salto será 0x0000 (osea un reset en toda regla)... o si la tabla tiene otro valor pues saltará allá.
El fix en este caso es sencillo aunque requiere desoldar un pin de un chip smd (U4, 74HC138) y conectarlo al /M1 para que el AY no "devuelva" datos.
Video con el zx omni lanzando Gauntlet (que solo usa #FEFF ) y funcionando