Revistas en Papel
Anterior
Menú
Logotipo

AMIGA.InFo • Mayo/Junio 1995 • Número 3

El 8 Bits ORIENTAL

EMULADORES DE 8 BITS
 

Emulando a un AMIGO...

Muchos de nosotros, guardamos un afecto especial pro aquel primer ordenador con el cual nos introducimos en el mundo de la informática, otros entraron directamente en el mundo de los grandes ordenadores personales, guardando curiosidad por aquellos "pequeños" de 8 bits. Tanto si somos de un grupo o del otro, estamos de suerte. Podemos encontrar en versión dominio público o shareware pequeños programas que los emularán para que podamos revivir los viejos tiempos o descubrir cómo eran. Aquí es donde entra este nuevo artículo encargado de mostraros estas pequeñas joyas que convertirán nuestro Amiga en un multiordenador.

Alberto
  Orante

NOTA: Pulsando sobre las fotos con borde azul ampliarás la imagen.

Un poco de Historia

MSX significa MicroSoft eXpanded y nació en 1983. Era un ambicioso proyecto llevado por una gran cantidad de empresas. Prácticamente la totalidad tenían origen Japonés. Consistía en un acuerdo para crear un sistema de ordenadores domésticos de bajo coste, ligeramente diferentes entre sí, pero totalmente compatibles a nivel hardware y software. Entre estas empresas podemos encontrar a Sony, Philips, Yamaha, Mitsubishi, Panasonic, Pioneer, Canon, JVC, Sanyo, Spectravideo y Dragon entre otras. El problema de este proyecto fue que llegó al mercado europeo un poco tarde, ya que estaban muy integrados otros ordenadores como el Specturm y el Commodore 64. A pesar de ello España era en 1988, el segundo país del mundo en ventas de MSX.


MSX2+ de la Multinacional SONY. Este modelo no se comercializó en España.

En 1985 salieron los MSX 2 que incorporaban un VDP (Procesador de vídeo), enormemente mejorado. Aunque, en prestaciones gráficas se ponían por delante de los demás ordenadores, no tuvieron las ventas esperadas en el mercado europeo debido a que eran más caros y además, eran unos completos desconocidos por la gente a causa de la escasa publicidad. Por esas razones y porque empezaban a dominar el mercado los ordenadores de 16 bits como el Amiga y el Atari, las siguientes generaciones de MSX no salieron de Japón, a excepción de unos pocos importados por pequeñas distribuidoras a precios elevados. estos modelos eran los MSX 2+ que incorporaban el VDP2 con un nuevo modo gráfico, similar al HAM, de 19.268 colores y la posibilidad de crear scroll horizontal por hardware. También, incluían un chip Yamaha de sonido con 9 canales FM: Sólo fabricaron estos nuevos modelos Panasonic, Sony y Sanyo.


Primera generación de MSX.

Más tarde, aparecieron los Panasonic Turbo-R con un microprocesador de 16 bits a 28.64 MHz, el R800, además de incluir el Z-80 para asegurar la completa compatibilidad con los modelos anteriores, incluyendo también, un canal PCM de 8bits t 256k de RAM. Por último, salió otro modelo Turbo-R con 512k de RAM, MIDI e interfaz gráfico (GUI) en ROM.

El MSX fue el primero en usar nuevas tecnologías como las unidades de 3,5", invención de Sony, y tarjetas de memoria del tamaño y grosor de una tarjeta de crédito, utilizadas posteriormente por la consola Master System de SEGA y la PC Engine o Turbo Graft de NEC.

En la actualidad, a pesar de que hace varios años que no se fabrican, el país donde hay más movimiento de MSX es Holanda. De allí sale prácticamente todo el software y hardware actual, además de realizar una exposición anual bastante importante.

En España podemos encontrar varias agrupaciones, clubs, y BBS. Una de estas agrupaciones es la AAM (Asociación de Amigos del MSX) y una de sus actividades son los encuentros de usuarios que se realizan en Barcelona cada 6 meses (la última fue el 30 de Abril), en estos encuentros se habla del panorama actual de los MSX y se exponen las últimas novedades en hardware y software.


El MSX por dentro


Detalle del interior de un MSX.

