Ŀ
 Spec256v1.2     (C) 1999 por Iigo Ayo Blzquez (inigoayo@writeme.com)   
Ĵ
         Emulador de Sinclair ZX Spectrum en modo 16/256 colores           
Ĵ
 Cdigo:            Iigo Ayo Blzquez (inigoayo@writeme.com)                
 Grficos en 256c:  David Goti      (sagan69@teleline.es)                  



        1.- Introduccin

        2.- Contenido

        3.- Requerimientos

        4.- Caractersticas principales

        5.- Teclas y mens

        6.- Debugger

        7.- Juegos soportados

        8.- Historia

        9.- Por Hacer

       10.- Fallos conocidos

       11.- Contacto

       12.- Agradecimientos

       13.- Saludos

       14.- Colaboraciones


 ---------------------------------------------------------------------------

        1.- Introduccin
       ------------------

   El desarrollo de este emulador se ha hecho sin ningn nimo de lucro
ni de beneficio alguno de ninguna otra clase. Puede y debe distribuirse de
forma gratuita.
Ninguno de los que formamos el equipo de desarrollo del Spec256 nos hacemos
responsables de los posibles daos que el uso de este programa
pudiera causar. Por tanto, salo bajo tu propia responsabilidad.
Las modificaciones que algunos juegos sufren para poder ser utilizados en
256 colores se hacen con la nica intencin de aprovechar la potencia grfica
que hoy se nos brinda y en ningn momento se modificarn aquellos textos que
hagan referencia a los autores o compaas originales.
Amstrad permite el uso y distribucin de los ficheros de ROM contenidos con
este programa puesto que se hace con fines de emulacin.

        2.- Contenido
       ---------------

   La distribucin actual de Spec256 corresponde a la versin 1.2 y est
formada por el fichero sp256v12.zip que en su interior contiene los siguientes
archivos:

        spec256.exe     -> Emulador de Spectrum
        spectrum.rom    -> Rom original de Spectrum 48K
        spec256.cfg     -> Fichero de configuracin
        leeme.txt       -> Documentacin en castellano
        readme.txt      -> Documentacin en ingls

A su vez, el fichero ZIP contendr directorios correspondientes a los
juegos de Spectrum en modo de 256 colores que estn soportados.
Para realizar una correcta extraccin de los ficheros y generar correctamente
los directorios deberemos usar por el parmetro -d del PKUNZIP o el WINZIP
en su defecto.
Ser dentro de estos directorios donde posteriormente introduciremos los
juegos de Spectrum que se correspondan.

        3.- Sistema necesario
       -----------------------

   Para el correcto funcionamiento de Spec256 necesitars como mnimo un
PC 486DX4-100 con 4Mb de RAM, VGA de 256Kb. El sistema operativo necesario
es el DOS, aunque tambin funciona bajo una ventana de Windows 95/98.
Aunque en esta versin no es necesario, en las siguientes versiones se
requerir una tarjeta de sonido Sound Blaster o compatible para reproducir
el sonido del Spectrum 128K.

        4.- Caractersticas principales
       ---------------------------------

   Qu es Spec256?

   Spec256 es un emulador de Spectrum de caractersticas muy similares
a los emuladores de Spectrum ya existentes. Pero, qu hace diferente a
este emulador del resto? Su capacidad exclusiva de cargar juegos en modo
de 256 colores, esto es, con los grficos mejorados pero manteniendo y
necesitando del cdigo original del programa para su correcto funcionamiento.

   Cuando Spec256 est corriendo, no solo est simulando un procesador Z80.
