BrMSX
the Brazilian MSX Emulator
by Ricardo Bittencourt

"Comece pelo começo", disse
o Rei, "e continue até que
atinja o fim: então pare."

(Lewis Carroll)
BrMSX é um emulador de MSX 1 para DOS.

Hoje em dia, qualquer garoto sabe o que é um emulador. O que é um MSX, ah, isso é outra história.

MSX é o melhor computador de 8 bits já criado. A primeira versão usa um Zilog Z80 rodando a 3.57 MHz, e oferece paralelismo real, com três processadores secundários. O Texas TMS9928 controla o vídeo e gera as interrupções. O GI AY-3-8912A controla o som e os joysticks. O Intel 8255 controla o hardware restante, como a impressora, o gerenciador de memória, e o teclado.

O MSX foi produzido em muitos países. Ele foi um sucesso no Brasil, Japão, Espanha, Holanda, França, Itália, e a lista continua. Ainda hoje, muitos usuários acreditam que o MSX é melhor que um PC comum. E eu sou um deles.

O MSX tem muito carisma. Ele foi o computador mais poderoso de sua época, influenciando uma geração de futuros engenheiros e cientistas de computação. Com o MSX, quase todos eram programadores. Era tão fácil, qualquer um podia produzir software para ele. Isto é uma coisa que o PC jamais conseguirá.

E, é claro, existem os jogos! O MSX tem vários grandes jogos, produzidos pela Konami, Compile, Namco, Falcom, muitas conversões de arcade, jogos viciantes que voce nunca consegue esquecer!

Infelizmente, o MSX não é mais produzido. Os usuários antigos ainda possuem suas máquinas, mas novos usuários não podem desfrutar da alegria do MSX.

Até agora. Até o BrMSX.

Com o BrMSX você pode utilizar seu PC para sentir uma amostra da grandeza do MSX. Você pode brincar com seus jogos, você pode programar seu BASIC, você pode utilizar seu debugger para aprender assembly. Você pode juntar-se à comunidade MSX.

Mas, antes que você entre em uma inesquecível experiência com o MSX, é melhor que você aprenda mais sobre este emulador. Leia este manual do começo ao fim: só então pare e inicie o BrMSX.

Eu estou tentando fazer este emulador tão preciso e rápido quanto possível. Se você encontrar algum bug, ou se você quiser fazer algum comentário, mande um e-mail para mim. Meu endereço é ricardo@lsi.usp.br. Você pode querer checar a página oficial de tempos em tempos, já que versões novas são disponibilizadas muito freqüentemente. O endereço é http://www.lsi.usp.br/~ricardo/brmsx.htm

É claro, você pode ficar tão viciado em MSX que terá vontade de comprar uma máquina real. Existem grupos de usuários que poderão vender a você uma máquina usada. Na página do BrMSX você encontrará as páginas de vários grupos ativos de MSX.

Divirta-se!

Versão atual: 1.153


Requisitos

BrMSX requer um processador 386 ou superior, já que é escrito em 100% assembly de 32-bits. O computador mais lento que tenho acesso é um 486sx25, e o BrMSX roda com todos os frames neste. Alguns jogos rodam com velocidade total em um 386dx40.

BrMSX requer 2Mb de memória RAM, 4Mb se você quiser utilizar emulação de disco.

BrMSX pode se adaptar para processadores Pentium e processador MMX, de modo a tomar vantagem de suas características especiais.

Um VGA com 256kb de VRAM é necessário. Para habilitar a emulação de TV, você precisará de um Super VGA com um driver VESA 2.0.

A emulação de som requer uma Sound Blaster com DMA auto-inicializável em 45455 Hz, ou placa de som 100% compatível. Se você não tem uma Sound Blaster, poderá habilitar o som através do PC Speaker.

Jogos multiplayer requrem dois computadores equipados com UARTs capazes de 57600 bauds.

BrMSX foi desenvolvido para rodar sob DOS 6.22. Ele funcionará sob Windows 3.11 e Windows 95, mas não funcionará sob Windows NT. Algumas opções não funcionarão sob Windows.


Características