El MSX es un ordenador gobernado por un microprocesador Zilog Z80A de 8bits que es una versión mejorada del Intel 8080. Este funcionaba a una velocidad de 3,58 MHz. También contiene un Procesador de Vídeo, (VDP), con una memoria reservada de 16kBytes llamada VRAM. COntenía 32kBytes de ROM, 16k para la BIOS y los 16k restantes para el BASIC.

El PPI (Interfaz Programable de Periféricos) que contiene, es el 8255 de Intel. Éste maneja la memoria, el teclado y la entrada y salida de cassette.

Para reproducir sonidos contiene un chip llamado PSG (Generador de Sonido Programable) que es el AY-3-8910 de General Instruments, con 3 canales FM de 8 octavas más 1 canal de ruido.


Panasonic Turno R. Uno de los últimos modelos de MSX.

El VDP, el TMS 9918A, tiene dos modos de texto y dos gráficos. El primer modo llamado screen 0 es de 40 columnas por 24 filas con sólo dos colores. Screen 1 es otro modo de texto de 32 x 24 carácteres multicolor. Screen 2 es un modo gráfico de 256 x 192 pixels con 16 colores, 2 por cada byte (8 pixels horizontales). Screen 3 era un modo prácticamente no utilizado, de 64 por 48 bloques de 16 colores. Los tres últimos modos contenían 32 planos de sprites con la limitación de cuatro por línea que podían ser de 8x8 ó 16x16, normales o ampliados. Contiene ranuras para cartuchos como las consolas, donde se pueden colocar desde cartuchos ROM de programas o juegos, ampliaciones de sonido, interfaces MIDI, RS-232C, ampliaciones de 16k a 4Mbytes de RAM, disqueteras de 3,5" o 5,25", controladoras SCSI, digitalizadores de vídeo, escáners de mano, etc.

El MSX2, entre otras cosas, contiene un nuevo VDP, el V9938 compatible con el modelo anterior, que incorpora un modo de texto de 80 columnas, nuevas resoluciones gráficas (256x120, 512x210) de 16 colores de una paleta de 512, un nuevo modo de 256 colores simultáneos y sprites mejorados. Además, tiene una especie de blitter, como el del Amiga, que le permite mover bloques de la memoria de vídeo con operadores lógicos, y posibilidad de crear scroll vertical.

Casi todos venían con 128k RAM y 128k de VRAM, y una disquetera de doble cara. El sistema operativo el MSX DOS es muy similar al MSDOS. Utiliza el mismo formato de discos con lo que podremos leer y escribir ficheros de un compatible y viceversa.


  Emuladores de MSX para Amiga  

Cuando empecé a escribir este artículo sólo conocía la existencia del MSX Emulator, pero al día siguiente, tuve la suerte de conseguir el fMSX AMIGA v0.4. Podemos ver como, de dos formas muy diferentes, podemos llegar a obtener el mismo resultado: la emulación de un MSX, pero eso sí, con sus pros y sus contras.


  MSX Emulator  

Programado por Juan Antonio Gómez Gálvez.

El emulador está programado casi en su totalidad por Juan Antonio menos el PSG que se encargó Sergi Martínez. También han colaborado Antonio J. Pomar (creador del ZXAM Spectrum emulator) ofreciendo datos técnicos sobre las instrucciones secretas del Z-80, Albert Siersema y Ronal Gorter (programadores del MSX Emulator Holandes para compatibles) dando información sobre las disqueteras de MSX, Nestor Soriano "Konami Man" facilitando información sobre el VDP de los MSX2 y MSX2+ y Manuel Hiniesta ofreciendo información técnica del MSX2.

Imágenes capturadas de algunos juegos ejecutados desde el MSX2 Emulator.

Hay que destacar que esta programado totalmente en assembler a nivel hardware, congelando la multitarea y aprovechando toda la máquina para dar la máxima velocidad al emulador.