De forma paralela est simulando un procesador ficticio denominado Z80_GFX
que haciendo uso de su zona de memoria en la que cada posicin es de 64 bits
es capaz de mover datos y operar con ellos de forma que podamos tener obtener
como resultado juegos en 256 colores.
Es decir, de forma similar a un procesador de arquitectura Harvard, el Z80_GFX
utiliza la zona de memoria del Z80 para ejecutar sus instrucciones (obtencin
del cdigo de instruccin) pero los resultados no son almacenados en ese mapa
de memoria que pertenece al Z80, si no que tiene una zona exclusiva para l
de donde obtiene y guarda los datos con los que opera. Esta zona de memoria
consta de 65536 posiciones en la que cada palabra es de de 64 bits.

   Spec256 est hecho ntegramente en ensamblador de 32 bits y aunque por
razones obvias tendra que barrer en velocidad a la mayora de los emuladores
existentes no lo hace porque debemos de tener en cuenta que por cada
instruccin que se simula del Z80, se simula una del Z80_GFX que trabaja con
datos 8 veces ms grandes. Aunque no es del todo cierto, es como si Spec256
estuviera emulando varios procesadores Z80 a la vez y esto hace que se pierda
mucha velocidad en la emulacin. Aun as, como ya se comentaba en el punto
anterior, el equipo mnimo necesario para su es para muchos considerado como
obsoleto.

   Resumiendo las caractersticas de Spec256:

        - Emulacin de Sinclair ZX Spectrum 48K en modo tradicional:

          - Emulacin de Z80
              - Instrucciones documentadas e indocumentadas
              - Timing de las instrucciones
              - Modos de interrupcin 0, 1, 2 y NMI con control de debugger
              - Registro R
           - Soporte de Joystick Kempston, Sinclair 1 y 2, Cursor/Protek/AGF
             mediante el uso del joystick del PC
           - Sonido del Spectrum a travs del altavoz
           - Puerto FEh relativa a teclado y color del borde

        - Emulacin de Sinclair ZX Spectrum 48K en modo mejorado (256 colores)

           - Emulacin de Z80_GFX. "Procesador grfico" de 8 planos
              - Emuladas la mayora de las instrucciones del Z80 pero
                trabajando con 64 bits en lugar de 8 bits

        - Debugger:
           
           - Completo Debugger de Spectrum Z80/Z80_GFX
                - Ventanas de memoria del Z80, Z80_GFX, registros del Z80 y
                  del Z80_GFX, programa del Z80 y stack.
                - Cambio dinmico de las ventanas.
                - Seleccin de la direccin activa en cada ventana.
                - Grabacin de la memoria en ficheros.
                - Visualizacin de la pantallas del Spectrum en modo.
                  estndar o 256 colores.
                - Grabacin PCX de la pantalla seleccionada (16 o 256 colores)
                - Forzado de interrupcin INT.
                - Modificacin de valores de memoria (Z80 y Z80_GFX).
                - Modificacin de todos los registros del Z80.
                - Ejecucin en modo traza (step into).
                - Ejecucin paso a paso (step over).
                - Ejecucin hasta una direccin (go until).
                - Activacin y desactivacin de hasta 10 breakpoints de
                  ejecucin.
                - Breakpoints a memoria en operaciones de lectura/escritura
                  ilimitado.
        
        - Simulacin de NMI

        - Grabacin de PCX en modo 16 colores (modo estndar) o 256 colores
          (modo mejorado)

        - Ajuste de la velocidad el emulador

        - Seleccin y calibracin del Joystick

        - Formatos de Snapshot:

           - Carga de Snapshots
                - Formato .Z80 versiones 1.45, 2.0 y 3.0 de juegos de 48K
                - Formato .SNA (48k)
                - Formato adicional .GFX para juegos de 256 colores
           - Almacenamiento de Snapshots
                - Formato .Z80 versin 1.45 (48k)
                - Formato .SNA (48k)
                - Formato adicional .GFX para juegos de 256 colores

        5.- Teclas y mens
       --------------------

        F1 - Ayuda
        F2 - Modo 16 colores: permite ver el spectrum en su modo original,
             esto es, con 16 colores o modo estndar.
        F3 - Modo 256 colores: permite ver el spectrum en modo de 256 colores
             Este modo es el que se usa cuando se carga un juego de 256
             colores y aunque se puede activar con los juegos de Spectrum
             normales, no se ver ninguna mejora si los grficos no se
             han mejorado.
        F4 - Captura de imgenes PCX: captura la pantalla que el Spectrum
             est mostrando en ese momento y la guarda en un fichero PCX
             con el nombre IMAGEnnn.PCX donde nnn corresponde a vun nmero
             que se va incrementando en funcin de las pantallas que vayamos
             almacenando.
             La pantalla almacenada ser en 256 colores si est activado
             este modo (F3) o 16 colores si est el modo estndar (F2).
        F5 - Cargar Snapshot: permite cargar un juego de Spectrum que est
             en formato .SNA o .Z80 de 48K.
        F6 - Grabar Snapshot: permite almacenar el estado actual de la memoria
             y registros en un fichero. Por defecto se almacenar en formato
             .Z80.
        F7 - Cargar juego de 256 colores: permite cargar uno de los juegos de
             256 colores que estn debidamente alojados en su directorio
             correspondiente. Al cargarse un juego de este tipo, se activa
             el modo de 256 colores.
        F8 - Grabar juego de 256 colores: permite almacenar el estado de la
             memoria y registros de los procesadores Z80 y Z80_GFX. Los
             ficheros no se almacenarn en el directorio del mismo juego
             para evitar modificaciones. El almacenamiento se har en el
             directorio donde est Spec256.
        F9 - Cambiar opciones: se activa el men de opciones especiales.

                   J - Permite seleccionar el joystick que se utilizar
                       mediante el Joystick del PC. Puede ser:
                                - Kempston
                                - Sinclair 1
                                - Sinclair 2
                                - Cursor/Protek/AGF
                   C - Calibracin del joystick. Necesario para el correcto
                       funcionamiento de nuestro mando.
                NUM+ - Aumenta la velocidad del emulador. Si el emulador se
                       ejecuta en una mquina suficientemente potente, esta
                       opcin elimina los estados de espera que hay entre
                       la ejecucin de las instrucciones.
                NUM- - Disminuye la velocidad del emulador. Inserta estados
                       de espera adicionales entre la ejecucin de las
                       instrucciones.
                   S - Selecciona el Hardware del emulador. De momento solo
                       est disponible el Spectrum 48k.
                   B - Activa desactiva el sonido del altavoz (beeper).

                Las selecciones realizadas en este men quedan registradas
                en un fichero de configuracin (spec256.cfg).

        F10 - Entrar en el debugger
        F11 - Generar una NMI: Se fuerza una interrupcin no enmascarable
              y para observar el proceso de excepcin con detalle se entra
              automtica e inmediatamente despus en el debugger.
        F12 - Reset: Se inicializa a 0 el estado de todos los registros del
              procesador Z80.

        ESC - Salir del emulador.

        6.- Debugger
       --------------

   El debugger no est del todo finalizado puesto que tengo intencin de
