Como o MAME localiza os seus arquivos?¶
Introdução¶
Ao contrário dos típicos programas de computador onde você navega pelo
seu disco e seleciona um arquivo para abrir ou um local para salvar, o
MAME possuí configurações que indicam onde procurar os arquivos que ele
usa. Você pode alterar estas configurações iniciando o MAME sem
qualquer parâmetro, depois selecionando Configurações e,
em seguida, selecionando Configuração dos diretórios
(lembre-se de clicar em Salva a configuração para aplicar
as suas alterações). Você também pode alterar as configurações editando
diretamente os arquivos mame.ini
e ui.ini
ou usando as
respectivas opções diretamente na linha de comando ou dos outros
arquivos de configuração. Para obter mais informações sobre todas as
opções disponíveis para controlar onde o MAME deve procurar pelos
arquivos e os diferentes tipos de configurações, consulte os capítulos
Opções para a configuração dos principais diretórios e o Diversos arquivos de configuração.
Terminologia¶
Precisamos compreender algumas terminologias utilizadas nas explicações mais adiante:
Sistema
Um sistema é um conjunto completo que pode ser emulado pelo MAME. Alguns sistemas executam um programa (software) fixo, enquanto outros podem carregar programas a partir de um catálogo de programas e/ou os arquivos de uma mídia.
Dispositivo
Um componente emulado que pode ser usado por vários sistemas ou por outros dispositivos. Alguns dispositivos precisam de uma cópia da imagem de uma ROM e alguns dispositivos permitem que um programa possa ser lido a partir de uma lista adicional de programas que serão usadas com um sistema específico.
Sistema principal
O MAME usa uma relação de principal/clone para agrupar os sistemas relacionados. Um sistema no grupo é escolhido para ser o principal e os outros são chamados de clones. (A escolha do sistema principal é um tanto arbitrária. Não é necessariamente a original ou a variante definitiva).
BIOS do sistema
Um sistema configurado sem programa. Isso é geralmente aplicável em sistemas do tipo arcade que usavam cartuchos com jogos intercambiáveis ou placas com as ROMs. Observe que isso não é o mesmo que as configurações da seleção da BIOS que permitem a escolha de uma ROMs para a inicialização do sistema (como os sistemas Neo Geo por exemplo) ou um firmware do dispositivo.
O item de um programa
Um pacote de um programa descrito num catálogo de programas. Os itens dos programas podem consistir em diversas partes que podem ser montadas de forma individual. Devido a grande variedade de mídia compatível com o MAME, as partes do programa podem usar diferentes carregadores. Neles se incluí os carregadores de ROM, tipicamente utilizado por cartuchos e o carregador de arquivo de uma imagem, usado por partes do programa que consistem numa única imagem de uma mídia (como a imagem de um disquete, de um CD-ROM, de uma fita cassete, etc.).
O item de um programa principal
Os itens dos programas relacionados são agrupados usando relacionamentos do tipo principal/clone, numa forma semelhante aos sistemas relacionados. Isso é geralmente utilizado para agrupar as diferentes versões ou os diferentes lançamentos de um mesmo tipo de programa. Caso o programa tenha um item principal, ele sempre estará no mesmo catálogo de programas.
Nome abreviado
O MAME utiliza nomes abreviados para identificar de forma única, os sistemas e os dispositivos pelo item de um programa dentro de um catálogo e para também, identificar de forma única as partes do programa dentro de um programa.
É possível ver o nome abreviado de um sistema destacando-o no menu de seleção do sistema, garantindo que o painel de informações esteja visível à direita e mostrando as Informações gerais na aba de Informações. Por exemplo, o nome abreviado para o Nintendo Virtual Boy é
vboy
. O nome abreviado do sistema e do dispositivo também podem ser vistos na saída das várias opções da linha de comando, incluindo as opções-listxml
,-listfull
,-listroms
e-listcrc
.Você pode ver os nomes abreviados para um programa e em qual catálogo ele pertence, destacando-o no menu do catálogo de programas, garantindo que o painel de informações esteja visível à direita, fazendo com que seja mostrado as Informações do catálogo de programas na aba de Informações. Por exemplo, o nome abreviado para o sistema Macintosh 6.0.3 é
sys603
e o nome abreviado para o catálogo de programas fica no arquivomac_flop.xml
. Os nomes abreviados do catálogo correspondem ao nome do arquivo (por exemplo, o catálogo de programas do cartucho do Sega Mega Drive/Genesis é um arquivo chamado demegadriv.xml
e o seu nome abreviado émegadriv
). Você também pode ver as listas abreviadas do catálogo de programas, os programas e suas partes ao procurar pelo atributoname
nos arquivos XML do catálogo de programas que ficam dentro da pasta hash.
Opções do caminho para fazer a busca¶
A maioria das opções para definir os locais de busca, permitem que
vários diretórios sejam adicionados desde que eles sejam separados por
ponto e vírgula (;
). As variáveis de ambiente são expandidas usando
a sintaxe do prompt de comando no Windows ou no terminal nos sistemas
UNIX.
Os caminhos relativos são interpretados em relação ao diretório atual de trabalho no momento do uso. No Windows, caso o executável do MAME seja iniciado com um duplo clique, o diretório de trabalho será este onde o executável do MAME estiver. Caso inicie o MAME clicando duas vezes nele através do Finder do macOS ou na maioria das distribuições Linux, o seu home será definido como o diretório de trabalho.
Arquivos compactados¶
O MAME pode carregar arquivos compactados do tipo PKZIP (ZIP) e LZMA
(7-Zip) (estes devem ter as extensões .zip
e .7z
respectivamente). Uma série de extensões são compatíveis com o formato
PKZIP, incluindo o Zip64 para arquivos grandes, registros de data e hora
(timestamps) do NTFS e a compressão LZMA. Apenas o formato ASCII pode
ser usado nos nomes dos arquivos ou UTF-8 nos arquivos do tipo PKZIP
(os arquivos 7-Zip sempre usam nomes de arquivo com UTF-16).
Porém, o MAME não carrega arquivos que estejam agrupados e
compactados num único arquivo, por exemplo, quando todas as ROMs do
Master System estiverem dentro de um arquivo chamado sms.zip
ou
quando todas as ROMs do Mega Drive estiverem compactadas dentro de um
arquivo chamado megadriv.zip
e assim por diante. O MAME não possui
compatibilidade com arquivos dividido em vários segmentos (arquivos
divididos em partes como, .zip.001
, .zip.002
, *-part.001
,
*-part.002
, etc.), com arquivos criptografados e com o método legado
de compactação do tipo "implosão" nos arquivos PKZIP.
O desemprenho do MAME pode ser reduzido ao utilizar arquivos compactados com uma grande quantidade de itens dentro deste arquivo. Os arquivos compactados que usam o algoritmo de compactação LZMA (7-zip) utilizam a CPU de forma mais intensa durante o processo de descompactação se comparado aos arquivos compactados usando algoritmos mais simples como o PKZIP. O layout do arquivo não é levado em consideração durante o carregamento dos arquivos, então o uso de "compactação sólida" geralmente resulta no MAME descompactando os mesmos dados repetidamente durante o carregamento da mídia.
Como o MAME procura por uma mídia?¶
Use a opção rompath para definir o caminho das pastas onde as imagens das ROMs, as imagens de disco e outras mídias devem ser procuradas. É predefinido que o MAME procure pela mídia numa pasta chamada roms dentro do diretório de trabalho. Para o propósito desta discussão, o disquete, a fita cassete, a fita de papel e as outras imagens de uma mídia que não sejam armazenados no formato CHD são tratados como cópias das ROMs.
Ao procurar por uma cópia (dump) do sistema, do dispositivo ou do
programa, o MAME trata as pastas e arquiva dentro das pastas
configuradas pela opção rompath
como equivalente, mas lembre-se da
limitação onde o MAME não pode carregar os arquivos de um arquivo
contido em outro arquivo (um arquivo compactado que tenha outro arquivo
compactado dentro). O MAME procura primeiro uma pasta, depois procura
por um arquivo PKZIP e, finalmente, um arquivo 7-Zip. Ao procurar uma
cópia da ROM num arquivo, o MAME primeiro procura um arquivo com um
determinado nome e com um determinado CRC. Caso o arquivo correspondente
não seja encontrado, o MAME procura por um arquivo com um determinado
CRC ignorando o nome. Caso nenhum arquivo correspondente seja
encontrado, o MAME finalmente procura por um arquivo com um determinado
nome, ignorando o CRC.
Embora o MAME possa carregar imagens de disco no formato CHD de dentro dos arquivos, isso não é recomendado. Os arquivos CHD já possuem dados compactados, o formato em si já está compactado e os dados são armazenados de uma maneira permite o acesso aleatório dos arquivos. Caso uma imagem de disco no formato CHD esteja armazenada num arquivo PKZIP ou num 7-Zip, o MAME precisa primeiro, carregar o arquivo inteiro na memória para poder usá-lo. Para casos como um disco rígido ou para imagens de um LaserDisc, isso provavelmente usará uma quantidade de espaço grande no arquivo de troca (swap), prejudicando o desempenho e possivelmente reduzindo a expectativa de vida útil dos seus discos ou SSDs. É melhor manter as imagens CHD sem compressão dentro das suas respectivas pastas.
As ROMs dos sistemas¶
Para cada pasta configurada em rompath
, o MAME procura as ROMs do
sistema nos seguintes locais:
Numa pasta ou num arquivo correspondente ao nome do próprio sistema.
Numa pasta ou num arquivo correspondente ao nome do sistema principal do sistema, caso seja aplicável.
Numa pasta ou num arquivo correspondente ao nome da BIOS do sistema correspondente, caso seja aplicável.
Usando o sistema Shiritsu Justice Gakuen como exemplo, o MAME buscará pelas ROMs do sistema nesta ordem:
O nome abreviado do sistema é
jgakuen
, então o MAME irá procurar por uma pasta chamada jgakuen, um arquivo PKZIP chamadojgakuen.zip
ou um arquivo 7-Zip chamadojgakuen.7z
.O sistema principal é a versão européia do Rival Schools, que tem o nome abreviado
rvschool
, então o MAME irá procurar por uma pasta chamada rvschool, um arquivo PKZIP chamadorvschool.zip
ou um arquivo 7-Zip chamadorvschool.7z
.A BIOS do sistema correspondente é a placa Capcom ZN2, que tem o nome abreviado
coh3002c
, então o MAME irá procurar uma pasta chamada coh3002c, um arquivo PKZIP chamadocoh3002c.zip
ou um arquivo 7-Zip chamadocoh3002c.7z
.
ROMs do dispositivo¶
Para cada caminho configurado em rompath
, o MAME procurará pelas
ROMs dos dispositivos nos seguintes locais:
Numa pasta ou num arquivo correspondente ao nome do dispositivo.
Numa pasta ou num arquivo correspondente ao nome da ROM do dispositivo principal do dispositivo, caso seja aplicável.
Numa pasta ou num arquivo correspondente ao nome do sistema.
Numa pasta ou num arquivo correspondente ao nome do sistema principal do sistema, caso seja aplicável.
Numa pasta ou num arquivo correspondente ao nome da BIOS do sistema correspondente, caso seja aplicável.
Usando o clone Unitron 1024 Macintosh com um teclado francês Macintosh Plus com um teclado numérico como exemplo, o MAME procurará a ROM do microcontrolador do teclado da seguinte maneira:
O nome abreviado do teclado francês Macintosh Plus é
mackbd_m0110a_f
, então o MAME procurará uma pasta chamada mackbd_m0110a_f, um arquivo PKZIP chamadomackbd_m0110a_f.zip
ou um arquivo 7-Zip chamadomackbd_m0110a_f.7z
.A ROM principal do dispositivo é o teclado U.S. Macintosh Plus com um teclado numérico, que tem o nome abreviado
mackbd_m0110a
, então o MAME procurará por uma pasta chamada mackbd_m0110a, um arquivo PKZIP chamadomackbd_m0110a.zip
ou um arquivo 7-Zip chamadomackbd_m0110a.7z
.O nome abreviado do sistema Unitron 1024 é
utrn1024
, então o MAME procurará por uma pasta chamada utrn1024, um arquivo PKZIP chamadoutrn1024.zip
ou um arquivo 7-Zip chamadoutrn1024.7z
.O sistema principal do Unitron 1024 é o Macintosh Plus, que tem o nome abreviado
macplus
, então o MAME irá procurar por uma pasta chamada macplus, um arquivo PKZIP chamadomacplus.zip
ou um arquivo 7-Zip chamadomacplus.7z
.Caso não haja uma BIOS que corresponda ao sistema, então o MAME não fará mais buscas.
As ROMs dos itens dos programas¶
Para cada pasta configurada em rompath
, o MAME procura pelos itens
dos programas do sistema nos seguintes locais:
Numa pasta ou num arquivo correspondente ao nome do item dos programas correspondente dentro de uma pasta correspondente ao nome abreviado do catálogo de programas (ou uma pasta correspondente ao nome abreviado do item do programa dentro de um arquivo correspondente ao nome do catálogo de programas).
Numa pasta ou num arquivo correspondente ao nome do item do programa principal dentro de uma pasta que corresponda ao nome abreviado do catálogo de programas, caso seja aplicável (ou uma pasta correspondente ao nome abreviado do item do software principal num arquivo que corresponda ao nome do catálogo de programas).
Numa pasta ou num arquivo correspondente ao nome do item do programa (assim é feito por questão de conveniência dos itens do programa que também são executados como sistemas autônomos com o mesmo nome abreviado, como nos jogos de Neo Geo).
Numa pasta ou num arquivo correspondente ao nome do item do programa principal, caso seja aplicável. (Isso é utilizado para conveniência dos itens do programa que também são executados como sistemas autônomos com o mesmo nome abreviado, como nos jogos de Neo Geo).
Ao carregar a versão alemã do Dune II do cartucho do Mega Drive/Genesis a partir do catálogo de programas na versão PAL do Mega Drive, o MAME procurará a ROM do cartucho ROM da seguinte maneira:
O nome abreviado do item do programa para a versão alemã do Dune II é
dune2g
e o nome abreviado da ROM do cartucho do Mega Drive/Genesis no catálogo de programas émegadriv
, então o MAME procurará por uma pasta chamada dune2g, um arquivo PKZIP chamadodune2g.zip
ou um arquivo 7-Zip chamadodune2g.7z
dentro de uma pasta chamada megadriv (ou uma pasta chamada dune2g dentro de um arquivo PKZIP chamadomegadriv.zip
ou um arquivo 7-Zip chamadomegadriv.7z
).O item do programa principal é a versão PAL europeia genérica do Dune II no mesmo catálogo de programas, que tem o nome abreviado
dune2
, então o MAME procurará uma pasta chamada dune2, um arquivo PKZIP chamadodune2.zip
ou um arquivo 7-Zip arquivo chamadodune2.7z
dentro de uma pasta chamada megadriv (ou uma pasta chamado dune2 dentro de um arquivo PKZIP chamadomegadriv.zip
ou um arquivo 7-Zip chamadomegadriv.7z
).O próximo MAME irá ignorar o nome abreviado do catálogo de programas e usará apenas o nome abreviado do item do programa, procurando por uma pasta chamada dune2g, um arquivo PKZIP chamado
dune2g.zip
ou um arquivo 7-Zip chamadodune2g.7z
.Ainda ignorando o nome abreviado do catálogo de programas, o MAME usará apenas o nome abreviado do programa principal, procurando uma pasta chamada dune2, um arquivo PKZIP chamado
dune2.zip
ou um arquivo 7-Zip chamadodune2.7z
.
As imagens de disco no formato CHD¶
O MAME procura pelos sistemas, pelos dispositivos e os itens do programa através das as imagens de disco no formato CHD, com algumas diferenças:
Para os sistemas e para os itens de um programa, o MAME verificará o sistema ou programa principal se aplicável com os nomes alternativos para uma imagem de disco com o mesmo conteúdo. Isso permite que você mantenha uma única cópia de uma imagem de disco no formato CHD para um sistema principal, um item de um programa ou quaisquer clones que dependam de uma imagem de disco com o mesmo conteúdo, independentemente do nome esperado pelos clones.
Para os itens de um programa, o MAME procurará imagens de disco no formato CHD numa pasta que corresponda ao nome abreviado no catálogo de programas. Isso é utilizado para conveniência quando todos os itens num catálogo de programas que tenham apenas uma única imagem de disco cada em formato CHD.
Recomendamos que você não comprima as imagens de disco em formato CHD num arquivo PKZIP ou num arquivo 7-Zip. No entanto, caso isso seja feito, o MAME só conseguirá encontrar os discos em formato CHD dentro dos arquivos com um determinado nome. Isto ocorre porque o MAME utiliza o conteúdo do cabeçalho CHD e uma soma de verificação (checksum) do próprio arquivo CHD. A soma de verificação do próprio arquivo CHD pode variar dependendo das opções de compressão.
Visando a economia de espaço, o MAME permite que os arquivos delta CHD sejam usados por sistemas clones, dispositivo ROM principal e clones dos programas. O arquivo delta CHD depende de um CHD principal do sistema, ROM ou programa. A economia de espaço dependerá de quanto conteúdo poderá ser aproveitado do arquivo CHD principal. O MAME faz a busca nos mesmos locais que ele procuraria pelos arquivos CHD principais. Para obter mais informações consulte também no capítulo sobre ROMs e CHDs.
Programas avulsos¶
Muitos sistemas são compatíveis com o carregamento da mídia a partir de um arquivo informando o caminho do arquivo na linha de comando usando uma das opções de uma mídia. Os caminhos relativos são interpretados em relação ao diretório de trabalho atual.
Você pode definir um caminho para um arquivo dentro de um arquivo PKZIP ou 7-Zip da mesma maneira que definir um caminho para um arquivo numa pasta (lembre-se de que você pode ter no máximo um único arquivo num caminho, pois o MAME não suporta o carregamento de arquivos de arquivos contidos em outros arquivos). Caso defina um caminho para um arquivo PKZIP ou um arquivo 7-Zip, o MAME usará o primeiro arquivo encontrado no arquivo (isso depende da ordem onde os arquivos são armazenados no arquivo, é mais útil para arquivos contendo um único arquivo).
Inicie o Nintendo Entertainment System/Famicom com o arquivo amazon_diet_EN.nes montado no slot do cartucho:
mame nes -cart amazon_diet_EN.nes
Inicie o sistema Osborne-1 com o primeiro arquivo do arquivo
os1xutls.zip
montado na primeira unidade de disquete:
mame osborne1 -flop1 os1xutils.zip
Inicie o sistema Macintosh Plus com o arquivo system tools.img
no arquivo sys603.zip
montado na primeira unidade de disquete:
mame macplus -flop1 "sys603.zip/system tools.img"
Diagnosticando uma mídia ausente¶
Ao iniciar um sistema a partir do menu de seleção do MAME ou a partir da seleção do menu do catálogo de programas, o MAME irá listar qualquer sistema, cópia da ROM do dispositivo (dump) ou as imagens ausentes do disco, desde que haja pelo menos uma cópia da imagem da ROM ou uma imagem de disco presente para o sistema. Para os clones do sistemas, pelo menos uma cópia da ROM deve estar presente ou uma imagem de disco exclusiva para o clone, para que o MAME possa listar as ROMs e as imagens de disco que estiverem ausentes.
Caso todas as imagens de disco, todas as ROMs do sistema e todas as ROMs do dispositivo estejam presentes e o sistema estiver sendo iniciado com um item de um programa, o MAME verificará se a ROM e a imagem do disco para o item do programa estão presentes. Se pelo menos uma ROM ou uma imagem de disco para o item de um programa estiver presente, o MAME listará todas as ROMs ou as imagens de disco que estiverem ausentes.
Por exemplo, se você tentar iniciar o sistema Macintosh Plus e a ROM do microcontrolador do teclado estiver ausente, o MAME exibe a seguinte mensagem de erro:
As imagens ROM/disco necessárias para o sistema selecionado ou estão
faltando ou estão incorretas.
Adquira os arquivos corretos ou selecione um sistema diferente.
O arquivo 341-0332-a.bin (mackbd_m0110a) não foi encontrado
Pressione qualquer tecla para continuar.
O nome da ROM que falta é mostrado (341-0332-a.bin
) bem como o
nome abreviado do dispositivo ao qual ele pertence (mackbd_m0110a
).
Quando uma ROM está ausente ou a imagem do disco não for específico para
o sistema selecionado, o nome abreviado do sistema ou do dispositivo ao
qual ele pertence será mostrado.
Caso inicie um sistema no MAME a partir do prompt de comando ou do terminal, o MAME mostrará onde ele procurou pelas ROMs ou pelas imagens de disco que não foram encontradas.
Usando o exemplo de um clone do Unitron 1024 Macintosh com um teclado francês conectado, o MAME mostrará as seguintes mensagens de erro caso as ROMs não estejam presentes:
mame utrn1024 -kbd frp
342-0341-a.u6d NOT FOUND (tried in utrn1024 macplus)
342-0342-a.u8d NOT FOUND (tried in utrn1024 macplus)
341-0332-a.bin NOT FOUND (tried in mackbd_m0110a_f mackbd_m0110a utrn1024 macplus)
O MAME utilizou o nome abreviado do sistema utrn1024
e o nome
abreviado do sistema principal macplus
durante a procura pelas ROMs
do sistema. Ao pesquisar pela ROM do microcontrolador do teclado, o MAME
utilizou o nome abreviado do dispositivo mackbd_m0110a_f
, o nome
abreviado da ROM dispositivo principal mackbd_m0110a
, o nome
abreviado do sistema utrn1024
e o nome abreviado do sistema
principal macplus
.
As partes do programa que utilizam um carregador de ROM (geralmente uma mídia em cartucho) mostra uma mensagem similar quando as ROMs não são encontradas. Usando o exemplo da versão alemã do Dune II num Mega Drive PAL, o MAME mostrará as seguintes mensagens de erro caso nenhuma ROM esteja presente:
mame megadriv dune2g
mpr-16838-f.u1 NOT FOUND (tried in megadriv\dune2g megadriv\dune2 dune2g dune2 megadriv genesis)
Fatal error: Required files are missing, the machine cannot be run.
O MAME procurou a ROM do cartucho usando:
O nome abreviado do catálogo de programas do
megadriv
e o nome abreviado do programadune2g
.O nome abreviado do catálogo de programas
megadriv
e o nome abreviado do programa principaldune2
.Apenas o nome abreviado do programa
dune2g
.Apenas o nome abreviado do programa principal
dune2
.Os locais que seriam procurados pelo sistema PAL do Mega Drive (o sistema
megadriv
com o nome abreviado e o nome abreviado do sistema principalgenesis
).
As partes do programa que usam o carregador de arquivos de imagem (incluindo disquetes e uma mídia em fita cassete) só verificam a mídia depois que as imagens da ROM forem carregadas e os arquivos da mídia forem mostrados de forma diferente. Usando o exemplo do Macintosh System 6.0.3, o MAME mostrará estas mensagens de erro caso o programa esteja faltando:
mame macplus -flop1 sys603:flop1
:fdc:0:35dd: error opening image file system tools.img: No such file or directory (generic:2) (tried in mac_flop\sys603 sys603 macplus)
Fatal error: Device Apple/Sony 3.5 DD (400/800K GCR) load (-floppydisk1 sys603:flop1) failed: No such file or directory
As mensagens de erro mostram onde o MAME fez a procura pelo arquivo de
imagem. Neste caso, ele usou o nome abreviado do catálogo de programas
mac_flop
e o nome abreviado do programa sys603
, apenas o nome
abreviado do programa sys603
e os locais onde as ROMs do sistema
seriam procuradas.