Podemos encontrar varias versiones:

  • MSX Emulator v1.3 64k RAM. Esta versión emula un MSX normal y corriente, pero con la ventaja de que es la más rápida de todas, consiguiendo con algunos programas, en un 1200 sin extras, ir a la misma velocidad que un MSX normal.

  • MSX Emulator v1.3 256k RAM. Para conseguir 256k ha tenido que reprogramar casi la totalidad del Z-80, y ha perdido velocidad. Este paso era muy necesario para las siguientes versiones que serían de MSX2.

  • MSX2 Emulator v1.7 a la v1.9. Empieza a emular los modos gráficos del MSX2 y vienen corregidos algunos "bugs" que tenía el Z-80A. Podremos ver imágenes de muchos juegos pero no podremos jugar ya que le falta por emular los sprites, además de otras opciones.

  • MSX2 Emulator v2.0 Amiga.InFo. La emulación del VDP de los MSX2 está bastante avanzada, emula los sprites, hasta 4Mb de RAM y tiene la opción de emular cuatro canales del SCC en vez del PSG.

Las características principales de éstos son:

El Z-80A está emulado un 98%, dejándose temporalmente los Flags N y Hm el registro SP no puede leer de la ROM y el flag P sólo es emulado con las instrucciones OR, AND y XOR. El registro R no está correctamente emulado. También se ha de tener en cuenta que algún programa puede fallar por algunos bugs que van siendo corregidos a medida que son encontrados.

El VDP está totalmente emulado a excepción del screen 3 y los sprites ampliados. Tiene la ventaja de que puede visualizar 8 sprites en una línea en vez de los 4 que tiene originalmente. En screen 0 los caracteres son de 8*8 en vez de 6*8 como en un MSX original. El VDP de los MSX2 en la versión 2.0, está bastante evolucioando y ya saldrán correctamente algunos juegos gracias a que ha empezado a emular los sprites, y ha perfeccionado y ampliado los comandos y operadores lógicos.

Al PSG le faltan los envolventes que estarán emulados en próximas versiones, según nos ha contado el autor. De todos modos, no se aprecia una gran diferencia, en los programas que los usan.

Emula perfectamente 4 canales del SCC de los 5 que contiene. Aquellos juegos que utilizaban este chip (Sound Chip Creator) incluido en juegos de cartucho de la casa Konami, sonarán de forma muy similar a los originales, a pesar de que le faltan un canal del SCC y los canales del PSG.

Emula el teclado y los puertos del joystick, permitiendo de dos botones, como por ejemplo el pad de Megadrive, que nos será muy útil porque eran utilizados en la mayoría de los juegos, pero en el caso de tener sólo de uno, no será problema ya que hay unas teclas reservadas para utilizarse como segundo botón.

La disquetera será nuestra única vía (de momento) para leer o grabar programas. Está emulada utilizando el mfm.device, ya que, utiliza el mismo formato que las de PC, salvo el bootblock que podremos cambiar desde la ventana de opciones del emulador. Ésta acepta discos de simple o doble cara asegurándonos compatibilidad con nuestros antiguos discos.


Requiere ...

Por degracia no podemos hacerlo funcionar en cualquier Amiga .Requiere de unas prestaciones mínimas que no todos los modelos ofrecen.

La configuración mínima que necesitamos para que funcione, es un Amiga con un 68020 y 2 MBytes de RAM. Si tenemos además 1.7 MBytes de Fast RAM la velocidad de emulación será prácticamente la de un MSX, pero para conseguir una emulación perfecta necesitaremos, además, de lo antes mencionado un 68020 a 25MHz o superior.

La versión 1.3 64k, funciona en un ordenador que tenga FAST RAM de 32 bits igual o más rápido, en algunos casos, que un ordenador MSX. Las memorias FAST RAM de PCMCIA no son aptas porque, al ser de 16 bits, ralentizan el emulador, por lo que se recomienda desconectarlas mediante soft o extraerla.

No es necesario tener los chips AGA pero en caso de tenerlos, el emulador utilizará las ventajas que le ofrecen, para emular más rápido el VDP.


Conclusiones

A pesar de que no emula al 100x100 un MSX real, la gran mayoría del software de los MSX funciona correctamente. La ventaja de que podamos tener 8 sprites en la misma línea es de agradecer en algunos juegos, pero se convierte en una desventaja en aquellos que utilizaban esta limitación para desaparecer u ocultar algunos sprites. Para emular la disquetera usando el mfm.devcie debe de desconectarlas como disquetera de Amiga, por lo que al salir del emulador nos quedamos sin ella, aunque podremos seguir utilizandola como de PC, por lo que deberemos de reinicializar el ordenador para recuperarla. Por suerte este fallo se verá solventando en futuras versiones.