introducir algunas funciones adicionales como lectura/escritura en puertos
de entrada/salida, breakpoints a puertos, bsqueda de datos, etc.
Aun as, me atrevera a decir que el debugger implementado en el Spec256 es
el mejor debugger de Z80 tiene un emulador de Spectrum.

Las teclas de funcionamiento son las siguientes:
       
      TAB - Cambio de ventana activa: Permite seleccionar la ventana sobre
            la que vamos a operar. Puede ser una de las siguientes:
                - Memory_Z80
                - Memory_GFX
                - Registers_Z80
                - Registers_GFX
                - Program_Z80

    CURSORES -
 AVPAG/REPAG - Permiten moverse por los datos de la ventana activa.
  INICIO/FIN -

    SPACE - Permite habilitar/deshabilitar un breakpoint sobre la
            posicin de memoria en la que est el cursor.
            Pueden habilitarse breakpoints tanto en la ventana de
            Programa como en la ventana de memoria. 
            El debugger se activar antes de ejecutar la instruccin sobre
            la que est el breakpoint cuando este est en la ventana de
            Programa y despus de ejecutar la instruccin si se trata
            de un breakpoint por un acceso de lectura/escritura a memoria.

    INTRO - Permite modificar el valor de la posicin de memoria o registro
            sobre el que est posicionado el cursor.
            Si se pulsa ESC durante la introduccin, se cancela la
            modificacin.

       F1 - Almacenar imagen de memoria: se almacena un fichero con nombre
            MEMORYnn.BIN de 64K que contiene el estado de la memoria del
            Spectrum. Esta funcin est muy bien para comparar los contenidos
            de la memoria en distintas fases de la emulacin.
       F2 - Ver y seleccionar la pantalla del Spectrum en 16 colores.
       F3 - Ver y seleccionar la pantalla del Spectrum en 256 colores.
       F4 - Almacenar fichero PCX con la imagen de la pantalla del Spectrum.
       F5 - Forzar interrupcin: Se fuerza a que el Z80 procese la rutina de
            interrupcin. Para ello, las interrupciones deben estar
            habilitadas.
       F6 - Cambio de direccin: selecciona cul es la primera direccin en
            la ventana activa.
       F7 - Ejecutar/trazar: ejecuta una instruccin del Z80 (y del Z80_GFX). Si
            la instruccin es de llamada a una subrutina (CALL/RST) se entra en
            la subrutina.
       F8 - Ejecutar paso: ejecuta un paso. Es igual que F7, pero los CALL/RST
            son procesados en una paso.
       F9 - Ejecutar hasta: ejecuta instrucciones hasta que el procesador
            alcanza la instruccin en la que est posicionado el cursor.
      F10 - Run/Salir: Sale del debugger y continua la ejecucin normal.


       ESC - Salir del emulador

        7.- Juegos soportados
       -----------------------

   Spec256 soporta la mayora de los juegos de Spectrum 48K en formatos
