BrMSX
the Brazilian MSX Emulator
by Ricardo Bittencourt

"Empieza por el principio", dijo
el Rey, "y continúa hasta que
llegues al final: entonces para."

(Lewis Carroll)
BrMSX es un emulador de MSX 1 para DOS.

En estos días, cualquier chaval sabe lo que es un emulador. Saber lo que es un MSX, es otra historia.

El MSX es el mejor ordenador de 8 bits jamás creado. La primera versión usa un Z80 a 3.57 Mhz, y ofrece paralelismo real, con tres procesadores secundarios. El Texas TMS9928 es el chip de vídeo y quien genera las interrupciones. El GI AY-3-8910A controla el sonido y los joysticks. El Intel 8255 controla el hardware restante, como el cassette, la memoria y el teclado.

El MSX se construyó en un montón de países. Tuvo éxito en Brasil, Japón, España, Holanda, Francia, Italia, y la lista continuaría. Todavía hoy, muchos usuarios piensan que el MSX es mejor que un PC corriente. Y yo soy uno de ellos.

El MSX tiene mucho carisma. Fue el ordenador más poderoso de su época, influenciando a una generación de futuros ingenieros e informáticos. Con el MSX, casi todo el mundo era programador. Era tan fácil, que todo el mundo podía desarrollar software para él. Esto es algo que el PC nunca podrá conseguir.

Y por supuesto, también están los juegos! El MSX tiene montones de buenos juegos, producidos por Konami, Compile, Namco, Falcom, montones de conversiones de recreativa, juegos que nunca podrás olvidar!

Desafortunadamente, el MSX ya no se construye. Los antiguos usuarios todavía tienen sus máquinas, pero las nuevas generaciones, nunca podrán disfrutar la diversión del MSX.

Hasta ahora. Hasta BrMSX.

Con BrMSX puedes usar tu PC para sentir una muestra de la grandeza del MSX. Puedes jugar a juegos MSX, puedes programar con su BASIC, puedes usar su debugger para aprender ensamblador. Te puedes unir a la comunidad MSX.

Pero antes de que te sumerjas en la experiencia inolvidable del MSX, es mejor que aprendas más sobre este emulador. Lee este manual desde el principio hasta el final: entonces para y arranca BrMSX.

Estoy intentando hacer el emulador tan preciso y tan rápido como me sea posible. Si encuentras algun error, o si quieres hacer cualquier comentario, mándame un e-mail. Mi dirección es ricardo@lsi.usp.br. También puedes querer visitar la página oficial de tanto en tanto, ya que nuevas versiones salen frecuentemente. La dirección es http://www.lsi.usp.br/~ricardo/brmsx.htm

Por supuesto, el MSX te puede generar tanta addicción, que puedes querer llegar a comprar un MSX real. Todavía hay grupos de usuarios que te pueden vender uno de segunda mano. En la página de BrMSX encontrarás las home-pages de muchos grupos brasileños activos.

Que te diviertas!

Versión actual: 1.160


Requerimientos

BrMSX necesita un 386 o superior, ya que está escrito 100% en ensamblador de 32 bits. La máquina más lenta a la que tengo acceso es un 486sx25, y BrMsX funciona a pleno rendimiento dibujando todos los frames en ella. Algunos juegos funcionan a pleno rendimiento incluso en un 386dx40.

BrMSX necesita 2Mb de RAM, 4Mb si quieres usar la emulación de disco.

BrMSX se puede adaptar a los procesadores Pentium y MMX para aprovechar sus características especiales.

Una VGA con 256kb de VRAM es necesaria. Para usar la emulación TV, necesitarás una SuperVGA con un driver VESA 2.0.

La emulación del sonido necesita una Sound Blaster con DMA auto-inicializada a 45455 Hz o tarjeta 100% compatible. Si no tienes una Sound Blaster, puedes activar el sonido a través del Altavoz interno del PC.

Los juegos multiplayer necesitan dos ordenadores equipados con UARTs que soporten 57600 baudios.

BrMSX está diseñado para ser ejecutado bajo DOS 6.22. También funciona bajo Windows 3.11 y Windows 95, pero no funcionará bajo Windows NT. Algunas opciones no se pueden usar bajo Windows.


Características