Como conseguir el emulador

El emulador es Shareware, para conseguir la versión completa debéis registraros. Además de obtener lo sin ningún tipo de límite, obtendréis gratuitamente, a excepción de los gastos de envío y disco, las futuras versiones del emulador.

Para conseguir la versión Registrada del Emulador o para contactar con el autor escribir a: Juan Antonio Gómez Gálvez.

NOTA ENCANTA: La dirección postal ha sido omitida por tratarse de datos muy antiguos.


fMSX AMIGA v0.4

Programado por Hans Guijt

Como decía antes, en Holanda es donde hay más actividad de MSX y después de salir varios emuladores para PC, no era de extrañar que sacaran uno para Amiga. Este emulador viene de la versión fMSX UNIX de Marat Fayzullin, que, como indica su nombre, funciona en ordenadores bajo el sistema UNIX, con lo que sólo tienes que compilar el source C en cualquier máquina con este sistema, (en un Amiga por ejemplo), y ejecutar el programa. Hans Guijt cogió el source en C y lo adaptó para que funcionara en Amiga OS y lo compiló con el SAS/C. Luego fue corrigiendo bugs y adaptando algunas funciones a código máquina para acelerarlo, utilizando DEVPAC (también existente en MSX), hasta llegar a la versión actual que es una preview de lo que puede llegar a ser.

El resultado es un emulador de MSX en multitarea. También cabe destacar que la emulación del VDP es diferentes al MSX Emulator, sobre todo a la hora de mostrar sprites ya que esta los hace utilizando bobs, y en el PSG están emulados los tres canales con sus envolventes. Pero le falta emular el canal de ruido.

De momento no emula la disquetera, y las únicas formas de cargar un programa es llamando al emulador desde una shell y colocando seguidamente el nombre del programa., o desde un icono. Una vez ejecutado nos creará una ventana gráfica que será la pantalla del MSX y otra en el Workbench con dos "sliders" donde podremos modificar el refresco de pantalla, y el período de interrupciones.

Modificando estas opciones haremos que el emulador vaya más rápido pero sacrificando los resultados. También encontraremos un gadget "Save config." que creará un icono al programa ejecutado, con los valores de las opciones anteriormente mencionadas, para que podamos ejecutar automáticamente este programa desde el workbench.

En caso de llamarlo sin ningún programa nos saldrá directamente el MSX Basic.

Para funcionar requiere un 68020 y la versión 39 del Kickstart. Para funcionar como un MSX normal necesitará como mínimo una BLIZZARD II con un 68030 a 50MHz o un 68040. El autor nos indica que en las próximas versiones emulará la disquetera utilizando el Crossdos, el VDP de los MSX2 y optimizará el código para que sea más rápido, y también nos indica que, a largo plazo, emulará el SCC y el FM-PAC.


Conclusiones

Este emulador tiene la gran ventaja de funcionar en multitarea, pero en un 1200 con un 030 a 28Mhz y ram de 32bits ya mucho más lento que un MSX original, pero ésto no será problema si tenemos un Amiga 4000 con un 68040.

Al emular los sprites con bobs se consigue que se pueda tener los que queramos en la misma línea. Pero tiene la desventaja, como en el MSX Emulator, de que aquellos juegos que utilizaban esta limitación para ocultar sprites, simplemente no los ocultarán, además de que la emulación es más lenta que si usamos sprites convencionales.

En resumen, es un emulador bastante bueno si nos olvidamos de su excesiva lentitud. Necesita urgentemente la emulación de la disquetera para poder utilizar nuestros programas, además de optimiciones para ganar velocidad.


Como conseguir el emulador

La versión que comentamos es totalmente freeware. Lo podremos encontrar en el CD-ROM Aminet Share 6 y, por supuesto, en Internet.


Tutorial del MSX2 Emulator v2.0 AMIGA.InFo

