

|
 |
você esta em: / hardware -> projetos
Upgrade MSX-Audio BIOS para o Music-Module
|
Por: FRS |

Versão 1.0 - 23/04/2005
BIOS versão 20050414
English text version here.
ATENÇÃO
Faça este upgrade por sua própria conta e risco. Considere-se avisado que esta modificação pode danificar seu cartucho e todo o seu equipamento, incluindo seu equipamento de TV.
This upgrade targets to get your Music-Module 100% compliant to the MSX-Audio specification. Your original cartridge could not be named "MSX-Audio" by Philips because it lacked this BIOS.
Este upgrade tem como objetivo tornar seu Music-Module Philips 100% de acordo com a especificação do MSX-Audio. Seu cartucho original não pôde ser chamado "MSX-Audio" pela Philips porque não continha o BIOS.
1) A História:
O MSX-Audio Panasonic FS-CA1 era o único cartucho MSX-Audio totalmente
de acordo com a especificação já lançado no mercado. Os outros dois modelos
não continham o BIOS, e o HX-900 não tem sequer a Sample-RAM.
Mas, assim como a Panasonic fez no seu cartucho FM-PAC, o BIOS do CA1 estava
contido em uma megarom contendo um software adicional e demos. Assim como
o BIOS do MSX-Music é de 16KB e o cartucho FM-PAC tem uma megarom de
64KB, o BIOS do MSX-Audio é de 32KB e o cartucho CA1 tem uma megarom de
128KB.
A estrutura da EPROM do FS-CA1 é a seguinte:
-
32KB: MSX-Audio BIOS
-
32KB: Editor Musical Synthe
-
64KB: Samples ADPCM opcionais, de demonstração.
Como muitos devem saber, o MSX-Audio era a extensão original (1985) de
músicas projetada para o padrão MSX. O MSX-Music veio depois (1987), como
uma versão proprietária da Panasonic, usando uma versão mais limitada do BIOS
(*1), patcheada para usar o chip YM2413, muito mais barato e incompatível.
São obscuros os motivos que levaram a Panasonic a escolher o YM2413 para construir esse cartucho mais barato e fora do padrão para o MSX, quando
poderiam ter escolhido o YM3526, que era 100% compatível com a parte FM do
Y8950, não tendo apenas a parte do ADPCM. Os comandos ADPCM poderiam então apenas ter sido bloqueados, exatamente como
fizeram no BIOS do MSX-Music.
*1: Os comandos ADPCM estão explicitamente bloqueados e
somente 1 instrumento programável pode ser utilizado por vez.
Sendo incompatível com o MSX-Audio, o MSX-Music não foi concebido para
ser usado com acesso direto ao OPLL, mas vários jogos o fizeram. A ASCII foi ainda mais longe em enfraquecer o padrão quando cometeu o terrível erro
de incluir o MSX-Music nas especificações do MSX Turbo-R. Ela também poderia ter
escolhido produzir um MSX-Audio mais barato usando o YM3526.
Mas no que implica isso tudo? Isso significa que uma vez que o MSX-Music é um subset do BIOS do MSX-Audio, todas as suas músicas em BASIC (como aquelas contidas na MSX-Magazine) escritas para o MSX-Music podem ser tocadas no MSX-Audio apenas trocando o comando CALL MUSIC por CALL AUDIO. Todos os parametros são idênticos também.
Para aqueles que não sabem, tanto o Music Module Philips
quanto o Toshiba HX-MU900 possuem originalmente uma EPROM de 32KB contendo algum péssimo editor irritante de músicas que roda sempre no boot, requerindo que o usuário pressione ESC para que o maldito programa não seja carregado. Vários usuários simplesmente removem a EPROM totalmente ou regravam-na com uma versão moficada que não rode no boot. Ambos os softwares continuam podendo ser executados através de um comando CALL no
BASIC.
- Music-Module: Vem com o Philips MUSICBOX editor, de 32KB
- HX-900: Vem com o mesmo editor Synthe de 32KB que o CA1 contém em sua ROM.
2) As diferenças entre o BIOS do MSX-Audio e o do MSX-Music quando tocam músicas no BASIC
2.1) A parte FM
-
Melhor: Todos os instrumentos podem ser utilizados em qualquer tempo: Não há aquela limitação estúpida que todos odiamos no MSX-Music, onde você pode escolher somente um por vez dos instumentos do manual que estão marcados com um "*". Não há asteriscos chatos no MSX-Audio, somente diversão. :)
-
Melhor: O BIOS do MSX-Music consome até 2KB da memória livre do BASIC para área de trabalho. Mas o MSX-Audio BIOS contém sua própria RAM no cartucho, portanto você não perderá um único byte livre de memória depois que digitar CALL
AUDIO.
-
Pior: O YM2413 é uma versão de baixo custo do OPL2, então nomeado OPLL, para "OPL Light". Isso significa que seu core é uma versão simplificada do YM3812 (OPL2), enquanto o core do Y8950 contem o core completo do YM3526 (OPL1) internamente. A única vantagem que o YM2413 obtém disso é que ele possui dois tipos de forma de onda. Não parece ser muito, mas é o suficiente obter uma boa vantagem na síntese de som, resultando em instrumentos mais complexos e agradáveis. Portanto, quando tocar músicas em BASIC, os instrumentos do MSX-Audio
soarão um pouco mais simples. A bateria do YM2413 é melhor.
-
O comando MML "Y" é incompatível: O comando não-documentado Yn,m escreve o valor m no registrador n. Uma vez que isso é acesso direto ao chip, é dependente de hardware e obviamente incompatível entre o Y8950 e o YM2413. Músicas que utilizem este comando MML terão comportamento imprevisível, podem desde desabilitar a saída de som FM até travar o seu computador. Felizmente é muito raro encontra-lo nas músicas em BASIC e é fácil substituir o comando Y por outros comandos MML que tenham o mesmo resultado e sejam compatíveis tanto com o MSX-Music quanto com o
MSX-Audio.
2.2) Os comandos ADPCM
Você passará a ter os comandos extremamente úteis de ADPCM, que permitem a você carregar, salvar, gravar e tocar comandos ADPCM assincronamente diretamente no BASIC.
Espero que alguém logo traduza totalmente o manual de BASIC do MSX-Audio.
2.3) As diferenças entre o BIOS da Panasonic e este BIOS genérico para MSX-Audio
2.3.1) Não há o comando CALL SYNTHE
-
Bem, se você quizer aquela tranqueira de editor, você sempre poderá carregá-lo na RAM utilizando o execrom. Caso você não lembre, o Synthe não faz parte do BIOS, é o editor de músicas contido no CA1.
2.3.2) O comando CALL COPY PCM (#x,0)
Este comando copia um sample #x da ROM demo de 64KB para a SampleRAM, de modo que possa ser tocado com o comando CALL PLAY PCM (0). O BIOS auto-detecta a presença desse pacote extra de samples no boot e habilita/desabilita o CALL COPY PCM (#x,0) de acordo. Se você tentar utilizá-lo neste BIOS genérico, receberá um erro "Illegal Function Call".
3) O Projeto BIOS
3.1) A parte software
As primeiras coisas primeiro, certo? Então antes de mais nada eu precisava separar a porção BIOS do FS-CA1 do resto da ROM dele. Isso me consumiu algum tempo, principalmente por causa que eu só conseguia dumps ruins da ROM do CA1 na Internet. A estrutura da ROM dele também não era nada fácil de compreender, uma vez que eu não sabia que o cartucho tinha 4KB de RAM própria.
Mas, graças ao suporte ao MSX-Audio BIOS do openmsx, as
coisas começaram a andar bem mais rápido. Eu então tirei fora o código
que era específico da Panasonic (para ler o a chave do cartucho, por
exemplo), Modifiquei a rotina de boot apropriadamente e limpei o espaço livre.
3.2) A parte hardware
Um circuito muito simples é necessário para implementar tudo que o BIOS precisa para trabalhar, que é:
-
4KB de RAM para área de trabalho, mapeada em 3000h e mirror em 7000h.
-
A ROM precisa estar mapeada entre 0000h a 7fffh. Mas originalmente a ROM do Music-Module é mapeada de 4000h a
BFFFh.
Note que é mais fácil instalar o BIOS do que o upgrade de 256KB de SampleRAM e também é mais fácil removê-lo do seu Music-Module para tê-lo trabalhando do modo original novamente.
3.2.1) Componentes necessários:
-
27C256: 32KB EPROM ou 27C512: 64B
EPROM
-
6164, 7164 ou equivalente: 8KB SRAM
-
74LS139: Para a seleção dos chips acima
Ei, não use a sua EPROM original! Guarde-a e compre outra 27C256
iy 27C512, apenas para o improvável caso de você não gostar do BIOS e optar por desfazer tudo.
Baixe
aqui
o conteúdo da EPROM.
-
msxaudio1.0 -
Quase-original (Tem só pequenos patches apenas pra retirar as "Panasoniczisses"
e funcionar no Music-Module)
-
msxaudio1.1 -
Algumas pequenas melhorias
-
msxaudio1.2beta - Versão muito, mas muito melhorada. Só que
ainda é beta.
-
msxaudio1.3 - Versão muito
melhor ainda, bug fixes..
As conexões são mostradas abaixo. Há várias maneiras de você montá-lo:

(Clique sobre a imagem para alta resolução)
a)
O método rápido-e-porco
Nota: Eu não gosto desse método porque você precisa soldar um fio diretamente no pino-20 do soquete da EPROM da placa. E dificilmente conseguirá regravar a EPROM futuramente.
a.1) Apenas solde o 6164 sobre o 27C256, deixando levantados os pinos que não devem ser diretamente ligados de um ao outro. Todos estes estão do mesmo lado dos dois chips. Note que há alguns pinos da 27C256 que precisarão ser levantados também, demodo que não toquem nos respectivos pinos so soquete da EPROM.
a.2) Abra bem os pinos do 74LS139 e coloque-o sobre o 6164. Solde o pino-16 do 74LS139 ao pino-28 do 6164. Depois disso, pegue um fio rígido e solde o pino-2 do 74LS139 ao pino-2 do 6164. Isso será suficiente para mantê-lo fixo sobre o 6164. Em seguida solde todas as outras conexões como descrito no arquivo gif.
a.3) Para simplificar as coisas, você não precisará soldar o fio que ligaria-se ao sinal A15 do soquete, apenas solde-o diretamente ao terra do 6164 (pino-14). Afinal, esse é o método rápido-e-porco, não é? :)
a) Um método um pouco melhor
Obtenha uma pequena placa-protótipo, mas cuide para que ela caiba no espaço disponível no cartucho e seja grande o suficiente para comportar os três CIs. Construa-a como uma placa piggyback, então você não precisará soldar nenhum fio no soquete da EPROM do Music-Module e não precisará entortar nenhuma perna de CI também. Tudo que você precisará soldar no cartucho serão os fios dos sinais de RW, RD e A14, que são muito fáceis de fazer, basta ver os locais onde o gif descreve.
c) O melhor método
O Sturaro e eu provavelmente iremos criar placas de upgrade tipo piggyback para o Music Module, contendo não somente o upgrade de BIOS como também a expansão de 256KB de sampleRAM. Tudo que você precisará fazer será retirar a EPROM original. soquetar o IC8 e soldar os fios dos sinais RD, RW, A14, IC2_pino-1 e ligar um
wire-up do pino-2 do IC2 ao pino-2 do Y8950.
Update
7/2/2006: Link para placa de upgrade
aqui.
4) FAQ
4.1) É verdade que o BIOS do MSX-Audio pode detectar e usar até dois Y8950
simultaneamente?
R: Sim, eu confirmei isso quando desassemblei a ROM. Mas não estás muito claro ainda como o BASIC tirará vantagem disso. Nos meus testes, ambos os chips tocavam exatamente as mesmas notas. Talvez uma tradução do maniual poderá nos ajudar a ter mais informação sobre essa
feature.
4.2) O BIOS do MSX-Audio não é algo mágico que precisa de uma circuitaria especial e um monte de ROM para rodar?
R: Isso era uma lenda. Tudo que ele precisa é de 4KB de memória disposta em mirror no mesmo
slot, como descrevi. E não precisa sequer ser SRAM, apenas DRAM já serviria. Eu utilizei SRAM apenas pra simplificar o circuito.
4.3) Porque você utilizou um chip de SRAM de 8KB se você disse que o BIOS do MSX-Audio utiliza apenas 4KB de RAM? O que ocorrerá com o excedente?
R: Uma vez que não existem chips de 4KB de RAM, escolhi usar
um de 8KB em vez de dois de 2KB apenas pra simplificar o circuito. Desse modo a coisa toda pode ser construída utilizando apenas 3 CIs. Os 4KB excedentes simplesmente não são utilizados.
4.4) Eu posso gravar savegames ou coisa assim nesta
SRAM?
R: Não, uma vez que não é mantida a bateria. Optei por SRAM apenas para simplificar o circuito, o BIOS do MSX-Audio a utiliza apenas como área de trabalho. Portanto, mesmo a Panasonic poderia ter implementado utilizando 4KB de DRAM no cartucho.
5) Créditos e Agradecimentos
-
Adriano Camargo Uzix Rodrigues da
Cunha, pelas dicas e idéias
-
Alexandre Antoniutti Passos
(aka Macross), por me emprestar seu BQ4011YMA por tanto tempo. ;)
-
Paulo Maluf, por conseguir pra mim um Music-Module em bom estado por um bom preço.
-
Perigote, por consertar meu MSX Turbo-R novamente. :)
-
Rafael Pereira Rigues, pela ajuda no conserto do Turbo-R novamente.
-
Marujo, pelas excelentes idéias para implementar a seleção de CHIP utilizando apenas um 74LS139.
-
Luciano Sturaro, pelas dicas, testes iniciais e hospedagem dos meus
upgrades e roteamento da placa de
upgrade.
-
Daniel Ravazzi, pelos testes e pelo dump da ROM original de seu
FS-CA1.
© 2005 by MSXPró 
Esta página é melhor visualizada em
resolução de 1024x768 @ True Color
Utilizando o navegador Mozilla
Visitante:
|
|
|