duda boton nmi divmmc

Si por algo se caracteriza el Spectrum es por su gran variedad de periféricos (clásicos y modernos)

Moderador: Sir Cilve Sinclair

Responder
bracula
Herbert
Mensajes: 76
Registrado: Mar Ago 18, 2015 2:01 pm

duda boton nmi divmmc

Mensaje por bracula » Lun Dic 24, 2018 11:53 am

Hola y ¡feliz navidad a todos/as¡ tengo una duda,tengo el divmmc,todo de maravilla,pero en algunos juegos por ejemplo el chicagos 30 si aprieto el botón nmi al volver al juego se resetea el juego ,en otros a lo mejor pasas de nivel y al tercer nivel se cuelga el juego como que se corrompiese,he probado en un emulador,retro virtual machine,y hace lo mismo que en la maquina real.
mi duda es ¿al hacer la interrupción con el botón nmi algunos juegos se corrompen?¿no es del todo bueno para el juego/programa interrumpirlo con el botón nmi y luego volver a el?

Lo dicho e probado con dos spectrum y el emulador,es una pequeña duda que tengo porque no entiendo mucho que hace el botón nmi y que consecuencias tiene para el programa cargado en memoria

Gracias¡¡

zup
Freddy Hardest
Mensajes: 666
Registrado: Vie Ago 15, 2008 2:43 pm

Re: duda boton nmi divmmc

Mensaje por zup » Lun Dic 24, 2018 1:16 pm

Estrictamente, el botón de NMI activa esta línea en el Z80. Después de esto, el Z80 hace unas poquitas cosas:
- Pone ciertos indicadores de la CPU en un estado especial (para indicar que está en una NMI).
- Mete la dirección actual en la pila.
- Salta a la dirección 66.

Hasta aquí, lo único que ha hecho es modificar dos bytes de la RAM. Si la pila del programa está MUY justa, puede corromper algo.

Ahora bien, después de esto viene todo lo gordo. Supuestamente, alguien se ha encargado de poner una rutina de respuesta a la NMI en la dirección 66. Estas rutinas suelen empezar por guardar el estado de la CPU (es decir, todos los registros), con lo que se llevarán por delante unos 30 bytes de RAM. Si los guardan en la pila, es muy posible que la pila se alargue hasta sitios donde no está previsto y sobreescriba datos del juego causando cuelgues.

Por poner una referencia, la rutina de NMI del Transtape o del Phoenix (dos transfers bastante populares) guardan el estado de los registros (y alguna cosa más) en las primeras líneas de la pantalla. En ese sitio es muy raro que haya código o esté la pila, con lo que las posibilidades de que se corrompa algo son mínimas (serían cosa de esos 2 bytes que necesita obligatoriamente). Otros dispositivos paginan RAM sobre la ROM del Spectrum, con lo que pueden guardar esos datos sin causar corrupción ni mostrar rayas en pantalla. Otros menos amables (p.ej.: Specmate) utilizan algunos bytes en la pila y el resto en pantalla.

En fin, que lo de que se cuelgue depende de a dónde van a parar esos 30 bytes famosos... o de si el juego está muy justo de pila.

Por curiosidad... el juego es el Chicago's 30, pero ¿cuando usas la NMI qué dispositivo responde? Si es el divmmc (imagino que usando ESXDOS)... ¿usas el NMI.SYS de serie o alguno alternativo? ¿Has probado a reportar el bug a quién haya hecho ese NMI.SYS?
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...

bracula
Herbert
Mensajes: 76
Registrado: Mar Ago 18, 2015 2:01 pm

Re: duda boton nmi divmmc

Mensaje por bracula » Mié Dic 26, 2018 5:03 pm

Hola,utilizo divmmc con esxdos 0.6 hay dos versiones de nmi una hecha por un chico que se llama david,al cual desde aqui le doy las gracias, y la original,con las dos tiene ese comportamiento,aparte este sistema te deja grabar snapshots del juegos,hay a segun el programa hay veces que te deja grabar las que quieras y en otros al grabar la quinta por ejemplo el programa se cuelga al volver a el,el snapshot grabado en ese momento tambien se cuelga,como e comentado en el emulador retro virtual machine tiene el mismo comportamiento,de todas maneras voy a reportarlo en el foro de esxdos a ver que dicen,aunque es en ingles....

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Ahrefs [Bot], Bing [Bot] y 8 invitados