BrMSX foi modelado sobre o Expert 1.0 brasileiro. Ele possui várias características notáveis:

  • Emulação bastante precisa do Z80. BrMSX é o único emulador de MSX que passa em todos os testes ZEXALL de certificação Z80. BrMSX emula todos os opcodes não documentados, e também todos os flags não documentados. BrMSX emula as características não documentadas do VDP e do PSG.

  • Emulação do drive de portas. BrMSX é o único emulador de MSX que consegue rodar software brasileiro como o Super Disk Copy e o Chave Mestra.

  • Emulação da expansão de memória brasileira MegaRAM. BrMSX é o único emulador de MSX que consegue rodar completamente o ExecROM.

  • Emulação de som baseada em síntese digital de forma de ondas, BrMSX é o único emulador de MSX que consegue tocar samples PCM em jogos como Super Laydock, Fuzzball e Oh Shit!.

  • Emulação de LEDs, BrMSX é o único emulador de MSX que utiliza da maneira apropriada o LED do Caps Lock no teclado.

  • Emulação da TV e do monitor de fósforo verde, BrMSX é o único emulador de MSX que utiliza resoluções VESA 2 com scanlines e filtros passa-baixas.

  • Jogos multiplayer, BrMSX é o único emulador de MSX com suporte para dois jogadores ao mesmo tempo em computadores diferentes.

  • Emulação rápida, BrMSX é o emulador de MSX mais veloz dentre todos.

  • Um grande debugger com execução passo-a-passo e capacidade de ler toda a informação do hardware.

  • Muitas outras características notáveis como uma GUI, gravar e ler o estado da máquina a qualquer momento, suporte completo para ROMs coreanas, e mais!


    Opções da Linha de Comando

    BrMSX pode ser invocado da linha de comando MS-DOS utilizando a seguinte sintaxe:

    brmsx [CartA.ROM] [CartB.ROM] [opções]
    
    Tudo é opcional, exceto aquele brmsx no começo. Se nenhum parâmetro for passado, BrMSX começará uma emulação padrão da BIOS e do BASIC.

    Os cartuchos podem ser simples ROMs de 16kb, começando em 0000h, 4000h, 8000h, cartuchos BASIC de 16kb começando em 8000h, cartuchos de 32kb começando em 4000h, ou cartuchos MegaROM (oito gerenciadores são suportados).

    Se você não passar nenhum cartucho na linha de comando, uma MegaRAM com 256kb será inserida no slot 1. A RAM normal do BrMSX é uma Memory Mapper com 128kb.

    Você pode selecionar dois cartuchos ao mesmo tempo. Isto é útil para programas residentes como o Mega-Assembler, e também para combinações de cartuchos. Mais sobre isso na seção Combinações de Cartuchos.

    Existem muitas opções da linha de comando. Todas começam com um "-" e precisam ser utilizadas em minúsculas. Algumas requerem um parâmetro, que precisa ser colocado logo após a opção, separada por um espaço.

    As opções suportadas serão apresentadas em blocos funcionais:

    Opções da CPU

    -normal Esta opção seleciona a velocidade normal de um MSX Expert. O Z80 roda em uma velocidade de 3.57 MHz e interrupções chegam a 60 Hz. Esta opção é habilitada por default.
    -fast Neste modo, as interrupções ainda chegam a 60 Hz, mas o Z80 roda tão rápido quanto seu computador conseguir emular. No meu AMD-K6 233MHz, isto significa que o Z80 roda a uma velocidade de 65 MHz (beem mais rápido que um Turbo-R). Este modo é útil para fazer compilações no MSX e acelerar o BASIC. O som é desabilitado neste modo.
    -turbo Neste modo, tudo roda na velocidade máxima. Entretanto, a proporção de opcodes emulados por interrupção virtual é igual à de um MSX em velocidade normal. Este modo é útil para pular introduções de jogos e, é claro, para mostrar o quão rápido BrMSX é.
    -ifreq <n> Você pode mudar a frequência das interrupçõoes com esta opção. O valor default é 60 (NTSC/PAL-M). Usuários europeus devem tentar "-ifreq 50". Esta opção pode ser usada para controlar a velocidade dos jogos.

    Opções de Memória

    -roma <mapper> Esta opção seleciona eo tipo de gerenciador de MegaROM utilizado pelo cartucho inserido no slot A. Tipos suportados de gerenciadores de MegaROM são #0, #2, #3, #4, #5, #6, #7 e #8, o BrMSX sempre tentará autodetectar o tipo de gerenciador se você não utilizar esta opção. Leia mais sobre isso na seção Gerenciadores de MegaROM. Se o jogo tiver uma SRAM com bateria, então esta memória será salva no disco com a extensão ".SRM".
    -romb <mapper> Esta opção é como a anterior, porém seleciona o gerenciador para o slot B.
    -ramslot <slot> Esta opção seleciona o slot da RAM. Slots válidos são 2 e 3. O Expert original tem RAM no slot 2, logo este é o valor default. Você precisa mudar o slot da RAM para 3 em dois casos: primeiro, se você quiser emular fielmente um Hotbit, segundo, se você tem um jogo com carregador mal programado, e ele requer que a RAM esteja no slot 3. Leia mais sobre isso na seção Eliminando Problemas.
    -korean Use esta opção para habilitar o layout de memória de máquinas MSX coreanas. Você precisará de um conjunto de ROMs coreanas: um MSX.ROM coreano e um MSXHAN.ROM coreano. Esta última ROM será carregada na página 2 (8000h) do slot 0.
    -megaram <n> Esta opção seleciona o tamanho da MegaRAM. Valores válidos são 0=128kb, 1=256kb, 2=512kb, 3=1Mb e 4=2Mb. O valor default é 256kb.
    -mapper <n> Esta opção seleciona o tamanho da Memory Mapper. Valores válidos são 0=64kb, 1=128kb, 2=256kb, 3=512kb, 4=1Mb, 5=2Mb e 6=4Mb. O valor default é 128kb.

    Opções de Vídeo

    -mmx Esta opção seleciona uma pipelines de vídeo mais rápida. Ela utiliza as instruções SIMD dos processadores MMX para obter uma velocidade impressionante. Ela funciona sob Windows 95, mas não no Windows 3.11.
    -res <n> Esta opção seleciona a resolução utilizada pelo BrMSX. Valores válidos são 0 (320x200), 1 (256x200), 2 (512x256) and 3 (256x192). A resolução 0 é a default e funcionará em qualquer placa de vídeo VGA. A resolução 1 utiliza uma gambiarra no VGA para habilitar uma tela cheia, mas ela pode não funcionar em todos os monitores. A resolução 2 requer um vídeo Super VGA com driver VESA 2.0, mas habilita a incrível emulação de TV, com scanlines e filtro passa-baixas. A resolução 3 também utiliza uma gambiarra no VGA, mas é mais compatível que a resolução 1 e tem pixels quadrados.
    -vsync Esta opção habilita a sincronização com o retraço vertical. Isto pode tornar a emulação mais lenta, mas alguns jogos a requerem para ter um scroll suave (como Rally-X), ou para ter uma transição suave de palette (como Penguin Adventure).
    -green Use esta opção para habilitar a emulação do monitor verde. Tudo se tornará tons de verde. Utilizado em conjunto com a emulação de TV, é uma reprodução perfeita do monitor original da Gradiente.
    -frame <n> Esta opção ajusta a taxa de salto de frame. O valor default de 1 significa que todos os frames serão traçados. Se o BrMSX está lento para você, aumente este número, mas o valor default já é suficiente para velocidade total em um 486sx25 (e até mesmo em alguns 386dx rápidos!!!)
    -allspr Esta opção desabilita a ocultação do quinto sprite. Isto é útil para reduzir o piscamento em jogos como Zanac e Nemesis, mas irá produzir erros nos gráficos de jogos como Antartic Adventure e Parodius.
    -nosprcol Esta opção desabilita a detecção de colisão de sprites. Isto é útil para tornar alguns jogos mais fáceis (como Abu Simbel's Profanation) e pode tornar a emulação mais rápida em máquinas lentas.
    -nocache Esta opção desabilita o video cache. Isto tornará a emulação bem mais lenta, mas pode ser utilizada em caso de falha no video cache. Leia a seção Eliminando Problemas para mais detalhes.
    -cpugraph Esta opção habilita o gráfico de CPU, uma indicação de quanto tempo seu computador está gastando em cada passo da emulação. A primeira barra é o tempo gasto na emulação do Z80. A segunda é o tempo gasto no traçado do background, e a terceira é o traçado dos sprites. A quarta quantifica o tempo gasto copiando os dados da RAM principal para a RAM da sua placa de vídeo. A quinta barra é o overhead do próprio gráfico. Utilize esta opção para otimizar o emulador. Esta opção funcionará apenas em máquinas com RDTSC, como os processadores Pentium.
    -psggraph Esta opção habilita o gráfico do PSG, uma gráfico muito curioso com as amplitudes de cada canal de som. Você verá três barras para o PSG e mais cinco se o SCC estiver habilitado.

    Opções do Som

    -nosound Desabilita o mecanismo de som. Útil se a detecção de Sound Blaster está travando seu computador ou se você está jogando Nemesis no serviço.
    -scc Habilita a emulação de SCC. Isto não é habilitado por default, uma vez que a emulação de SCC ainda não está perfeita. Funciona apenas com os gerenciadores #0 e #2.
    -sr <n> Muda a frequência de amostragem da saída. O valor default é 45455 (qualidade de CD), mas você pode querer diminuir este valor em máquinas lentas, ou se sua placa de som não é 100% compatível com Sound Blaster.
    -fmpac Habilita a emulação do FM-PAC (YM2413). A emulação do FM-PAC é bastante limitada no momento, e a qualidade do som será bastante ruim. Para realmente habilitar o FM-PAC você precisará do FMPAC.ROM original (64kb) como cartucho 1.
    -speaker Habilita o som através do PC Speaker. O speaker pode reproduzir todos os três canais melódicos do PSG ao mesmo tempo, através de um algoritmo especial de multiplexação temporal.
    -speaq <n> Muda a qualidade do som pelo PC Speaker. O valor controla a velocidade com que os canais são multiplexados. O valor default é 1, e você provavelmente não irá querer aumentar muito este valor, já que a qualidade cai a partir de certo ponto. Eu gosto de "-speaq 2", mas você pode tentar outros valores. A faixa é de 1 a 9.

    Opções de I/O

    -diska <f.dsk> Habilita a emulação do disk-drive e seleciona f.dsk como imagem de disco. Imagens de disco precisam estar no formato .DSK, e podem ser de quatro tipos diferentes: 40 trilhas / 1 lado (180kb), 40 trilhas / 2 lados (360 kb), 80 trilhas / 1 lado (360kb) e 80 trilhas / 2 lados (720 kb). Imagens multi-disco criadas com COPY /B ainda não são suportadas.
    -disklow Emulação de disco através das portas de I/O D0h-D4h. Esta opção é habilitada por default, e funcionará apenas com DISK.ROM baseadas em portas de origem brasileira. Muitos programas brasileiros requerem esta opção, como Super Disk Copy, Hello, Chave Mestra e a versão em disco de Robocop.
    -diskhigh Emulação de disco através de patches no BDOS. Esta opção funcionará com quase todas as DISK.ROM, mas é mais restrita que a anterior. Apenas .DSK de 720kb podem ser utilizados, e o LED do drive não será emulado.
    -tape <t.cas> Habilita a emulação da fita cassete através de patches na BIOS, e seleciona t.cas como imagem de cassete. A emulação do cassete é restrita nesta versão, a imagem da fita não pode ser maior que 64kb.
    -joy Habilita a emulação de joystick. O joystick será conectado na porta A (na maioria dos casos isso significa jogador 1). Se você quiser mudar para a porta B, vá até a seção Debugger para aprender como fazê-lo. O joystick é calibrado automaticamente no início, logo não toque nele até a emulação começar.
    -joysens <n> Ajusta a sensibilidade do joystick. Valores válidos são de 0 a 7, e o valor default é 3. Usuários de joypads devem tentar esta opção para conseguir mais precisão.
    -fakejoy Mapeia o teclado na porta A do joystick, com essa opção você pode controlar os jogos que requerem joystick (como Gauntlet) pelo teclado. O mapeamento para este modo é Cursores= Direcional, Control da Esquerda= Botão 1, Alt da Esquerda= Botão 2.
    -autofire Esta opção aciona o tiro automático (pressiona a tecla de espaço automaticamente). Isto é ótimo para jogos de ação como Gall Force.
    -autorun Esta opção é similar à anterior, porém pressiona as teclas "para direita" e "para esquerda". Use esta opção em jogos de esportes como Decathlon e Hyper Sports. Pressione as teclas esquerda e direita ao mesmo tempo para correr.
    -autospeed <n> Ajusta a velocidade para "-autofire" e "-autorun". Os valores válidos são de 0 (rápido) a 9 (lento). O valor default é 5.

    Opções para Multiplayer

    -server Seleciona este computador como servidor. Apenas o monitor conectado como servidor mostrará a tela do MSX. Sempre utilize o computador mais rápido como servidor.
    -client Seleciona este computador como cliente. O teclado deste computador agirá como o joystick B do MSX. A velocidade deste computador não é importante, você pode utilizar um 386 lento como cliente BrMSX.
    -com <port> Seleciona a porta serial COM na qual você conectou o cabo serial. Esta opção é necessária nos dois lados. Leia mais sobre jogos multiplayer na seçao Multiplayer.

    Opções de Controle

    -nomouse Desabilita a detecção do mouse driver. Utilize-a em caso de conflito com o mouse driver. Sem um mouse você não será capaz de utilizar a GUI.
    -novesa Desabilita a detecção de VESA. Utilize-a em caso de conflito com driver de vídeo. Sem VESA 2.0, você não será capaz de utilizar a emulação de TV.
    -noled Desabilita a emulação dos LEDs. Utilize isto caso seu teclado pareça perder toques.
    -nopentium Desabilita as extensões Pentium e a autodetecção de CPU. Utilize isto se a autodetecção está falhando e fazendo a máquina travar. Sem um Pentium você não será capaz de utilizar o gráfico de CPU.
    -noenter Desabilita a necessidade de apertar ENTER no começo. Útil para autores de front-ends.
    -help Mostra uma pequena tela de ajuda.


    Dentro da Emulação

    O MSX possui algumas teclas que não estão presentes no PC. O mapeamento das teclas é mostrado na tabela abaixo:

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

    Os LEDs no teclado também são emulados:

    MSX LED
    PC LED
    Caps Lock Caps Lock
    Kana Num Lock
    Drive em uso Scroll Lock

    Algumas teclas possuem significado especial:

    F6 Rebobina fita
    F9 Salva um screenshot para BRMSX.PCX
    F10 Pára a emulação e entra no debugger
    F12 Pára a emulação e chama a GUI
    Num Lock "Avanço rápido", habilita o modo TURBO quando pressionada
    + (keypad) Aumenta o volume
    - (keypad) Diminui o volume

    A GUI também pode ser chamada com um toque no botão esquerdo do mouse.


    Interface Gráfica de Usuário

    A GUI é muito fácil de usar (afinal, essa é a idéia!)

    O menu é apresentado no lado esquerdo da tela, e você precisa utilizar o mouse e seu botão esquerdo para selecionar opções. Clique em qualquer lugar fora de uma janela para retornar à emulação.

    As opções da GUI são:

    Reset Reseta o computador. Este reset é um soft-reset, já que não apaga o conteúdo da RAM e da VRAM.
    Turn OFF Desliga o computador. Isso funciona como um reset, porém apaga todo o conteúdo da RAM e da VRAM. Voce precisa clicar em Turn ON para retornar à emulação.
    Load ROM Esta opção carrega uma nova ROM no slot A. As ROMs precisam estar no mesmo diretório do BrMSX.
    CPU Graph Esta opção alterna o Gráfico de CPU entre ligado e desligado.
    PSG Graph Esta opção alterna o Gráfico de PSG entre ligado e desligado.
    Save state Esta opção salva o estado da máquina em um arquivo chamado BRMSX.STA. Isto é ótimo para terminar jogos!
    Load state Esta opção lê um estado previamente gravado.
    Quit Esta opção aborta o BrMSX e retorna para o MS-DOS.


    Debugger

    Pressionando ESC na abertura, ou F10 durante a emulação, você entra no Fudebug (Full Debugger). Eu não vou explicar todas as coisas apresentadas na tela. Se você não sabe que o que está na tela, então o debugger não é para você.

    O Fudebug é uma ferramenta muito poderosa para auxiliar na programação MSX. Os comandos sempre têm uma letra, e alguns deles podem precisar de argumentos. Cuidado ao entrar com os argumentos, pois não há backspace. Valores devem ser sempre entrados em hexadecimal.

    Os comandos suportados s&atildeo:

    S Sai do debugger e reinicia a emulação
    Q Sai do debugger e aborta para o MS-DOS.
    F7 Executa uma única instrução do Z80.
    F8 Executa sobre uma instrução do Z80. Utilize esta opção para pular instruções CALL e RST.
    U dddd Disassembla a partir do endereço dddd.
    D dddd Faz um dump de memória a partir do endreço dddd.
    Page Up Rola a região de dump para cima.
    Page Down Rola a região de dump para baixo.
    E dddd xx Edita o byte no endereço dddd, sobrescrevendo-o com o valor xx.
    B dddd Reinicia a emulação com um breakpoint no endereço dddd.
    F2 Salva o estado da máquina no arquivo BRMSX.STA
    F3 Lê o estado da máquina do arquivo BRMSX.STA
    1 Seleciona a tela de debug 1.
    2 Seleciona a tela de debug 2.
    0 Mostra a tela do MSX.
    M Seleciona o modo de emulação (normal, fast, turbo)
    Y Alterna o VSync entre ligado e desligado.
    V Alterna entre as resoluções (320x200, 256x200, 512x384, 256x192)
    J Alterna a emulação de joystick entre Porta-A, Porta-B e nenhuma.
    C Calibra o joystick novamente.
    F1 Mostra a tela de ajuda.


    Multiplayer

    Com o BrMSX, você pode conectar dois computadores com um cabo serial, para jogar em modo multiplayer. O primeiro computador controla o teclado do MSX (jogador 1), e o segundo computador age como o joystick B do MSX (jogador 2).

    O mapeamento das teclas para o segundo jogador é:

    Tecla do jogador 2 Significado
    Direita JOY-B Direita
    Esquerda JOY-B Esquerda
    Para Cima JOY-B Para Cima
    Para Baixo JOY-B Para Baixo
    Espaco JOY-B Botão 1
    M JOY-B Botão 2

    Para começar uma sessão multiplayer, você precisa digitar no computador mais rápido: "brmsx -server -com 2", trocando é claro "2" com o número da sua porta serial.

    Depois de iniciar o servidor, digite no cliente "brmsx -client -com 1", novamente, não esqueça de checar a porta COM. Isso irá iniciar a emulação em modo multiplayer. Apenas o monitor do servidor mostrará a tela do MSX.

    Para sair de uma sessão multiplayer, termine a emulação no cliente primeiro!! A ordem errada poderá travar os dois computadores.

    Alguns jogos com opções para dois jogadores simultâneos são: Konami's Soccer, Salamander, Konami's Ping Pong, Super Laydock, Yie Ar Kung Fu 2, Warroid, e outros que não me recordo.


    Combinação de Cartuchos

    BrMSX tem suporte para dois cartuchos ao mesmo tempo. Isto é útil para programadores (você pode carregar o Mega-Assembler e o XBasic ao mesmo tempo), e também para os jogadores.

    Muitos jogos têm opções secretas quando conectados em conjunto com outros cartuchos. Alguns exemplos são:

  • Nemesis no slot A e Twin Bee no slot B: sua nave se transformará em uma Abelha.

  • Nemesis 2 no slot A e Penguin Adventure no slot B: sua nave se transformará em um Pinguim Azul.

  • Nemesis 2 no slot A e Q-Bert no slot B: você pode pressionar "F1" e digitar os códigos secretos LARS18TH e METALION.

  • Salamander no slot A e Nemesis 2 no slot B: um estágio secreto aparecerá após os três planetas, você poderá derrotar Venom e ver o final feliz.


    Gerenciadores de MegaROM

    BrMSX suporta todos os tipos de Gerenciadores de MegaROM utilizados em jogos de MSX 1. Se o BrMSX encontrar o jogo em seu banco de dados interno, então o gerenciador de MegaROM será automaticamente selecionado. Senão, será utilizado o gerenciador #0.

    Os Gerenciadores suportados são:

  • #0: MegaROM Genérico com SCC

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

    Endereço Bloco
    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 com SCC

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

    Endereço Bloco
    5000h-57FFh 4000h-5FFFh
    7000h-77FFh 6000h-7FFFh
    9000h-97FFh 8000h-9FFFh
    B000h-B7FFh A000h-BFFFh
    9800h-9FFFh SCC

  • #3: Konami sem SCC

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

    Endereço Bloco
    <nenhum> 4000h-5FFFh
    6000h 6000h-7FFFh
    8000h 8000h-9FFFh
    A000h A000h-BFFFh

  • #4: ASCII 8kb

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

    Endereço Bloco
    6000h-67FFh 4000h-5FFFh
    6800h-6FFFh 6000h-7FFFh
    7000h-77FFh 8000h-9FFFh
    7800h-7FFFh A000h-BFFFh

  • #5: ASCII 16kb

    Jogos: Gall Force, Eggerland Mystery 2, Golvellius.

    Endereço Bloco
    6000h-6FFFh 4000h-7FFFh
    7000h-7FFFh 8000h-BFFFh

  • #6: ASCII 8kb com 8kb SRAM

    Jogos: Xanadu.

    Endereço Bloco
    6000h-67FFh 4000h-5FFFh
    6800h-6FFFh 6000h-7FFFh
    7000h-77FFh 8000h-9FFFh
    7800h-7FFFh A000h-BFFFh
    bloco=20h SRAM

  • #7: ASCII 16kb com 2kb SRAM

    Jogos: Hydlide 2.

    Endereço Bloco
    6000h-6FFFh 4000h-7FFFh
    7000h-7FFFh 8000h-BFFFh
    bloco=10h SRAM

  • #7: Panasonic FM-PAC Original com 8kb SRAM

    Jogos: FM-PAC original.

    Endereço Bloco
    7FF7h 4000h-7FFFh


    Layout da Memória

    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  


    Eliminando Problemas

    Respostas para algumas perguntas comuns:

    P: Como eu rodo esses jogos .ROM?
    R: Copie o .ROM para o mesmo diretório do BrMSX e utilize a GUI embutida. Você também pode digitar "brmsx game.rom", se for esperto o suficiente para usar o DOS prompt.

    P: Como eu rodo esses jogos .DSK?
    R: Apenas digite "brmsx -diska game.dsk". De agora em diante, tudo se passa como um MSX real com disk-drive.

    P: Como eu rodo esses jogos .BAS e .BIN?
    R: Voce precisa criar um arquivo .DSK primeiro. Eu recomendo que você use o DSKtool, um utilitário para manutenção de .DSK. Você pode encontrá-lo em http://www.lsi.usp.br/~ricardo/msx.htm e ele vem com seu próprio manual. Após criar um arquivo .DSK, basta usar os comandos RUN"GAME.BAS" ou BLOAD"GAME.BIN",R .

    P: Eu estou tentando rodar este jogo "Terramex" e ele não funciona!
    R: Isso não é um bug do BrMSX, você na verdade encontrou um erro no carregador do jogo. Tente rodar este jogo novamente, porém desta vez inicie o BrMSX com a opção "-ramslot 3". Alguns jogos que necessitam disto são Terramex, Oh Shit e Camelot Warriors.

    P: Este jogo grande "Gall Force" não está funcionando!
    R: Se o jogo tem mais que 32kb, então o BrMSX não conseguiu achar o gerenciador de MegaROM correto para este jogo. Tente utilizar a opção "-roma" com todos os valores possíveis, até encontrar um que funcione.

    P: Estou tentando jogar "Zanac" mas a nave está piscando! Estou certo de que você fez alguma besteira pois eu testei a mesma ROM em outro emulador e não piscou.
    R: Essa piscadeira também aparecerá em um MSX real, isso é uma característica do VDP chamada "ocultação do quinto sprite". Alguns jogos a requerem para apresentar gráficos corretos, como Parodius, Goonies e Antartic Adventure. Você pode desabilitar essa característica com a opção da linha de comando "-fakespr". Se essa piscadeira não ocorre nos seus outros emuladores, então ou eles não emulam essa característica, ou ela está desabilitada por default.

    P: Eu não consigo ouvir nenhum som!
    R: BrMSX suporta apenas Sound Blaster e placas de som 100% compatíveis. Alguns modelos antigos, como a Sound Blaster Pro, não são suportados. BrMSX também não suporta a ESS audiodrive. Usuários da Gravis Ultrasound devem utilizar o emulador de Sound Blaster MEGAEM. Dê-me tempo suficiente e adicionarei drivers para todas estas placas. Enquanto isso você pode tentar o som através do PC Speaker, ou então a versão em 22222Hz (brmsx22.exe).

    P: Por que "Bubble Bobble" e "Metal Gear" não funcionam no BrMSX?
    R: Esses são jogos de MSX-2. Por enquanto o BrMSX emula apenas o MSX-1.

    P: Quando o BrMSX terá emulação de MSX2?
    R: Apenas quando eu acabar a emulação de MSX 1. Não há sentido em adicionar emulação de MSX2 se o MSX1 não está completamente implementado! Existem muitas características do MSX1 que ainda não foram emuladas por nenhum emulador (principalmente as não documentadas), e para conseguir emulação perfeita eu preciso adicionar todas elas.

    P: Onde eu posso encontrar esse teste ZEX? Existem versões para 6502?
    R: O ZEX (Z80 Exerciser) é um programa para testar compatibilidade com o Z80. Ele pode ser encontrado no pacote YAZE. YAZE quer dizer Yet Another Z80 Emulator e pode ser encontrado em sites de CP/M. A versão original do ZEX roda em MSX-DOS, mas eu fiz uma versão .ROM antes de adicionar suporte a disco. Se você estiver interessado nessa versão, mande um e-mail para mim. ZEX foi feito apenas para Z80, e não está disponível para nenhum outro processador.

    P: O que preciso fazer para rodar "Metal Gear 2" no fMSX?
    R: Por favor, não me mandem mensagens sobre fMSX, CJS ou qualquer outro emulador de MSX. Eu perco muito tempo respondendo e-mails, e este tempo poderia ser melhor aproveitado programando o BrMSX. Se você tem problemas com outros emuladores, contacte Marcelo Eiras através da página http://www.geocities.com/~msxsite (português), ou então contacte TFH através da página http://www.casema.net/~tfh (inglês) .

    P: Posso ser um beta-tester?
    R: Você já é um beta-tester, uma vez que todas as minhas versões são beta.


    Créditos

    Algumas pessoas acreditam que eu faço o BrMSX sozinho. Isso não é verdade. Eu realmente programo sozinho, mas o BrMSX é muito mais que um programa. Muitas pessoas me ajudaram, contribuindo com código-fonte exemplo, data books, testes em máquinas reais, reportando bugs ou simplesmente com incentivo.

    Primeiro, eu gostaria de agradecer Arnon Cardoso. A idéia de começar um emulador brasileiro foi dele. Vocês deveriam testar seu grande Java MSX Emulator. Algum dia o padrão PC irá morrer, e o BrMSX não será mais útil. Mas um emulador em Java tem o potencial para ser usado para sempre.

    Muito obrigado a Sean Young. Ele me deu muitas idéias nos estágios iniciais do BrMSX (mas é claro, o mais importante de todos foi "às vezes você precisa PARAR e PENSAR" :). O código fonte do Virtual MSX e suas páginas técnicas foram grandes recursos.

    Eu não posso esquecer Isaac Santaolalla Solorzano. Às vezes eu acho que ele perde mais tempo debugando o meu emulador que o dele! Ele é um cara que realmente se diverte com o MSX. Tentem o seu emulador MSKISS, pois ele tem muitas características não presentes no BrMSX, como suporte nativo a GUS e autodetecção de Gerenciador de MegaROM.

    Adriano Cunha foi uma grande inspiração. Ele ODEIA emuladores, e eu tenho que fazer o BrMSX ficar perfeito para que ele o use. Afinal, não é impossível.

    Muito obrigado a meu irmão, Raul Tabajara. Ele fez todos os gráficos do BrMSX, desde o design da GUI até o logo. Ele está atualmente procurando um emprego como designer gráfico de jogos, você pode ver mais de seu trabalho em http://www.lsi.usp.br/~ricardo/raul.htm, e para contactá-lo basta mandar um e-mail para mim em ricardo@lsi.usp.br.

    E, é claro, eu agradeço a Thomas Pytel. Sem sua biblioteca PMODE, eu nunca teria aprendido assembly de modo protegido, e o BrMSX jamais seria tão rápido.

    Se eu fosse agradecer todos que me ajudaram, este arquivo ficaria grande demais para download.Mas não posso terminar este manual sem mencionar a ajuda 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 of Bandwagon, Peter Latimer, Alwin Henseler e todas as pessoas que me mandaram e-mails reportando bugs e com comentários. Obrigado a todos!!!

    Se você quiser traduzir este manual para Japonês, Coreano, Holandês, Francês, Italiano, ou qualquer outra língua falada por amantes do MSX, por favor me contacte.

    "Eu não acredito NISSO!", disse
    Alice. "Não?", a Rainha disse,
    em tom de desdém. "Algumas
    vezes eu acreditei em até
    SEIS coisas impossíveis antes
    do café da manhã!"

    (Lewis Carroll)