.Z80 y .SNA como cualquier emulador. Para cargarlos, utiliza la opcin F5
y selecciona el fichero que contenga el juego.
Puede bajarte juegos de infinidad de sitios en la red.
Ms informacin en http://www.emulatronia.com


   Spec256 v1.2 soporta adems los siguientes juegos en 256 colores:

    Directorio   Nombre     (Autor)               Mejora grfica (256 col)
   ------------ --------------------             --------------------------
    JETPAC       Jet Pac (Ultimate)                David Goti
    SABREW       Sabre Wulf (Ultimate)             Iigo Ayo
    UNDERW       Underwulde (Ultimate)             David Goti
    KNLORE       Knight Lore (Ultimate)            Iigo Ayo     
    GAMEOVE1     Game Over 1 (Dinamic)             David Goti
    GAMEOVE2     Game Over 2 (Dinamic)             David Goti
    PHANTIS1     Phantis 1 (Dinamic)               David Goti
    ARMYMOV1     Army Moves 1 (Dinamic)            David Goti
    ARMYMOV2     Army Moves 2 (Dinamic)            David Goti
    PROFANAT     Abu Simbel Profanation (Dinamic)  Imanol Zalbidea
    SOLOMONS     Solomon's Key (Probe)             Alberto Rodrguez
    CYBERNOI     Cybernoid (Hewson)                Alberto Rodrguez     
   Para poder utilizarlos, primero debes hacerte con los juegos en