Con el disco de portada obtendremos una versión shareware para probar el emulador con un tiempo límite de 5 minutos y el joystick desabilitado. Una vez descompactado sobre cualquier soporte de Amiga, encontraremos cuatro ficheros: el Emulador, un dibujo del teclado de Amiga indicando las teclas del MSX, un guide con toda la información referente al emulador y una nota.

Si tenemos un Amiga con un 68040 deberemos ejecutar el comando "cpu nodatacache", ya que el "Data BURST" no deja funcionar correctamente al emulador.

Si accionamos el icono del emulador, nos abrirá una nueva pantalla donde saldrá una ventana de presentación y posteriormente la ventana de opciones.

Podemos dividirla en cuatro partes: La primera contiene las opciones referentes a la disquetera de nuestro Amiga que usaremos como cualquiera de las dos de MSX, con sólo accionar al correspondiente gadget. La opción "Install MSX Boot" sirve para instalar el Bootblock del MSX en un disco con formato en modo PC. El MSX se quedará bloqueado cuando entremos en la emulación con un disco ya metido en la unidad, si no tiene el bootblock de MSX. No pasará esto si lo introducimos cuando estemos en el Basic o en el shell del sistema operativo. en la segunda tenemos opciones generales, como cambiar la ROM de los MSX2 por la de los MSX de primera generación, la cantidad de RAM que queremos que emule de 128k a 4Mb, y por último si queremos que emule el SCC en vez del PSG o viceversa.

En la tercera podremos modificar las interrupciones de refresco de la pantalla para acelerar la emulación, y el tipo de pantalla (WorkBench, PAL, NTSC o MSX Mode). Y la cuarta parte (parte inferior de la ventana) encontramos los gadgets con el "About", "Go!" donde entraremos en el emulador. "Continue" que se encuentra desactivada, y "Exit" para salir del programa. También, encontraremos un slider llamado "Emulation Speed" para ralentizar la emulación en caso de tener un ordenador donde vaya demasiado rápido.

En los menús PULL-DOWN obtendremos más opciones, como activar o desactivar el Multikey, o el puerto del ratón y para conectar un segundo joystick (ya que el ratón puede dar problemas). Esta última esta desactivada. También, tendremos la opción de grabar la configuración del emulador y de la pila del MSX 2 (reloj, datos de la pantalla y password), además del About y Quit. el Multikey solo sirve para el 1200, ya que tiene el problema del teclado donde no podemos pulsar varias teclas a la vez de la misma línea. En aquellos juegos que tenían como truco éso, no podremos sinó activamos esta utilidad que crea un buffer donde almacena lo que escribamos en el teclado. Hay que desconectarlo después de usarlo.

Una vez dentro del emulador la tecla HELP nos servirá para solver al menú principal y la combinación de Ctrl+Alt+Del para hacer un reset y Ctrl+Alt+Help para hacer un hard-reset del MSX (borra toda la RAM del MSX).

Cuando se acaben los 5 minutos de tiempo saldrá la pantalla del menú de opciones, donde podremos entras otra vez en el emulador, sabiendo que la opción "GO!" hace un hard-reset y tendremos que volver a empezar. Cada vez que hagamos un MSX-RESET además, de reinicializar el emulador, el contador de la limitación de tiempo se pondrá a 0. Si tenemos discos con software de MSX o nos los dejan entonces, las instrucciones de carga desde el MSX BASIC son las siguientes:

Para ver un directorio.

  FILES
  FILES"B:
  FILES"*.BAS"

Para ficheros de BASIC ".BAS", ".ASC2, ".LDR"

Para cargarlos sin ejecutarlo para poder listarlo o modificarlo.

  LOAD "nombredelfichero.extension

Para cargarlo y ejecutarlo.

  LOAD "A:nombredelfichero.extension",R
  RUN "nombredelfichero.extension

Para ficheros binarios ".BIN

  BLOAD "nombredelfichero.extension",R

Si tenemos un disco con el sistema operativo, tendremos que hacer un MSX-reset para que cargue el MSX-DOS. Los comandos son los mismos que los del MS-DOS (dir, copy, delete, etc..). Para volver desde el basic tendremos que teclear simplemente "BASIC" + <RETURN>, y para volver, otra vez, al sistema "CALL SYSTEM" o "_SYSTEM".

