Rom de "La maquina alucinante". La madre del cordero.

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Rom de "La maquina alucinante". La madre del cordero.

Notapor Z80user el Mar Mar 13, 2012 1:50 am

Estoy mirando como hacer que la ROM de la maquina alucinante sea mas compatible y con mas funcionalidades.
Y me he encontrado una cosa curiosa, el metodo de carga utilizado en la rutina LOAD, al copiarla desde la direccion original a su posicion final, para poder estudiarla, y hacer un codigo ensamblador, para poder estudiarla mejor, y haber estudiado hace poco la rutina de carga de microsphere he descubierto lo siguiente.

Apartir de la direccion #FA58 hace esactamente las mismas comprobaciones y hay esactamente el mismo codigo, ya en la direccion #FA92 empiezan las diferencias, que son mas bien pocas.

La diferencia estriva en los valores que ciertas variables toman, el tiempo para detectar un bit a 0 o a 1, y sincronismos varios, los valores son mas comedidos que en la rutina original.

El programa graba 7 secuencias:
-. Las 2 primeras el bloque en basic
-. Las 2 siguientes, cargan el programa turbo modificado
-. La siguiente carga es de 9216 bytes con carga "custom", con lo que carga la parte de la pantalla (con los registros para hacer recuperar el punto esacto en el que se quedo)
-. La siguiente es la carga "custom", esta omite los bytes que esten con el valor #00, la rutina "turbo", lee desde la zona de pantalla, los valores calculados con anterioridad, que estan en las direcciones de pantalla.
-. La ultima carga es a velocidad normal y esta aprobecha la rutina LOAD de la ROM original, para sobreescribir la zona de memoria en que se encuentra hubicada la rutina con un JP, al que anteriormente se ha hecho un PUSH HL con HL=#4000, en la que se encuentra la rutina que restaura todos los registros y estados de la CPU.

Ya tenemos un rompecabezas menos en la historia del Spectrum por resolver. El codigo de la rom de "La maquina alucinante" esta extraido de la rutina de carga "Microsphere" a la que se le ha extraido la rutina de proteccion que borra parte de la pila.

Las pulsaciones de 1 a 4, especifican la velocidad de grabacion en la cinta.
Al savar, crea un programa en BASIC con alguna proteccion :-) una linea 0
LINE 0 LOAD "" CODE : RANDOMIZE VAL "64000"
Este codigo esta repetido 4 veces, en las que unicamente varia el valor de VAL, sumando 6 para especificar la velocidad, esto desperdicia bastate memoria, ya que se podia haber copiado a la zona de la pantalla, modificarla y grabarla, como se hace con la rutina de restauracion de registros que se copia en la direccion #4000.

La rutina para detectar que partes se salvan en cinta, se ejecuta antes de entrar en el menu. aunque luego no se realice un salvado, o cualquier otra variacion, por lo que relentiza algo el arranque inicial, pero uno no pulsa NMI y una tecla de manera simultanea :-D
Si vas a tirar Hardware, primero pregunta si alguien lo puede recuperar.
No abandones un ordenador en un vertedero, donalo a alguien.
Z80user
Manic Miner
 
Mensajes: 215
Registrado: Vie Jun 08, 2007 9:42 am
Ubicación: En un lugar de la mancha

Re: Rom de "La maquina alucinante". La madre del cordero.

Notapor flopping el Mar Mar 13, 2012 10:44 pm

Por si te sirve de algo y quiza ya lo sepas pero si no, la rom de "La maquina alucinante" es la misma ,(vamos que es una copia), de la rom del interface Phoenix:

http://www.speccy.org/hardware/hardware ... Abaco.html
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, debido a la esquizofrenia paranoide que tengo.
(C) 1982-2016, 34 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente"
Avatar de Usuario
flopping
Nonamed
 
Mensajes: 1093
Registrado: Vie Jul 16, 2010 9:54 am

Re: Rom de "La maquina alucinante". La madre del cordero.

Notapor mcleod_ideafix el Mie Mar 14, 2012 1:09 am

¡Huy ¡Qué de tiempo de aquello! Lo comentamos aquí mismo, hace ya casi 4 años...

viewtopic.php?f=8&t=937&p=11912
Web: ZX Projects | Twitter: @zxprojects
Avatar de Usuario
mcleod_ideafix
Johnny Jones
 
Mensajes: 3978
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera

Re: Rom de "La maquina alucinante". La madre del cordero.

Notapor Z80user el Mie Mar 14, 2012 9:35 pm

Pues la rutina del phoenix viene del microsphere, con las variaciones de tiempos y sin la proteccion de memoria (machaca la pila de retorno)
Un antepasado mas atras.

Y no, no conocia lo del phoenix. (no me pregunteis donde estaba por aquella epoca)

Hombre, copia copia, no tiene algunas optimizaciones, ocupa menos, y la rutina de carga ocupa menos 259 bytes la de LMA por mas de 768 de la del phoenix, la de microsphere tiene un vacio entre ambas rutinas save y load, y encima te ofrece ambas ...
La verdad no se la version esacta del WAV/CSW que hay en la web de los esquemas de carga del spectrum, pero muy normal no es que en un juego te pongan la rutina save y load simultaneamente, se les deberia de colar.
Por la duracion de la carga y el sonido (un monton de bytes a 0 o a 1) se podria intuir que hay algo raro, o que lo ensamblaron a mano y era mas facil contar bytes para los saltos absolutos.

En cualquier caso, es algo mas para atribuir el origen de la rutina que tiene incorporada el phoenix o la LMA
Si vas a tirar Hardware, primero pregunta si alguien lo puede recuperar.
No abandones un ordenador en un vertedero, donalo a alguien.
Z80user
Manic Miner
 
Mensajes: 215
Registrado: Vie Jun 08, 2007 9:42 am
Ubicación: En un lugar de la mancha

Re: Rom de "La maquina alucinante". La madre del cordero.

Notapor zup el Dom Abr 29, 2018 9:38 am

Añado mi miniparche para hacer que la ROM de "La máquina alucinante" sea más utilizable en emuladores. En resumen:

- Se usan las rutinas de la ROM para cargar y grabar. Ya no hay turbo, pero a cambio los emuladores graban instantáneamente.
- Al terminar de grabar, se vuelve al programa. Esto evita que se guarden varias copias del mismo programa por accidente.

La ROM (y el código fuente del parche) se pueden descargar de mediafire.

(El nombre LMCA viene de "La máquina casi alucinante")
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...
zup
Freddy Hardest
 
Mensajes: 621
Registrado: Vie Ago 15, 2008 2:43 pm


Volver a Programación y nuevos desarrollos

¿Quién está conectado?

Usuarios navegando este Foro: Google [Bot] y 1 invitado