Todo se resume en lo que he publicado en mi blog al respecto. Pongo aquí lo más interesante:
El ZX Spectrum puede sorprendernos más aún. Lo último que se ha sabido desde Speccy.org es la aparición de un programa muy especial, diseñado por Simon Owen, con el cual es posible emular la ROM del archiconocido “Pac-Man” de Namco/Midway desde un Spectrum, aunque esto es posible solamente en los modelos +2A y +3 de Sinclair Spectrum. No obstante, no hay que llamarlo un emulador como tal sino como un programa que simula a través de software el funcionamiento en hardware de la recreativa.
Na_th_an: "Solo se simula el hardware de display y hace una conversión de notas para tocar con el AY. El código ejecutable de la ROM se ejecuta tal cual en el Z80 del spectrum, sin emulación.
Básicamente usa el modo de mapeo “all ram” (páginas 0123) del +2A/+3, ya que la ROM de este juego está ensamblada para ejecutarse a partir de $0000 y escribe sus datos a partir de $4000, por lo que necesita una RAM no de pantalla (que son la 5 y la 7) mapeada en $4000. El hardware original empleaba I/O mapeada en memoria, por lo que para leer los controles o tocar música escribía en una zona concreta del mapa de memoria. Lo mismo para los gráficos, basados en un tilemap y con 8 sprites.
Lo que hace es dejar que se ejecute el programa libremente. Como el programa todo lo hace en el espacio de direcciones, cada interrupción se ejecuta su código, que se encarga de leer la memoria gráfica y dibujar los sprites por software (emulando en cierto modo el hardware original), leer el teclado y escribir los valores en las posiciones correctas de memoria donde los espera el programa principal, y traducir los valores de sonido que escribe la ROM original en notas de la AY.
Su programa se ejecuta siempre en la página 2, lo cual es ideal: mientras se está ejecutando el código de la ROM de Pacman, la configuración de ram es 0123. Al ejecutarse el ISR, se cambia al modo de paginación normal, que conserva RAM2 en el mismo sitio y tiene acceso directo a las dos páginas del display y a los 23Kb de gráficos pre-rotados necesarios. Hace todo lo que tiene que hacer, vuelve a paginar 0123 y devuelve el control a la ROM."
Para que esto funcione, deberíamos contar con la ROM del arcade, constituido por cuatro archivos de 4 KB cada uno:
pacman.6e
pacman.6f
pacman.6h
pacman.6j
Por supuesto, tenemos que ingeniárnosla para tener dicha ROM y descomprimir la carpeta dentro del directorio de la aplicación. Una vez hecho esto, solo tenemos que arrancar el fichero “make.bak” para obtener un .TAP con el programa ya listo para ser usado en un emulador de ZX Spectrum y seleccionado cualquiera de los dos modelos (solamente +2A y +3). No se nos permite emplear otra ROM que no tenga dichos archivos, la del propio “Pac-Man”, aunque también se puede lograr hacerlo con las ROM de algunos de sus clones como “Hangly Man” o “New Puck-X”, con solo renombrar los nombres de archivos que tengan las mismas extensiones .6x (por ejemplo, en el caso de “newpuckx.zip”, se cambiarían los nombres de los archivos “puckman” (solamente tres de los cuatro que posee) por “pacman”, sin cambiar sus extensiones). ¡¡¡Y funcionan!!!
Probarlo... no os arrepentiréis...
http://simonowen.com/spectrum/pacemuzx/
Emulador del "Pac-Man" original en un ZX Spectrum
- NeilParsons
- 128 bits
- Mensajes: 1719
- Registrado: 23 Oct 2006 13:21
- Ubicación: Al borde del estrecho y a un paso de Gibraltar
- Contactar:
Emulador del "Pac-Man" original en un ZX Spectrum
They tried to make me go to rehab
but I said, no no no.
but I said, no no no.
- na_th_an
- 256 bits
- Mensajes: 11874
- Registrado: 22 Abr 2005 13:25
- Contactar:
Re: Emulador del "Pac-Man" original en un ZX Spectrum
Jodó, cuando digo "Solo se simula ... " parece que es moco de pavo. No, señores, no es moco de pavo. La virguería es que la máquina tenía su Z80 ejecutando código TODO EL RATO (excepto en una corta ISR que lo que hace es leer el teclado y actualizar cosas), mientras que el hardware gráfico se encargaba del display y de componer los sprites sobre un fondo de tilemap, sin que el Z80 no tuviese más que decir dónde estaban las cosas. El señor Simon Owen ha hecho la virguería de que, en cada interrupción, todo ese comportamiento hardware se simule por software lo suficientemente rápido para que la velocidad del juego se vean mínimamente alterada.
Es para quitarse el sombrero, vaya.
Es para quitarse el sombrero, vaya.
- Metalbrain
- 128 bits
- Mensajes: 1717
- Registrado: 16 Oct 2005 15:56
- Ubicación: Sevilla
- Contactar:
Re: Emulador del "Pac-Man" original en un ZX Spectrum
Una pequeña puntualización... funciona, pero como deja de coincidir el byte final de paridad al generar el archivo .tap, dará un R Tape Loading error a menos que se le corrija ese detalle (tras dicho error se podrá ejecutar a mano el RANDOMIZE. Según el hilo de WoS, bastaría con hacer un GOTO 90).NeilParsons escribió:[...] con solo renombrar los nombres de archivos que tengan las mismas extensiones .6x (por ejemplo, en el caso de “newpuckx.zip”, se cambiarían los nombres de los archivos “puckman” (solamente tres de los cuatro que posee) por “pacman”, sin cambiar sus extensiones). ¡¡¡Y funcionan!!!
SevenuP se escribe con u minúscula y P mayúscula.
I need Speed - Kein Aufruf zu Drogenkonsum.
I need Speed - Kein Aufruf zu Drogenkonsum.