Para un buen funcionamiento de la disquetera es aconsejable no tener activado el crossdos o la utilidad DiskSpare.


Entrevista a Juan Antonio
Gómez Gálvez

AI: ¿Qué es lo que te ha motivado a hacer este emulador?

Desde hace varios años tenía la idea de hacer un emulador de MSX ya que no existía ninguno. Un día a un vecino le dieron un MSX2 y entonces vi unos juegos muy guapos y revistas con dibujos tipo manga, bueno, me gustó tanto que decidí hacer el emulador. Parece un poco extraño, pero es la verdad.

AI: ¿Cuánto has tardado en hacerlo?

Por ahora llevo un año y creo que tardaré un par de meses en terminar el de MSX2.

AI: ¿para cuándo el de MSX2+?

Pues no creo que lo emule. Porque no tengo nada de información sobre él. Además, no conozco a nadie que lo tenga para hacer pruebas en su casa.

AI: Presentación

Me llamo Juan Antonio Gómez, tengo 20 años, vivo en Cornellà (Barcelona) y uso el Amiga para programar y jugar.

AI: Inicios en la informática

Empecé a los 12 años con un MSX, entonces sólo lo quería para jugar, pero el paso del tiempo hizo que me enganchase a la programación. Nunca he estudiado informática, todo lo que he aprendido ha sido comprando libros y programando cosas.

AI: ¿Por qué Amiga?

La verdad es que todo fue de casualidad, un día que estaba tan tranquilo programando con mi MSX, vino mi madre y medijo: "Te voy a comprar un Amiga" y a los cinco días ya lo tenía en casa, después vi otros ordenadores y me di cuenta de que el Amiga era el mejor.

AI: ¿Qué otros programas has hecho además del emulador?

He programado varias intros, slide show, utilidades y algunas cosas más, pero el emulador de MSX ha sido mi mejor programa. Actualmente estoy programando una demo llamada Genesis totalmente diseñada por GOD, un estudiante de bellas artes y uno de los mejores dibujantes que conozco. Micha gente pregunta por esta demo, y la respuesta es que se va avanzando pero muy lentamente porque le dedico mucho más tiempo al emulador de MSX2.

AI: ¿Proyectos futuros?

Terminar el emulador de MSX2 y la demo Génesis.

AI: ¿Algún otro emulador?

Pues a ésto te puedo decir rotundamente que NO, ya he tenido mi experiencia y no quiero volver a pasar por ello de nuevo. Hace algún tiempo tuve la idea de hacer un emulador de Mega-Drive pero no tengo ni la información ni el equipo necesario para hacerlo.

AI: ¿Piensas dedicarte profesionalmente?

No lo creo, pues yo no estudio informática y lo único que sé es programar en ensamblador para Amiga. Me dedicaría profesionalmente para hacer juegos pero incluso esto está difícil.

AI: ¿Como ves el panorama Amiga (nacional e internacional).?

Pues bastante mal. Hace 5 años cuando me compre el Amiga, el MSX estaba destrozado y el Amiga era el nº1, hoy en día está repitiendo lo mismo que pasó con el MSX pero con el Amiga, y eso, me preocupa. En el extranjero parece que el Amiga se mantiene pero cada vez le cuesta más.

AI: ¿Crees que Amiga resurgirá con fuerza tras la compra de Escom?

Espero que sí, ya que supongo que lo harán mejor que Commodore.

AI: ¿Otras aficiones?

Pues me gusta mucho el Manga, las películas de agentes secretos como las de 007 James Bonmd y salir con mis amigos de MEZCAL.

AI: ¿Has necesitado mucha ayuda para el emulador o lo has hecho todo tú?

Por suerte he conocido a mucha gente que me ha ayudado muchísimo buscando información sobre distintos periféricos del MSX. Pero las 10000 líneas de código las he tenido que programar yo, y eso sí que es un trabajo increíble.

AI: ¿Crees rentable el emulador? ¿Ha tenido mucho éxito?

Ha tenido un éxito increíble, ya que era el primer emulador de MSX que se programaba y muchísima gente deseaba tener uno desde hace años. Yo he recibido muchas cartas del extranjero (Holanda, Noruega, Italia, etc...) y esto me alegra muchísimo.

