Mostrando postagens com marcador EMULAÇÃO. Mostrar todas as postagens
Mostrando postagens com marcador EMULAÇÃO. Mostrar todas as postagens

quarta-feira, 3 de abril de 2019

Nicola Salmoria, quem é esse cara? MAME a máquina de emulação

Afinal quem é esse cara?

Mas afinal quem é esse cara da foto? Acreditem ele é um dos responsáveis pela guinada na indústria dos vídeo games, quebrar um monopólio internacional e participar de forma relevante na emulação de diferentes máquinas de arcade, ajudando a preservar a história dos games. O nome dele é Nicola Salmoria, italiano formado em matemática pela Universidade de Siena.
O universo da emulação é gigantesco e dar todo o crédito a apenas uma pessoa é injusto. E todos os jogos precisam ser gravados fisicamente, e na época que essas máquinas foram concedidas a tecnologia vigente gravava as informações de jogos em chips anexados a placa do arcade. Cada produtora além de fazer o seu jogo, produzia a sua placa, e esse tipo de fabricação dificultava o desenvolvimento dessas máquinas de diversão eletrônica. Esse problema foi contornado pelo padrão JAMMA (Japan Amusement Machine and Marketing Association), fomentando por várias empresas em especial: Capcom, Konami, Sega, Atlus , Taito e Namco. A ideia era facilitar a criação, desenvolvimento, manutenção e comercialização de arcades a partir de um padrão unificado usando um conector de 56 pinos com saídas e entradas compatíveis entre todas as empresas que compartilhavam esse padrão. Isso possibilitou na época a possibilidade de trocar jogos de uma arcade trocando apenas a placa do jogo, ser precisar realizar mudanças nas entradas de energia (5 volts para o jogo e 12 volts para som), entradas para  joysticks, saída de vídeo RGB analógica, saída de som, entradas para moedas, e sensores de inclinação.
Placa de Arcade Padrão JAMMA
Em placas cheias de chips e circuitos a magia acontecia. Chips de memória EEPROM eram gravados com as instruções para o funcionamento das máquinas e execução dos jogos.
EEPROM, sigla do inglês de Electrically-Erasable Programmable Read-Only Memory, é um tipo de memória não-volátil usada em computadores e outros dispositivos eletrônicos. Essa memória armazena pequenas quantidades de dados gravados na ausência de energia, similar a arquivos gravados em qualquer dispositivo de memoria física.
Mas qual a função do EPPROM nas placas de arcade? As EPPROM nas placas de arcade tem toda a informação relativa ao jogos programados para a arquitetura. Com o acesso a informação da EPPROM vez que seria possível te acesso as informações responsáveis para que o jogo funcione
Um grupo de pessoas com conhecimento em eletrônica e programação foram responsáveis por esse Hack e a história resumida foi relatada por Rob Crowe um dos desenvolvedores desta tecnologia: [http://www.hifi-remote.com/jp1/history.shtml]
A ideia fundamental para o inicio do projeto partiu de Dan Nelsen que descobriu como fazer comunicação do chip EEPROM com outras máquinas. Ele inventou a primeira interface de comunicação para extrair a informação dos EEPROM e escreveu o software original usado para ler e gravar o conteúdo destes chips.
Dan também disponibilizou o código-fonte para seu software (sob uma licença de distribuição gratuita/ GNU), o que significava que outros desenvolvedores poderiam desenvolver o trabalho que ele já havia feito.
Uma vez com a informação extraída da EEPROM, seria necessário uma forma simular o comportamento da placa original usando o conteúdo dos chips adquiridos pelo hack desenvolvido por Dan. Neste contexto entra a participação de Nicola Salmoria em desenvolvedor os softwares que imitavam o comportamento da placa original em outras arquiteturas, o MAME. Salmoria foi o primeiro coordenador do projeto MAME em 5 de fevereiro de 1997 até 15 de maio de 2003, quando David Haywood assumiu  papel principal. Nicola entregou suas funções por um curto período de tempo em 1997, durante o qual Mirko Buffoni coordenou o projeto.

MAME corresponde ao acrônimo, de Multiple Arcade Machine Emulator, é um emulador gratuito e de código aberto projetado para recriar o hardware de sistemas de jogos de arcade via software em computadores pessoais modernos e outras plataformas. A intenção foi preservar o histórico de jogos impedindo que jogos antigos fossem perdidos ou esquecidos.
O objetivo do MAME é ser uma referência ao funcionamento interno das máquinas emuladas; a capacidade de realmente jogar os jogos é considerada "um bom efeito colateral"
As roms são "extraídas" das máquinas originais e esse documentário mostra como o processo é realizado:

Existem várias versões do MAME customizadas para windows, Uma boa versão brasileira é o projeto desenvolvido por Vicimaxx Gamers, e o projeto completo está disponível em sua página do facebook:[https://www.facebook.com/groups/547331172137401/]. 

O emulador pode ser adquido em: https://www.mamedev.org/release.php e configurado a sua maneira.

Para linux segue um tutorial simples para Ubuntu, Debian ou Mint
1) No terminal do linux adicione o repositório e instale o programa:
sudo add-apt-repository ppa:c.falco/mame -y
sudo apt-get update
sudo apt-get install mame

2) Edite o arquivo ini
gedit ~/.mame/mame.ini
Em rompath colocar o diretório onde as roms e bios serão salvas.



3)Crie os subdiretorios para funcionamento do emulador.
É necessário, para o funcionamento do emulador criar no diretŕoio ~/.mame os subdiretórios: nvram, sta, roms, memcard, inp, comments, snap e diff Esses diretórios podem ser criados manual na interface gráfica ou no terminal:
mkdir ~/.mame/nvram memcard roms inp comments sta snap diff

A versão vigente deste aplicativo em 03-04-2019 é a 0.208 e algumas roms mais antigas podem não funcionar,
para isso é necessário baixar uma lista atualizada das roms disponíveis


Algumas roms de NEOGEO podem não funionar para isso baixe esse arquivo na pasta rom, são as bios atualizadas:

A história dos emuladores é complexa e cheia de altos e baixos. Muitas pessoas fizeram descobertas extraordinárias, engenharia reversa e criação de novos programas e interfaces que permitiram a popularização e curadoria de vários jogos que poderiam ser esquecidos.
Segue outro artigo interessante que conta sobre desenvolvimento de um dos primeiros emuladores de NES: A história do NESticle, o ambicioso emulador que redefiniu os games retrô https://motherboard.vice.com/pt_br/article/ae5ek8/a-historia-do-nesticle-o-ambicioso-emulador-que-redefiniu-os-games-retro?utm_campaign=sharebutton

Let's Play!





Dificuldades no processo? Deixe suas dúvidas, sugestões e compartilhe sua experiência.
Obrigado e até a próxima
Juliano 
 [03/04/2019]


Referências


sexta-feira, 1 de março de 2019

Mednafen? Para que te quero? Uma ótima supresa para o sega saturn e PC engine....

As opções de programas que fazem a emulação de hardwares antigos é vasta, principalmente para os videogames. Os emuladores simulam  a função de executar programas desenvolvidos exclusivamente para plataforma proprietária em um computador pessoal. Essa característica é interessante pois a grande vantagem dos emuladores é, sem dúvida, rodar programas compilados para esses hardwares antigos que infelizmente depois de algum tempo deixaram de funcionar. O mesmo raciocínio pode ser aplicado para os jogos. Os jogos são os programas desenvolvidos e compilados para rodar de forma otimizada nesse hardware. Uma alternativa é o desenvolvimento de port's dos programas para máquinas modernas. Empresas como a  SEGA, por exemplo, fazem esse trabalho criando port's de seus jogos para as plataformas mais modernas como videogames, celulares e computadores pessoais. Entretanto uma dúvida sempre persiste, um port pode ser uma emulação?  A resposta é SIM! Muitos dos jogos antigos apresentam características que dificilmente seriam reproduzidas com ajustes para programas e máquinas modernas, pois estes foram produzidos para funcionar em outro hardware e na verdade um ajuste apenas recompilando o software seria muito caro e trabalhoso para empresa. As empresas visam lucro e para minimizar o custo e tempo elas usam como inspiração os emuladores desenvolvidos pela licenças GNU e GLP's para rodar os seus jogos(softwares) e lucrarem com a sua venda para diferentes plataformas. Muitos destes jogos seriam esquecidos ou ignorados pela comunidades caso não houvesse a emulação e pitaria. Sim, pirataria, esses jogos produzidos possuem uma proteção intelectual e custaram muito dinheiro para que uma empresa pudesse produzir e lucrar com esse produto.
Esse equilíbrio é interessante pois trata-se de um sistema simbiótico, Sem a emulação e pirataria, muitas pessoas não teriam acesso aos jogos e isso tornou a industria popular criando novas formas efetivas de rodar esses programas em máquinas modernas, muitas vezes revitalizando e mantendo o fator replay de vários jogos com speedRuns, save states, real-time game rewinding entre outros de forma gratuita e com qualidade porém as custas do trabalho de programadores e artistas que produziram esse jogos.
Do outro lado do espectro temos as empresas, que produziram e licenciaram vários jogos, criaram seus hardwares e softwares, tiveram seu lucros e perdas. Em um mercado novamente aquecido, as empresas querem ganhar com a curadoria destes jogos. As empresas possuem total direito de explorar economicamente tudo o que elas produziram, porém ela tem o direito de usar a emulação em seus produtos? O crime está ligado a distribuição gratuitas dos jogos e não a programação dos sistemas que recriam o ambiente que eles foram desenvolvidos. O mesmo vale para as BIOS que foram adquiridas do hardware proprietário, fundamentais para que esse software rode mediante a emulação.
Muitos emuladores foram criados e desenvolvidos e criaram uma base sólida,  com diversos fãs ao redor do mundo, porém a emulação tem alguns gargalos porque nem sempre reproduzem todos o chips e processadores de som e vídeo responsáveis por recriar a sensação igual ao jogo rodando no hardware original. Em alguns casos é necessário trocar o emulador para assim ter um resultado melhor na reprodução do jogo. Isso criou uma nova onda na emulação, agora os emuladores individuais foram agrupadas em frontends e interfaces gráficas simples para facilitar a reprodução de jogos.
Muitas bibliotecas e emuladores foram criados nesta "newwave" da emulação e agora uns dos maiores desafios é usar vários emuladores para encontrar a melhor alternativa para rodar o seu jogo da forma mais fidedigna possível . Nesse cenário surge o Mednafen:

Mednafen 
O Mednafen é um emulador, que utiliza o  OpenGL (uma API livre utilizada na computação gráfica, para desenvolvimento de aplicativos gráficos, ambientes 3D e jogos) e SDL (Simple DirectMedia Layer é uma biblioteca multimídia livre e de código aberto, multiplataforma, escrito em C que representa uma interface simples para gráficos, som, e dispositivos de entrada de várias plataformas).
O Mednafen pode ser executado em vários sistemas e possui uma interface simples que pode ser acionada por linhas de comando e utilizado como base em  bibliotecas do libreto:

  
O libretro é um um conjunto de emuladores e engines que permite que vários jogos sejam rodados por meio de uma interface gráfica unificada.

O mednafen é um poderoso emulador e tem a capacidade de remapear as teclas de atalho para emulação de jogos a partir de inputs de teclado e joystick.
Ele permite funções interessantes como save states, real-time game rewinding e screenshots de tela no formato de arquivo PNG. O Mednafen pode gravar filmes audiovisuais no formato QuickTime utilizando vários codecs compatíveis que garantem perda mínima de resolução durante a gravação do gameplay.

Os sistemas compatíveis com o mednafen são até o momento:
  • Apple II/II+
  • Atari Lynx
  • Neo Geo Pocket (Color)
  • WonderSwan
  • GameBoy (Color)
  • GameBoy Advance
  • Nintendo Entertainment System
  • Super Nintendo Entertainment System/Super Famicom
  • Virtual Boy
  • PC Engine/TurboGrafx 16 (CD)
  • SuperGrafx
  • PC-FX
  • Sega Game Gear
  • Sega Genesis/Megadrive
  • Sega Master System
  • Sega Saturn (roda em arquiteturas x86_64)
  • Sony PlayStation

E porque o mednafen é um bom programa para emular os meus jogos?

O mefnafen foi otimizado para diminuir o input lag de joysticks.

Como instalar o mednafen? No windows você precisa baixar e instalar a versão mais estável do aplicativo na página oficial:

https://mednafen.github.io/


No linux é muito mais simples, caso você seja usuário de Ubuntu ou Debian, basta instalar o programa via terminal:

sudo apt-get update
sudo apt-get install mednafen

O mednafen tem uma interface gráfica gtk2 o mednaffe:



Uma vez instalado o software precisa ser configurado. Existem vários blogs e vídeos que tem a função de ensinar a configurar o emulador segue um compilado geral:

Vamos jogar?

Para mostrar o poder deste emulador surpreendente gravei um vídeo da abertura de Radiant Silvergun (SEGA SATURN) rodando no mednafen/Linux, tirei o som do vídeo para não sofrer por direitos autorais mas o som ficou perfeito durante a emulação, porém o som do original continua melhor.

Outra supresa são os jogos de pc-engine / pc-engine CD que rodam com maestria nesse emulador.


Let's Play!

Imagem relacionada
Imagem relacionada




até a próxima!

Juliano
[02-03-2018]



Editado contribuição do Masato, obrigado pela força [editado 19-03-2019]


Agradecimentos pessoas que apoiaram esse artigo:
Masato CJAP - http://masatocollector.blogspot.com/ e https://www.youtube.com/user/TheMasatocollector/featured











domingo, 2 de dezembro de 2018

Projeto arcade portátil finalizado



Projeto arcade portátil finalizado =)


O projeto consiste em um arcade portátil baseado em uma placa Raspberry Pi 3 Model B+. A placa é extremamente versátil para os mais variados projetos como videogames, servidores de arquivos, câmeras de monitoramento e projetos embarcados. Os botões utilizados foram de acrílico estilo push botton Aegir. O manche foi do modelo eletromatic "cotonete".
 




https://produto.mercadolivre.com.br/MLB-1109682082-raspberry-pi-3-modelo-b-quadcore-12ghz-_JM







As caixas do projeto foram fabricadas com mdf preto com tampa de acrilíco e compradas no mercado livre. O acabamento apresentou elegância ao projeto e o vendedor ofereceu a opção de furações personalizadas:



Os controles montados podem ser parafusados juntos ou separados para facilitar o manuseio.

Os controles possuem placas zero delay e placa ópticas para as manetes




O projeto possui um controle "Master" (principal) e até 2 "Slaves"(escravos). O controle "Master" possui a placa Raspberry Pi montada na parte externa da caixa. O Raspberry pi 3  foi encapsulado em um case de plástico com 2 coolers e 3 dissipadores. O Raspberry pi 3, neste projeto fica externo a caixa, para reduzir o aquecimento da placa que ocorre rapidamente dentro do controle.


Em testes acompanhando a temperatura de operação a placa atinge temperaturas entre 40 e 56 °C. Projetos que usam o Raspberry PI dentro da caixa de controle precisam de coolers e furos auxiliares na caixa, aumentando o ruídos sonoros durante a refrigeração e reduzindo a troca de calor com o ambiente. A temperatura de trabalho da placa ocorre entre 45 e 70 °C dentro da caixa controle, com  refrigeração e furos adicionais para facilitar as trocas de calor com o ambiente. Portanto para melhorar a refrigeração a placa foi montada na parte externa do controle, dentro do case plástico com cooler e dissipadores citados melhorando a performance do projeto, pois o sistema consegue operar em temperaturas menores.



Os coolers foram alimentados pelos GPIO (general-purpose input/output) da placa (5V e GND):
Resultado de imagem para pin raspberry pi 3 b+


Existem também GPIO prontas para controles arcades, Kit Prototipagem Raspberry Pi GPIO:






Ao utilizar as GPIO, as placas zero delay dos controles não são necessárias, uma vez que o próprio Raspberry é usado para fazer os inputs de botão e alimentar a placa ótica. Isso representa uma economia no projeto e ambos os métodos resultam em excelentes input lag para o controle. O projeto usando as GIPO liberam as entradas usb para inserção de novos controles ou periféricos.
Entretanto para o meu projeto os controles foram montados com placas zero delay e podem ser usadas no PC, PS3 e PS4, aumentando a utilidade do sistema. Os controles são ligados via USB no controle "Master" e o cabo móvel inserido dentro da caixa do controle para evitar cabos soltos e aparentes. O recalbox possui fácil emparalhemento via bluetooth com controles de ps3.  Outros controles bluetooth ainda não possuem suporte nativo no sistema.
O Recalbox permite re-jogar uma variedade de consoles de videogame e plataformas. RecalboxOS é gratuito, de código aberto e projetado para permitir que o usuário crie um sistema ajustado as suas necessidades.
RecalboxOS é o sistema operacional do projeto recalbox, um console de emulação pronto para uso baseado no Raspberry Pi. A partir do Recalbox 4.1, as placas Odroid XU4 e C2, assim como o PC (32 e 64bits) são suportadas. [http://www.recalbox.com/]
O RecalboxOS é um compilado de vários programas. O frontend é EmulationStation2, https://emulationstation.org/ ele é o coração visual do sistema para a seleção dos jogos. Os principais emuladores são o piFBA [https://github.com/RetroPie/RetroPie-Setup/wiki/FinalBurn-Alpha] e Retroarch [https://www.retroarch.com/]. O RaspberryPI NOOBS foi escolhido como sistema de instalação / recuperação [https://www.raspberrypi.org/documentation/installation/noobs.md]. O recalboxOS é um sistema muito amigável sem configurações prévias de arquivos ou o uso ssh no terminal. Entretanto possui um arquivo de configuração tudo em um, chamado recalbox.conf, que fornece uma configuração precisa de todos os emuladores.
  • Suporta Atari 2600, Atari 7800, NES, Game Boy, Game Boy color, Game Boy Advance, Super Nintendo, Famicom Disk System, Master System, Megadrive (Gênesis), Gamegear, , NeoGeo, NeoGeo Pocket, FBA , iMame4all, PCEngine, Supergrafx, Amstrad, MSX1 / 2,  Sega Cd, Sega 32X, Sega SG1000, entre outros
  • Suporte Wi-Fi
  • Atualização online
  • Acesso à rede para a pasta ROM, screenshots, salva, arquivo de configuração (via SAMBA e HTTP-Webfrontend)
  • Configuração do controlador no frontend: configure uma vez, jogue em qualquer lugar
  • Suporte de controlador integrado para PS3, Xbox360, 8BitDo e Bluetooth (associe um controlador e reproduza)
  • Drivers GPIO compactos, para controles de arcade, ou controladores originais Nes, Snes, Megadrive, PSX
  • Música frontend fundo
  • Recurso Favoritos (marque seus jogos como favoritos e oculte outros)
  • Inglês, Francês, Espanhol, Alemão, Italiano e Português
  • Versão otimizada FBA com suporte para 4 jogadores
Para acionadar ou desligadar a GIPO dependem de modificações do arquivo recalbox.conf:

[https://github.com/recalbox/recalbox-os/wiki/Configure-recalbox-for-a-Bartop-or-Arcade-Cab-%28EN%29]

Entretanto, além do visual mais agradável, o recalbox possui menor delay para controles e jogos quando comparado com o lakka e hyperpie

[https://gameroomsolutions.com/hyperpie-setup/]

[http://www.lakka.tv/]

Outro  fator que inclinou na minha escolha pelo sistema foi a boa compatibilidade com o Retroachiements:


O Retroachievements é uma plataforma de emuladores que permitem aos usuários da comunidade criarem achievements (conquistas) nos games antigos semelhante ao Playstation e Xbox.

Essa característica aumenta significantemente o fator replay dos jogos, aumentando os desafios e o tempo total de gameplay.

O sistema RecalboxOS foi instalado em um cartão SD classe A de 32 GB. 


O sistema pode ser adquirido gratuitamente no site:

Raspberry Pi 3 rpi3
recalbox.img (sha1)
 
Para gravação simplificada no SD foi usado neste projeto um programa  compatível com windows/linux/mac bem intuitivo e fácil de usar o etcher:


Caso o processo envolver o uso de cartão SD usado é necessário formatá-lo antes da instalação da imagem usando o programa SD Memory Card Formatter 5.0.1 for SD/SDHC/SDXC


Para armazenar um número maior de jogos ligado ao Raspberry por conexão USB um HD externo de 500 GB. O HD foi inserido na parte interna do controle "Master" e o cabo dentro da caixa, escondido, trazendo boa estética para o projeto.



Uma propriedade interessante do RecalboxOS é a integração com servidores locais. O diretório SHARE é compartilhado em rede. Quando qualquer memória física externa e previamente formatado em fat32(windows/linux) ou ext2(linux) é plugada via USB , uma imagem clone das configurações é criada na unidade.No menu do recalbox é possível selecionar e alternar entre o uso do cartão SD o  a unidade de disco externa. Essa configuração também pode ser feita via terminal:
  
https://www.helviojunior.com.br/it/configurando-o-raspberry-para-iniciar-atraves-do-hd-externo/

Nesse disco podem ser inseridas as roms e bios correspondentes para os consoles de interesse. Alguns emuladores precisam de bios para emular os jogos corretamente. As bios podem ser adicionados ao recalboxOS  na pasta compartilhada em rede "bios" (via SAMBA) ou diretamente no cartão sd ou disco externo em /recalbox /share/bios/. As roms podem ser inseridas de forma análoga na pasta roms. Os diretórios são separados e organizados sistemas a serem emulados. 
Cada sistema tem sua bios correspondente conforme mostrado a seguir no wiki do recalbox:
[https://github.com/recalbox/recalbox-os/wiki/Add-system-bios-%28EN%29]
As bios e roms (jogos) podem ser encontradas em encontrados em diversos sites de emulação.

[https://drfone.wondershare.com/emulator/emulator-paradise.html] 





O resultado final gerou um "console" portátil, o projeto total custou aproximadamente R$ 850,00 reais, sem contar os itens comprados para testar as configurações. Existem empresas que fazem o mesmo trabalho por um preço equivalente, pois fazem em grande quantidade e conseguem reduzir os custos, porem o diferencial é a personalização do projeto.
Nesse projeto compartilho a experiência em montar um "console" e configura-lo do zero. Nada substitui o prazer de assoprar um cartucho, os chiados, ruídos na tela e o sons de um vídeo game original. Porém é uma forma saudosa de lembrar dos velhos tempos. Empresas como a sony, nintendo e SNK aproveitando a onda nostálgica lançaram seus emuladores oficiais na forma de mini-consoles, fornecendo uma maneira dentro da lei, para a aquisição de um pequeno conjunto de jogos:

[https://www.eurogamer.net/articles/digitalfoundry-2018-playstation-classic-review]

[https://en.wikipedia.org/wiki/Super_NES_Classic_Edition] 

[https://en.wikipedia.org/wiki/NES_Classic_Edition]

[https://www.snk-corp.co.jp/us/neogeomini/]

O uso do RecalboxOS é permitido por tratar-se de um free software, entretanto o uso de roms que não são backup de uma mídia física de um jogo configura num processo não amparado por lei, caracterizando pirataria. Isso inviabiliza a produção comercial de projetos semelhantes pelos jogos e licenças associadas. 

A experiência em fazer esse projeto foi única e ocupou meu tempo livre, um hobbie. Os estudos compilados até o momento para poder tornar tudo possível abriram minha mente para buscar novas aplicações e projetos para outros ramos além do entretenimento e podem servir como base para pessoas que querem ser autodidatas em computação e eletrônica. O resultado pode ser visto no vídeo a seguir:


No fator emulação, até o momento,Sega Saturn, Game Cube e algumas roms de Nintendo 64 apresentam restrições na plataforma. O Raspberry PI 3 apresenta algumas limitações da arquitetura ARM e gargalos na desenvolvimento e programação reduzindo drasticamente o frame rate nos jogos emulados.
Outro ponto negativo foi dificuldade na configuração de imagens para as roms associadas aos jogos que é um pouco trabalhoso e pode ser contornado seguindo essas instruções, ou baixando imagens de sistemas completos pré configurados:

Este artigo foi escrito em 02/12/2018, alguns links podem não funcionar com o tempo, caso encontre erros nos links ou sugestões coloquem nos comentários e caso for compartilhar divulgue que a informação saiu desse blog.

Um grande abraço e obrigado por ler até aqui. 
Novos projetos portáteis estão a caminho =)

Juliano
02/12/2018