BrMSX intenta parecerse al Expert 1.0 brasileño. Tiene montones de características interesantes:

  • Emulación del Z80 muy precisa. BrMSX es el único emulador que pasa todos los tests ZEXALL de compatibilidad Z80. BrMSX emula todos los opcodes indocumentados así como todos los flags indocumentados. BrMSX también emula características indocumentadas del VDP y del PSG.

  • Emulación de disco port-based. BrMSX es el único emulador que puede ejecutar software brasileño como Super Disk Copy y Chave Mestra.

  • Emulación del extensor de memoria brasileño MegaRAM, BrMSX es el único emulador de MSX que puede ejecutar perfectamente ExecROM.

  • Emulación de sonido wave-based, BrMSX es el único emulador de MSX que puede reproducir samples PCM en juegos como Super Laydock, Fuzzball y Oh Shit!

  • Emulación de los LEDs. BrMSX es el único emulador de MSX que maneja correctamente el LED de las mayúsculas en el teclado.

  • Emulación TV y Monitor de fósforo verde. BrMSX es el único emulador que maneja resoluciones VESA 2.0 con scanlines y filtros pasa-bajas.

  • Juegos multiplayer. BrMSX es el único emulador de MSX que soporta dos jugadores a la vez en ordenadores diferentes.

  • Emulación rápida. BrMSX es el emulador de MSX más rápido que existe.

  • Un excelente debugger con ejecución paso a paso y posibilidades para leer toda la información del hardware.

  • Muchas otras características interesantes como GUI, posibilidad de grabar y cargar el estado del MSX en cualquier momento, soporte para roms coreanas, y todavía más cosas!


    Opciones de la línea de comando

    BrMSX puede ser invocado desde la línea de comando de MS-DOS usando la siguiente sintaxis:

    brmsx [CartA.ROM] [CartB.ROM] [opciones]
    
    Todo es opcional, excepto la palabra brmsx al principio. Si no se le pasan parámetros, BrMSX arrancará la emulación típica de la BIOS y el BASIC.

    Los cartuchos pueden ser simples ROMs de 16kb, que empiecen en las direcciones 0000h, 4000h, 8000h, Cartuchos BASIC de 16kb que empiecen en la dirección 8000h, cartuchos de 32kb que empiecen en la dirección 4000h, o cartuchos MegaROM (con soporte para ocho mapeadores diferentes).

    Si no le pasas ningún cartucho en la línea de comando, un MegaRAM con 256kb sera introducido automáticamente en el slot 1. La cantidad normal de memoria RAM de BrMSX son 128kb vía Memory Mapper.

    Puedes seleccionar dos cartuchos a la vez. Esto es útil para programas residentes, como Mega-Assembler, y también para combinaciones de cartuchos. Para más información, lee la sección sobre combinaciones de cartuchos.

    Hay un montón de opciones en la línea de comando. Todas ellas empiezan con un "-" y tienen que ponerse en minúsculas. Algunas necesitan un parámetro, que tiene que ser puesto justo después de la opción, separado por un espacio.

    Las opciones soportadas serán presentadas en bloques funcionales:

    Opciones de la CPU

    -normal Esta opción selecciona la velocidad normal de un MSX Expert. El Z80 corre a 3.57 Mhz y las interrupciones llegan a 60 Hz. Esta opción es la que funciona por defecto.
    -fast En este modo, las interrupciones todavía llegan a 60 Hz, pero el Z80 corre tan rápido como permita tu ordenador. En mi AMD-K6 233Mhz, esto significa que el Z80 corre a 65 MHz (mucho más rápido que un Turbo-R). Este modo es útil para compilar con el MSX y para acelerar el BASIC. El sonido está desconectado en este modo.
    -turbo En este modo, todo corre a toda velocidad. De todas maneras, la proporción de opcodes emulados por cada interrupción "virtual" es igual al de la velocidad normal de un MSX. Este modo es útil para pasar de las intros de los juegos y, por supuesto, para ver la velocidad que puede ofrecer BrMSX.
    -ifreq <n> Con esta opción puedes cambiar la frecuencia de las interrupciones El valor por defecto es de 60 (NTSC/PAL-M). Los usuarios europeos deben poner "-ifreq 50". Esta opción puede ser usada también para controlar la velocidad de los juegos.

    Opciones de memoria

    -roma <mapper> Esta opción selecciona el tipo de MegaROM Mapper usado por el cartucho metido en el slot A. Los MegaROM Mappers soportados son los de tipo #0, #2, #3, #4 ,#5 ,#6, #7 y #8, BrMSX intentará autodetectar el tipo de MegaROM si no especificas esta opción. Más información sobre esto en la sección MegaROM Mappers. Si un juego tiene SRAM para guardar partidas, entonces esta memoria será grabada en disco con la extensión ".SRM".
    -romb <mapper> Esta opción es exactamente igual que la anterior, pero para el slot B.
    -ramslot <slot> Esta opción selecciona en que slot aparecerá la RAM. Slots válidos son el 2 y el 3. El Expert original tiene la RAM en el slot 2, por lo que éste es el valor por defecto. Es necesario cambiar la RAM al slot 3 en dos casos: primero, si quieres emular perfectamente el HotBit, segundo, si tienes juegos con un cargador mal construído, y necesitan la RAM en el slot 3. Para saber más sobre esto, léelo en la sección sobre solución de problemas.
    -korean Usa esta opción para activar el modo de memoria necesario para MSX coreanos. Necesitarás un juegos de ROMs coreanas: Una MSX.ROM coreana y una MSXHAN.ROM coreana. Esta última ROM será cargada en la página 2 (8000h) del slot 0.
    -megaram <n> Esta opción selecciona el tamaño del MegaRAM. Los valores válidos son 0=128kb, 1=256kb, 2=512kb, 3=1Mb y 4=2Mb. El valor por defecto es de 256kb.
    -mapper <n> Esta opción selecciona el tamaño del Memory Mapper. Los valores válidos son 0=64kb, 1=128kb, 2=256kb, 3=512kb, 4=1Mb, 5=2Mb y 6=4Mb. El valor por defecto es de 128kb.

    Opciones de vídeo

    -res <n> Esta opción selecciona la resolución usada por BrMSX. Los valores permitidos son 0 (320x200), 1 (256x200), 2 (512x384), 3 (256x192) and 6 (512x384x15). La resolución 0 es la que se selecciona por defecto, porque funciona en cualquier VGA. La resolución 1 usa un modo VGA modificado para conseguir que la pantalla sea más ancha, pero puede que no funcione en todos los monitores. La resolución 2 necesita una SuperVGA con un driver VESA 2.0, y así podrás disfrutar de la impresionante emulación TV, con scanlines y filtro pasa-bajas. La resolución 3 también usa un modo VGA modificado, pero es más compatible que la resolución 1 y tiene los pixels cuadrados. La resolución 6 es el video engine "Parrot", que usa un modo gráfico de 15 bits de color y dos filtros digitales para reducir el aspecto cuadrado de los pixels de los juegos MSX.
    -vsync Esta opción activa la sincronización con la retraza vertical. Esto puede hacer que la emulación sea más lenta, pero algunos juegos lo necesitan para mostrar un scroll más suave (como Rally-X), o para conseguir cambios de paleta suaves (como Penguin Adventure).
    -green Usa esto para activar la emulación del monitor de fósforo verde. Todo se verá verdoso. Usado en combinación con la emulación TV, se consigue una emulación perfecta del monitor original de Gradiente.
    -frame <n> Esta opción ajusta el número de frames no mostrados. El valor por defecto de 1, significa que todos los frames son mostrados. Si BrMSX es lento para ti, puedes incrementar este número, pero con el valor por defecto ya se consigue pleno rendimiento en un 486sx25 (e incluso en 386dx rápidos!!)
    -allspr Esta opción desactiva la ocultación del quinto sprite. Esto es útil para reducir el parpadeo en juegos como Zanac y Nemesis, pero producirá errores gráficos en juegos como Antarctic Adventure y Parodius.
    -nosprcol Esta opción desactiva la detección de la colsión de sprites. Esto es útil para que algunos juegos sean más fáciles (como Abu Simbel's Profanation) y puede acelerar la velocidad de la emulación en ordenadores lentos.
    -vdptiming Activa el timing correcto para el VDP. Cuando esta opción esta activa, los accesos al VDP deben esperar al menos 50 ciclos de reloj para que tengan éxito. Esta opción es útil para aquellos programadores que quieran asegurarse de que sus programas funcionarán en un MSX real.
    -nocache Esta opción desactiva la cache de vídeo. Esto hará la emulación mucho más lenta, pero puede ser usada en caso de fallo de la cache de vídeo. Lee la sección dedicada a resolver problemas para más detalles.
    -cpugraph Esta opción activa el gráfico del consumo de CPU, una indicación de cuanto tiempo gasta tu ordenador en cada paso de la emulación. La primera barra es el tiempo gastado en la emulación del Z80. La segunda es el tiempo gastado en dibujar los fondos, y la tercera, los sprites. La cuarta barra mide el tiempo gastado en copiar los datos desde la RAM de tu ordenador hasta la RAM de la tarjeta gráfica. La quinta barra es lo que gasta este mismo gráfico. Usa esta opción para ajustar el emulador a tus preferencias. Esta opción solo funcionará en CPU's con la instrucción RDTSC, es decir, Pentium o superiores.
    -psggraph Esta opción activa el gráfico del PSG, que es bastante interesante y que muestra las amplitudes para cada canal de sonido. Se verán tres barras para el PSG y cinco más si el SCC está activado.

    Opciones de Sonido

    -nosound Desactiva el sonido. Útil si la detección de la Sound Blaster cuelga tu ordenador o por si juegas al Nemesis en la oficina.
    -scc Activa la emulación del SCC. Por defecto, no está activado, porque la emulación del SCC todavía no es perfecta. Sólo funciona con los Mappers #0 y #2.
    -sr <n> Cambia la frecuencia de muestreo del sonido. El valor por defecto es de 45455 (calidad CD), aunque puedas necesitar disminuir este valor en máquinas lentas, o si tu tarjeta de sonido no es 100% compatible con una Sound Blaster.
    -fmpac Activa la emulación del FM-PAC (YM2413). La emulación del FM-PAC es bastante limitada de momento, y la calidad de sonido es bastante pobre. Para activar correctamente el FM-PAC se necesita el FMPAC.ROM original (64kb) como cartucho 1.
    -speaker Activa el sonido a través del altavoz interno del PC. El altavoz puede reproducir los 3 canales de tono del PSG al mismo tiempo, usando un algoritmo especial de multiplexación temporal.
    -speaq <n> Cambia la calidad de sonido por el PC Speaker. Este valor controla la velocidad con la que los canales son multiplexados. El valor por defecto es de 1 y seguramente no querrás aumentarlo mucho, ya que la calidad empieza a bajar a partir de cierto punto. A mi me gusta "-speaq 2", pero puedes probar otros valores. El rango es de 1 a 9.

    Opciones de I/O

    -diska <f.dsk> Activa la emulación de la disketera y selecciona el fichero f.dsk como la imagen de disco. Las imágenes de disco tienen que estar en formato .DSK, y pueden ser de cuatro tipos diferentes: 40 pistas / 1 cara (180kb), 40 pistas / 2 caras (360 kb), 80 pistas / 1 cara (360 kb) y el típico 80 pistas / 2 caras (720 kb). Imágenes multi-disco creadas con COPY /B todavía no son soportadas.
    -disklow La emulación de disco se hará a traves de los puertos I/O D0h-D4h. Esta opción está activa por defecto, y solo funciona con DISK.ROMs brasileñas port-based. Muchos programas brasileños necesitan esta opción, como Super Disk Copy, Hello, Chave Mestra y la versión en disco de Robocop.
    -diskhigh La emulación de disco se hará a traves de los patches del BDOS. Esta opción funciona con la mayoría de DISK.ROMs, pero es más restrictiva que la anterior, porque solo se pueden usar .DSK's de 720kb, y el LED de la disketera no será emulado.
    -mount <dir> Monta un directorio como la disketera
    A:
    del MSX. Con esta opción, no necesitas crear un fichero imagen de disco .DSK para jugar a juegos en formato .BIN. Mira en la sección de "Solución de Problemas" para más detalles.
    -tape <t.cas> Activa la emulación de cinta a traves de los patches de la BIOS, y selecciona el fichero t.cas como la imagen de cinta. La emulación de cinta está restringida en esta versión, porque la imagen de cinta no puede ocupar más de 64kb.
    -joy Activa la emulación de joystick. El joystick será conectado en el puerto A (en la mayoría de los casos, esto significa como player 1). Si quieres cambiar al port B, vete al debugger y aprende cómo hacerlo. El joystick se calibra automaticamente al arrancar BrMSX, así que no lo toques hasta que el emulador no arranque.
    -joysens <n> Ajusta la sensibilidad del joystick. Valores válidos van de 0 a 7, y el valor por defecto es 3. Los usuarios de joypads deberían probar esta opción para conseguir más precisión.
    -fakejoy Mapea el joystick A a través del teclado, con esta opción puedes jugar a juegos que necesitan joystick obligatoriamente (como Gauntlet) con el teclado. El mapeo para este modo es: Cursores= 4 Direcciones, Control Izq.= Botón 1, Alt Izquierdo= Botón 2.
    -autofire Esta opción activa el disparador automático (La barra espaciadora se pulsará automáticamente). Esto es genial para juegos de naves como Gall Force.
    -autorun Esta opción es similar a la de arriba, pero para los cursores izquierdo y derecho. Úsala en juegos como Decathlon o Hyper Sports. Aprieta las teclas izquierda y derecha a la vez para correr.
    -autospeed <n> Ajusta la velocidad para "-autofire" y "-autorun". El rango es desde 0 (más rápido) a 9 (más lento). El valor por defecto es 5.
    -snespad Activa un pad de SNES conectado al puerto LPT1 y lo hace funcionar como si fuera el joystick en el port A. Para aprender a construír un interface para el pad de la SNES, miralo en la página oficial de BrMSX.

    Opciones para Multiplayer

    -server Selecciona el ordenador como servidor. Sólo el monitor conectado al servidor mostrará la pantalla del MSX. Siempre usa el ordenador más rápido como servidor.
    -client Selecciona el ordenador como cliente. El teclado de este ordenador actuará como el joystick B del MSX. La velocidad de este ordenador no importa, puedes usar un 386 lento como cliente de BrMSX.
    -com <port> Selecciona el puerto serie COM en el que conectarás el cable serie. Esta opción es necesaria en ambos ordenadores. Puedes leer más sobre juegos multiplayer en la sección Multiplayer.

    Opciones de control

    -nommx Deshabilita las optimizaciones MMX. Usa este parámetro si BrMSX detecta una CPU MMX cuando realmente no la tienes.
    -nomouse Deshabilita la detección del driver de ratón. Úsala en caso de conflictos con el driver del ratón. Sin driver de ratón el GUI no funciona.
    -novesa Desactiva la autodetección del driver VESA. Úsala solo en caso de tener conflictos con el driver de tu tarjeta gráfica. Sin VESA 2.0, no podrás usar la emulación TV.
    -noled Desactiva la emulación de los LEDs. Úsala solo si tu teclado parece que no detecta bien algunas veces las teclas.
    -nopentium Desactiva las extensiones Pentium y la autodetección de la CPU. Úsala solo si la autodetección falla y provoca que se cuelgue tu ordenador. Si no tienes un Pentium no podrás ver el gráfico de la CPU gastada.
    -noenter No habrá que pulsar enter al arrancar. Útil para los autores de front-ends.
    -help Muestra una pequeña pantalla de ayuda.


    Dentro del emulador

    El MSX tiene algunas teclas que no existen en el PC. El mapeo de ellas se describe en la siguiente tabla:

    Tecla en el MSX
    Tecla en el PC
    LGRA (GRAPH) Left ALT
    RGRA (CODE/KANA) Right ALT
    STOP Page Up
    SELECT Page Down
    HOME/CLS Home
    '`^~ `~
    Ç End

    Los LEDs del telcado también son emulados:

    LED del MSX
    LED del PC
    Caps Lock Caps Lock
    Kana Num Lock
    Disketera ocupada Scroll Lock

    Algunas teclas tienen un significado especial:

    F6 Rebobina la cinta
    F9 Graba un screenshot en el fichero BRMSX.PCX
    F10 Para la emulación y entra en el debugger
    F12 Para la emulación y entra en el GUI
    NumLock Tecla para avance rapido, activando el modo TURBO cuando la pulses
    + (keypad) Sube el volumen
    - (keypad) Baja el volumen

    El GUI también puede ser llamado con el botón izquierdo del ratón.


    Interfaz Gráfica de Usuario

    El GUI es muy fácil de usar (después de todo, esa es la intención!)

    El menú se muestra en la parte izquierda de la pantalla, y tienes que usar el ratón con el botón izquierdo para elegir las opciones. Toca en cualquier sitio fuera de la ventana para volver a activar la emulación.

    Las opciones del GUI son:

    Reset Resetea el MSX. Este reset es un soft-reset, ya que el contenido de la RAM y la VRAM queda intacto.
    Turn OFF Apaga el ordenador. Esto es como un reset, pero borra toda la RAM y la VRAM. Tienes que tocar en Turn ON para volver al emulador.
    Load ROM Esta opción carga una nueva ROM en el slot A. Las ROMs tienen que estar en el mismo directorio que BrMSX.
    CPU Graph Esta opción enciende y apaga el gráfico de la CPU.
    PSG Graph Esta opción enciende y apaga las barras de volumen del PSG.
    Save state Esta opción graba el estado del MSX en un fichero llamado BRMSX.STA. Esto es genial para acabarse los juegos!
    Load state Esta opción carga un estado previamente grabado.
    Quit Esta opción sale de BrMSX y vuelve al DOS.


    Debugger

    Si presionas ESC al principio, o F10 dentro de la emulación, entrarás en el Fudebug (Full Debugger). No explicaré las muchas cosas que aparecen en la pantalla. Si no entiendes nada de lo que aparece, entonces el debugger no es para ti.

    El Fudebug es una herramienta muy poderosa para ayudar al programador MSX. Los comandos siempre tienen una letra, y algunos de ellos pueden recibir argumentos. Ten cuidado cuando pases argumentos, porque no hay backspace. Los valores introducidos tienen que ser siempre en hexadecimal.

    Los comandos soportados son:

    S Salir del debugger y seguir con la emulación
    Q Salir del debugger y salir al DOS.
    F7 Trazar una sola instrucción del Z80.
    F8 Trazar una instrucción del Z80 por encima. Usa este comando para saltar las instrucciones CALL y RST.
    U dddd Desensamblar desde la dirección dddd.
    D dddd Volcar la memoria desde la dirección dddd.
    Page Up Mover la región del volcado de memoria hacia arriba.
    Page Down Mover la región del volcado de memoria hacia abajo.
    Cursor Arriba Mueve la ventana del desensamblador un byte hacia arriba.
    Cursor Abajo Mueve la ventana del desensamblador un opcode hacia abajo.
    E dddd xx Edita el byte que está en la dirección dddd, machacandolo con el valor xx.
    R rr dddd Edita el valor del par de registros rr. "rr" puede ser AF, BC, DE, HL, PC, SP, IX, IY, AX(=AF'), BX(=BC'), DX(=DE') y HX(=HL').
    B dddd Sigue con la emulación pero habiendo puesto un breakpoint en la dirección dddd.
    F2 Graba el estado del MSX al fichero BRMSX.STA
    F3 Carga el estado del MSX del fichero BRMSX.STA
    1 Selecciona la pantalla 1 del debugger.
    2 Selecciona la pantalla 2 del debugger.
    0 Para ver la pantalla del MSX.
    M Selecciona el modo de emulación (normal, fast, turbo)
    Y Enciende y apaga la VSync.
    V Varía entre las diferentes resoluciones (320x200, 256x200, 512x384, 256x192)
    J Cambia la emulación del joystick entre el Port-A, Port-B y ninguno.
    C Calibra el joystick de nuevo.
    F1 Muestra la pantalla de ayuda.


    Multiplayer

    Con BrMSX, puedes conectar dos ordenadores para jugar juegos multiplayer, usando un cable serie. El primer ordenador controla el teclado del MSX (jugador 1), y el teclado del segundo ordenador hace de joystick B del MSX (jugador 2).

    Las teclas para el segundo jugador son:

    Tecla del jugador 2 Significado
    Derecha JOY-B Derecha
    Izquierda JOY-B Izquierda
    Arriba JOY-B Arriba
    Abajo JOY-B Abajo
    Barra Espaciadora JOY-B Botón 1
    M JOY-B Botón 2

    Para empezar una sesión multiplayer, tienes que escribir esto en el ordenador más rápido "brmsx -server -com 2", cambiando si fuera necesario el "2" por el número de tu puerto COM.

    Después de arrancar BrMSX en el servidor, escribe esto otro en el cliente "brmsx -client -com 1", de nuevo, asegúrate de poner el puerto COM correspondiente. Esto empezará la emulación en el modo multiplayer. Sólo el monitor del servidor mostrará la pantalla del MSX.

    Para salir de la sesión multiplayer, sal del emulador en el cliente primero!! Si no lo haces así se colgarán los dos ordenadores.

    Algunos juegos con opción para jugar 2 jugadores son: Konami's Soccer, Salamander, Konami's Ping Pong, Super Laydock, Yie Ar Kung Fu 2, Warroid, y muchos más que ahora no recuerdo.


    Combinaciones de cartuchos

    BrMSX soporta dos cartuchos a la vez. Esto es útil para programadores (puedes cargar Mega-Assembler y XBasic al mismo tiempo), pero también es útil en algunos juegos.

    Muchos cartuchos esconden opciones secretas cuando se insertan al mismo tiempo con otros cartuchos. Algunos ejemplos son:

  • Nemesis en el slot A y Twin Bee en el slot B: la nave se transformará en un Twin-Bee.

  • Nemesis 2 en el slot A y Penguin Adventure en el slot B: la nave se convertirá en un pinguino azul.

  • Nemesis 2 en el slot A y Q-Bert en el slot B: podrás pulsar "F1" y escribir los códigos secretos LARS18TH y METALION.

  • Salamander en el slot A y Nemesis 2 en el slot B: aparecerá una pantalla secreta después de los tres planetas, y así podrás derrotar a Venom y ver el final bueno.


    MegaROM Mappers

    BrMSX soporta casi todos los MegaROM Mappers usados en los juegos MSX 1. Si BrMSX encuentra un juego en su base de datos interna, entonces se usará el autodetector. Sino, se usará el MegaROM Mapper #0.

    Los mapeadores soportados son:

  • #0: MegaROM Genérico con SCC

    Juegos: Animal Land, Super Laydock, Jagur, Vaxol, Mirai, Donkey Kong, Digital Devil Story, The Fairy Land Story, Final Zone, 3 Kingdoms, 1942.

    Dirección Bloque
    0000h-1FFFh 0000h-1FFFh
    2000h-3FFFh 2000h-3FFFh
    4000h-5FFFh 4000h-5FFFh
    6000h-7FFFh 6000h-7FFFh
    8000h-9FFFh 8000h-9FFFh
    A000h-BFFFh A000h-BFFFh
    C000h-DFFFh C000h-DFFFh
    E000h-FFFFh E000h-FFFFh
    9800h-9FFFh SCC

  • #2: Konami con SCC

    Juegos: Nemesis 2, Nemesis 3, Salamander, King's Valley II, F1 Spirit, Parodius.

    Dirección Bloque
    5000h-57FFh 4000h-5FFFh
    7000h-77FFh 6000h-7FFFh
    9000h-97FFh 8000h-9FFFh
    B000h-B7FFh A000h-BFFFh
    9800h-9FFFh SCC

  • #3: Konami sin SCC

    Juegos: Nemesis, The Maze of Galious, Shalom, Penguin Adventure.

    Dirección Bloque
    <ninguna> 4000h-5FFFh
    6000h 6000h-7FFFh
    8000h 8000h-9FFFh
    A000h A000h-BFFFh

  • #4: ASCII 8kb

    Juegos: Valis - The Fantasm Soldier, Hydlide 3, Fantasy Zone, Dragon Slayer 4.

    Dirección Bloque
    6000h-67FFh 4000h-5FFFh
    6800h-6FFFh 6000h-7FFFh
    7000h-77FFh 8000h-9FFFh
    7800h-7FFFh A000h-BFFFh

  • #5: ASCII 16kb

    Juegos: Gall Force, Eggerland Mystery 2, Golvellius.

    Dirección Bloque
    6000h-6FFFh 4000h-7FFFh
    7000h-7FFFh 8000h-BFFFh

  • #6: ASCII 8kb con 8kb SRAM

    Juegos: Xanadu.

    Dirección Bloque
    6000h-67FFh 4000h-5FFFh
    6800h-6FFFh 6000h-7FFFh
    7000h-77FFh 8000h-9FFFh
    7800h-7FFFh A000h-BFFFh
    Numero de bloque=20h SRAM

  • #7: ASCII 16kb con 2kb SRAM

    Juegos: Hydlide 2.

    Dirección Bloque
    6000h-6FFFh 4000h-7FFFh
    7000h-7FFFh 8000h-BFFFh
    Numero de bloque=10h SRAM

  • #8: FM-PAC Original de Panasonic con 8kb SRAM

    Juegos: FM-PAC original.

    Dirección Bloque
    7FF7h 4000h-7FFFh


    Memory layout

    brmsx
    MSX.ROM MegaRAM RAM  
    MSX.ROM MegaRAM RAM  
      MegaRAM RAM  
      MegaRAM RAM  

    brmsx cartA.rom cartB.rom
    MSX.ROM Cart A RAM Cart B
    MSX.ROM Cart A RAM Cart B
      Cart A RAM Cart B
      Cart A RAM Cart B

    brmsx -ramslot 3 cartA.rom cartB.rom
    MSX.ROM Cart A Cart B RAM
    MSX.ROM Cart A Cart B RAM
      Cart A Cart B RAM
      Cart A Cart B RAM

    brmsx -korean cartA.rom cartB.rom
    MSX.ROM Cart A RAM Cart B
    MSX.ROM Cart A RAM Cart B
    MSXHAN.ROM Cart A RAM Cart B
      Cart A RAM Cart B

    brmsx -diska msxdos.dsk cartA.rom
    MSX.ROM Cart A RAM  
    MSX.ROM Cart A RAM DISK.ROM
      Cart A RAM  
      Cart A RAM  


    Solución de problemas

    Respuestas a preguntas frecuentes:

    P: ¿Cómo hago funcionar los juegos en formato .ROM?
    R: Copia el fichero .ROM al mismo directorio de BrMSX y usa el GUI del emulador. También puedes escribir "brmsx game.rom" si el DOS no te asusta.

    P: ¿Cómo hago funcionar los juegos en formato .DSK?
    R: Simplemente escribe "brmsx -diska game.dsk". A partir de ese momento, BrMSX actuará como un MSX real con unidad de disco.

    P: ¿Cómo hago funcionar los juegos en formato .BAS y .BIN?
    R: Puedes usar la opción "-mount". Funciona así:
    (1) Crea un directorio con "md c:\msxgames"
    (2) Copia tus juegos a este directorio con "copy game*.* c:\msxgames"
    (3) Arranca BrMSX con "brmsx -mount c:\msxgames"
    Después de crear el fichero .DSK, simplemente usa los comandos RUN"GAME.BAS" o BLOAD"GAME.BIN",R desde dentro del BASIC.

    P: Estoy intentando ejecutar el juego "Terramex" y no funciona!
    R: Esto no es un fallo de BrMSX, simplemente es que el cargador del propio juego no está bien programado. Intenta ejecutar el juego de nuevo, pero esta vez arranca BrMSX con la opción "-ramslot 3". Algunos juegos que necesitan esto son Terramex,Oh Shit y Camelot Warriors.

    P: "Gall Force", ese cartucho tan grande, no funciona!
    R: Si el juego ocupa más de 32kb, lo que pasa es que BrMSX no puede detectar correctamente el MegaROM Mapper para estos juegos. Intenta usar el parámetro "-roma" con todos los valores disponibles, hasta que encuentres uno con el que funcione.

    P: Quiero jugar a "Zanac" pero la nave parpadea! Seguro que es un error, ya que he probado la misma ROM en otro emulador y no parpadea.
    R: Este parpadeo también aparecerá en un MSX real, ya que es una característica del VDP llamada "Ocultación del quinto sprite". Algunos juegos la necesitan para mostrar los gráficos correctamente, como Parodius, Goonies y Antarctic Adventure. Puedes desactivar esta característica con el parametro "-allspr". Si el parpadeo no aparece en otros emuladores, entonces, o no emulan esta característica, o la tienen desactivada por defecto.

    P: No oigo ningún sonido!
    R: BrMSX solo soporta tarjetas de sonido Sound Blaster y 100% compatibles. Algunos modelos viejos, como la Sound Blaster Pro, no son soportados. BrMSX tampoco suena con la ESS audiodrive. Los usuarios de una Gravis Ultrasound deben usar el emulador de Sound Blaster MEGAEM. Simplemente dame tiempo suficiente y añadiré los drivers para todas estas tarjetas. Mientras tanto, puedes probar el sonido a través del altavoz interno del PC, o la versión de 22222Hz (brmsx22.exe).

    P: Por qué "Bubble Bobble" y "Metal Gear" no funcionan con BrMSX?
    R: Estos son juegos de MSX-2. BrMSX solo emula el MSX-1 de momento.

    P: Cuándo BrMSX emulará un MSX2?
    R: Simplemente cuando acabe la emulación del MSX1. No tiene sentido añadir la emulación del MSX2 si el MSX1 no está totalmente implementado! Hay muchas características todavía no implementadas en nigún emulador (principalmente las no documentadas), y para conseguir una emulación perfecta, tengo que añadir todas ellas.

    P: Dónde puedo encontrar el test ZEX? Hay alguna versión para 6502?
    R: ZEX (Z80 Exercicer) es un programa para probar la compatibilidad de un Z80. Lo puedes encontrar dentro de YAZE. YAZE son las siglas de Yet Another Z80 Emulator y se encuentra disponible en sitios que tratan sobre CP/M. La versión original de ZEX funciona bajo MSX-DOS, pero yo he hecho una versión .ROM antes de añadir soporte para disco. Si te interesa esta versión, mándame un mail. ZEX solo ha sido hecho para el Z80, y no se encuentra disponible para ningún otro procesador.

    P: Qué tengo que hacer para ejecutar "Metal Gear 2" con fMSX?
    R: Por favor, no me preguntes cosas sobre fMSX, CJS o sobre cualquier otro emulador de MSX. Gasto demasiado tiempo respondiendo e-mails, y este tiempo podría ser mejor aprovechado programando BrMSX. Si tienes problemas con cualquier otro emulador, contacta con Marcelo Eiras a través de su página http://www.geocities.com/~msxsite (portugués), o con TFH a través de la página http://www.casema.net/~tfh (inglés) .

    P: Puedo ser un beta-tester?
    R: De hecho, ya lo eres, ya que todas las versiones que he sacado son betas.


    Créditos

    Hay gente que cree que estoy haciendo BrMSX solo. Pero no es cierto. Realmente lo programo solo, pero BrMSX es mucho más que un simple programa. Mucha gente me ha ayudado contribuyendo con listados de ejemplo, data books, pruebas en MSX reales, informandome sobre errores o simplemente animandome.

    Primero de todo, quiero agradecer a Arnon Cardoso. Fue su idea empezar un emulador de MSX brasileño. Deberíais probar su gran emulador de MSX hecho en Java. Algún día el PC morirá como tal, y BrMSX no será útil entonces. Pero un emulador hecho en Java tiene el potencial para ser usado siempre.

    Muchas gracias a Sean Young. Él me dio muchas pistas en las primeras versiones de BrMSX (pero por supuesto la más importante de todas fue "a veces tienes que PARAR, y solo despues PENSAR" :). Las fuentes de Virtual MSX y sus páginas con información técnica fueron de gran ayuda.

    No puedo olvidar a Isaac Santaolalla Solórzano. A veces creo que pasa más tiempo probando mi emulador que el suyo propio! Es un tío que realmente se lo pasa bien con su MSX. Prueba su emulador MSKISS, tiene muchas características que todavía no están presentes en BrMSX, como soporte nativo para GUS y detector de MegaROM Mapper.

    Adriano Cunha ha sido una gran inspiración. Él ODIA los emuladores, y he tenido que hacer que BrMSX sea muy perfecto para que así él lo use. Después de todo, no ha sido imposible.

    Muchas gracias a mi hermano, Raul Tabajara. Él ha hecho todos los gráficos de BrMSX, desde el diseño del GUI hasta el logotipo. Actualmente está buscando trabajo como diseñador gráfico para juegos, puedes ver más trabajos suyos aqui: http://www.lsi.usp.br/~ricardo/raul.htm, y para contactar con él simplemente mándame un e-mail a mi, a ricardo@lsi.usp.br.

    Y por supuesto tengo que dar las gracias a Thomas Pytel. Sin su librería PMODE, yo nunca hubiera aprendido ensamblador en modo protegido, y BrMSX nunca hubiera sido tan rápido.

    Si quisiera dar las gracias a todo el mundo que me ha ayudado, este fichero sería demasiado grande para bajar. Pero no puedo acabar este manual sin mencionar la ayuda de Marco Antonio Simon Dal Poz, Enrique Sanchez, Alex Wulms, Hans Guijt, Eduardo Toledo Santos, KSH, Edison Pires, Insano Delavy, Marcellus Pereira, Marat Fayzullin, Marcel de Kogel, Ademir Carchano, Pierluigi Piazzi, Cyberknight, Walter Marujo, Werner & Weber Kai, Shawn Hargreaves, Mark Feldman, Giovanni Fudeba, Alex Sato, Zoop, Erik Dias, FRS'9X, Ricardo Juracy, Italo Valério, Daniel Caetano, Vanessa Sabino, Daniel Vicentini, Rogério Cobra Bello, Tiago Tresoldi, Miki Watanabe, Luciano Menezes, Marcelo Eiras, Saez Frank, Ulrich Doewich, Mudkicker, TFH, Omar Mosqueda, Leonard Silva de Oliveira, Jaime Magno Flaviano Galle, Neckfreak de Bandwagon, Peter Latimer, Alwin Henseler y toda la gente que me ha mandado e-mails informándome sobre errores y con comentarios. ¡Gracias a todos!

    Si quieres traducir este manual al japonés, coreano, holandés, italiano o cualquier otra lengua hablada por los muchos fans del MSX, por favor contacta conmigo.

    "¡No puedo creer ESO!", dijo
    Alicia. "¿No puedes?", dijo la Reina,
    en un tono compasivo. "¡A veces,
    yo he sido capaz de creer
    hasta SEIS cosas imposibles antes
    de desayunar!"

    (Lewis Carroll)


    Documento traducido al Castellano por Isaac Santaolalla Solórzano
    is05562@salleURL.edu, el 29 de Abril de 1999.