Sobre rentable, pues no. El emulador lo programo por hobby y esto es lo que más ha motivado a avanzarlo, por muchas copias registradas que haga del emulador nunca me va a salir rentable al año y pico que llevo programándolo.

AI: Equipo de trabajo.

Actualmente tengo un Amiga 1200, 202Mb HD y la Blizzard 1220 (MC68020 a 28Mhz y 4Mb Fast32bit) pero el emulador lo empecé con un A1200 base con disquetera externa. Gracias a esto me tomé muy en serio lo de optimizarlo al máximo.

AI: Si no tuvieras Amiga, ¿qué?

Pues creo que mi vida sería muy distinta a la actual, quien sabe, la verdad es que llevo metido más de 8 años en esto de la programación y esto te quita muchísimas horas de tiempo libre.

AI: Agradecimientos a gente que te ha ayudado:

Quiero agradecer a las siguientes personas toda su ayuda en el desarrollo del emulador de MSX: Manuel Hiniesta, Sergi Martinez, Alberto Orante, José Alvelo, Francisco Carretero y Toni Tomar.

AI: ¿Has aprendido algo haciendo el emulador?

He aprendido muchísimas cosas que desconocía del MSX y Amiga. Muchos de los errores de la emulación del Z-80A eran debidos a una incorrecta programación del MC680x0. (instrucciones que normalmente no se usan pero han sido muy necesarias para la optimización del emulador).

AI: ¿En qué lenguaje está programado?

Está totalmente programado en lenguaje ensamblador para código de MC68020 como mínimo.

AI: ¿Qué equipo Amiga necesitas para desarrollar el emulador?

El emulador lo empecé con un Amiga 1200 base, pero tuve que ampliarlo con un disco duro y una aceleradora a 28Mhz con 4 megas. Con este equipo el Source de 11000 líneas (100000 líneas con las macros expandidas) tarda en compilar 33 segundos y necesita 3 Megas de memoria.

AI: ¿Qué herramientas de programación utilizas?

La única herramienta de programación que uso es el ensamblador Devpac III y el programa GadToolsBox para editar la pantalla del menú.

AI: ¿Cuál fue el principal problema al emular un Z-80 con un Motorola?

Tuve cientos de problemas pero los principales fueron los siguientes:

- Tener que interpretar correctamente los flags que sólo se modificaban en cada instrucción de Z-80A.
- Que el Z-80A funcione sobre memoria segmentada usando un método lo más rápido posible.

AI: ¿Qué técnica utilizas para emular un Z80 y qué trucos?

La emulación del Z-80A la he diseñado tres veces, las dos primeras se quedaron a medias, y la tercera es la que actualmente uso en el emulador. Si empezase un cuarto diseño todo me quedaría mucho mejor y más claro, pero esto ¡nunca pienso hacerlo!

Cada una de las instrucciones del Z-80A es una pequeña rutina del MC68020 que la emula. Todo está programado con macros, una instrucciones del Z-80A llama a su correspondiente macro con todos los parámetros necesarios. El emulador recoge una a una cada instrucción de Z-80A, ejecuta su rutina correspondiente y así todo el rato. Todo está hecho de la forma más rápida posible, he hecho cientos de pruebas y chequeos de velocidad y el que actualmente uso es el más rápido que he encontrado. Los registros AF, HL, DE, BC, IX e IY de MSX los emulo usando los propios registros de Amiga. Los registros PC y SP los emulo apuntando a la memoria del Amiga directamente. La emulación de la paginación segmentada con soporte de mapeador de memoria en bloques de 16Kb del MSX fue lo más difícil, los sub-slots no los emulo porque sin emularlos funciona todo. Esto lo emulo todo por punteros de una forma super inteligente y compleja.

AI: ¿Cómo has conseguido emular el chip de vídeo y el de sonido?