versin de 256 colores y despus copiarlos en su directorio correspondiente.
Ms informacin en http://www.emulatronia.com/emusdaqui/spec256/index.htm


        8.- Historia
       --------------

     * 10/97 - Primeras ideas de realizar un emulador de estas caractersticas
               al ver la versin del Manic Miner para PC. Alguos me decan
               que la idea era interesante pero imposible de llevar a cabo.

     * 11/97 - Emulacin del procesador Z80_GFX construido. Quedaba
               demostrado que el proyecto no era una locura ma y se poda
               implementar.

     * 12/97 - El proyecto se abandona por una falta de inters general.

     * 06/99 - David Goti me insiste todos los fines de semana para que
               retome el proyecto. Desempolvo los cdigos fuente y me
               pongo a ello nuevamente. Se corrigen multitud de fallos, se
               implementa el debugger.

     * 07/99 - Aparece la primera versin Beta en Emulatronia, pgina oficial
               de Spec256.
               http://www.emulatronia.com/emusdaqui/spec256/index.htm

     * 09/99 - Primera versin oficial de Spec256 v1.2 que emula tanto
               juegos de Spectrum 48K estndar como juegos en 256 colores.

        9.- Por Hacer
       ---------------

     Todava faltan multitud de cosas por hacer. Nuestra intencin es emular
tambin juegos de 128K para poder implementar la tcnica de 256 colores en
juegos como la Abada del Crimen entre otros.
En cualquier caso todava falta:

        * Implementar Spectrum 128K

        * Sonido del PSG AY-8910 a travs de la Sound Blaster.

        * Simular combinaciones de teclas con el PC (delete, cursores,...)

        * Mejorar formato .Z80 y .SNA. Adaptarlos a 128K

        * Implementar nuevas funciones en el debugger.

        * Corregir los fallos que aparezcan en el emulador.

        * Construir un Z80_GFX para 16 planos o true color.
        
       10.- Fallos conocidos
      -----------------------

        * Es necesario sincronizar HALT con el retrazo vertical.

        * Hay que mejorar la rutina de lectura del Joystick, porque se
          pierde mucho tiempo con la lectura de la funcin de la BIOS y
          se ralentiza mucho la emulacin.

        * Velocidad. Aunque se trata de autoajustar la velocidad el
          emulador en funcin de la velocidad del PC, todava hay
          que mejorar la rutina de clculo.

        * En algunos ordenadores muy potentes y por alguna extraa razn,
          el emulador va muy lento.

        11.- Contacto
       ---------------

        Emulador: Iigo Ayo (inigoayo@writeme.com)

        Mejoras grficas en juegos de 256 colores:
                David Goti      (sagan69@teleline.es)
                Imanol Zalbidea (imanolz@clientes.euskaltel.es)             

        12.- Agradecimientos
       ----------------------

   A Emulatronia. La mejor pgina de emuladores en Espaol.

        URL: http://www.emulatronia.com

   Gracias a Pts y a Dev de Emulatronia por el nimo desinteresado que han
   demostrado con el proyecto como por su difusin con el desarrollo
   de la pgina web as como por el logotipo del Spec256.

   A Ishmair, cuyo desarrollo inicial del M.A.Z.E. (Multi Asm Z80 Engine)
   aprovech para empezar Spec256.

   A Da Vinci, cuyo afn y aliento desinteresado me anim a realizar
   la versin de 256 colores del Knight Lore.

   A Sir Clive Sinclair por disear una maquinita tan sencilla como
   ingeniosa.

   A Ultimate por desarrollar juegos con tcnicas e ingenio (del que hoy
   da muchas compaas carecen) y realizar los mejores juegos de Spectrum
   de la historia.

        13.- Saludos
       --------------

   Saludos a toda la cuadrilla de Sopelana: Angel Aguinaga, Carlos Bidea,
Mikel Epalza, Ignacio Escalza (dnde te metes?), Joseba Epalza y dems
que no se sientan aludidos. Siento que me tengis que aguantar.

        14.- Colaboraciones
       ---------------------

   Si el proyecto Spec256 te gusta y tienes inters en ver alguno de tus
juegos preferidos con grficos de 256 colores hechos por ti mismo, mndanos
un e-mail a cualquiera de las direcciones de la seccin de contacto y te
mandaremos la informacin necesaria para comenzar el proyecto.