La emulación del vídeo es muy fácil de emular. Lo realmente difícil es encontrar el método más rápido. El MSX2 tiene modos de carácteres y modos gráficos. Los modos gráficos son fáciles de emular, cuando el Z-80A envía información a la VRAM (RAM de vídeo) mediante el puerto &H98 solo hay que ir traduciendo de modo punto-color de MSX2 a bit-planos de Amiga, teniendo en cuenta de el tipo de pantalla que se trata, (4,16 ó 256 colores y alta o baja resolución). El MSX2 tiene una especie de Blitter como el de Amiga, para su emulación uso el blitter de Amiga, pero no es tan fácil como parece. Los modos de caracteres al Amiga le cuesta mucho más emularlos porque este lo hace a gráfico. De todos modos he investigado mucho y probado muchas técnicas hasta encontrar la más rápida.

El MSX tiene Sprites y los emulo usando los de Amiga, pero las coordenadas las he de inicializar mediante el copper-list para conseguir sacar hasta 32 sprites por pantalla. La emulación de sonido la hizo Sergi Martínez y posteriormente yo la retoqué y optimicé pero el diseño es totalmente suyo. Aún no está terminada pero casi todo suena perfecto. La verdad es que es muy fácil de emular ya que sólo hay que hacer una regla de tres de la frecuencia de MSX con la de Amiga. Para el canal de ruido, uso el cuarto canal de Amiga con un sample de ruido digitalizado de un MSX2 real.

AI: ¿Cómo has emulado la disquetera?

El MSX usa el mismo formato y sistema de ficheros que PC, con lo que lo he tenido muy fácil, ya que uso el CrossDos (mfm.device) para su emulación. Lo difícil fue saber cómo lo hacía el MSX para acceder al disco. Por suerte Albert Siersema me facilitó esta información que en realidad se trata de parchear las rutinas de la ROM de disco del MSX para llamar a una rutina de Amiga que la emule. Realmente muy fácil cuando se tiene la información.

AI: ¿Todo el código lo has programado tú, o has utilizado código de otra gente?

Todo está programado por mi, menos la emulación del PSG que es de Sergi Martínez. A parte de esto he recibido información técnica de periféricos del MSX de otras personas como Toni Pomar, Albert Siersema y Nestor Soriano.

AI: ¿Sería posible hacer una versión que no requiriera un 68020?

No se puede hacer, la única forma es re-diseñar la emulación del Z-80A para un MC68000, y esto sería empezar de cero, además para que funcione a una velocidad decente se necesitaría un MC68000 a 28Mhz y para esto ya está el MC68020.

AI: ¿Se pueden aprovechar los disquetes originales de software de MSX?

¡Pues claro! ¡justamente ese era mi objetivo, hacer un emulador donde puedas poner lo que quieras de MSX en tu Amiga!

AI: ¿Por qué no es multitarea?

No es multitarea por muchos motivos. El principal es que todo lo que yo sé de Amiga es a nivel Hardware, sobre librerías sé muy poco, además al ser multitarea se perdería muchísima velocidad y aunque tengamos un equipo potente seguramente el emulador funcionaría a "trompicones" debido a las tareas del Workbench.

AI: ¿La versión publicada esta optimizada?

Todas las versiones están optimizadas y de una forma increíble.

AI: ¿Qué características le faltan por implementar?

Se podrían implementar cientos de características, pero yo solo tengo pensado hacer que se pueda congelar el MSX para continuar otro día en ese momento, y que se pueda leer los ficheros de cualquier device de Amiga, pero esto último lo veo bastante difícil a no ser que queramos formatear nuestro disco duro con el ¡CrossDos!

AI: ¿Es lo mismo programar un emulador que otro programa distinto?

Es totalmente distinto, cuando haces una utilidad puedes probar que todo funcione correctamente, mientras que un emulador nunca puedes probarlo todo, yo he jugado a muchísimos juegos y funcionan a la perfección, pero unos pocos fallan y sé que son bugs pero encontrar estos bugs es realmente muy difícil.

NOTA ENCANTA: A petición del autor original, Alberto Orante, esta artículo ha sido completado con parte que no pudo aparecer en la edición impresa y en su lugar. Este artículo quedó cortado por un problema con el fotolito original y fechas de entrega para presentar la revista impresa. Gracias a los avances del diseño web, ahora podéis leer el artículo completo y en el mismo número, sin tener que saltar de una a otra página. En la sección:: Amiga.InFo nº4: Fe de Errata, solo queda una nota similar, a modo recordatorio, en la que contenía parte de éste artículo.


Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal