Multijogos_caseira_30_04_08

29
Montando uma multijogos caseira. Sistema Operacional : Windows XP SP2 ( inglês ) Placa Mãe utilizada: M871G Memória: 512MB Disco : HD 40GB Vídeo: Nvidia FX5200 ( AGP ) A parte mais chata e complicada de uma multijgos é referente a parte de vídeo isso quando falamos de monitores árcades, por esse motivo eu recomendo que seja usado uma placa de vídeo offboard ( de preferência uma nvidia e com saída para TV isso porque se usado uma placa desse tipo teremos 3 opções de monitores que poderemos usar, pc, tv e árcade, as placas da ATI também são boas mas alguns modelos podem dar problemas com jogos 3D ao tentar deixar com um sinal de 15khz usado em monitores arcades ). Outro ponto que confunde muito é que tipo de controle usar ( teclado, hack de teclado, joystick na porta paralela ou USB, etc... ) , na minha opinião a mais rápida e menos trabalhosa são os joysticks de psx, pois são baratos fáceis de realizar manutenção e tem uma quantidade de botões suficientes para qualquer montagem desse tipo e quanto a ser adaptado por porta paralela ou USB a escolha fica ao seu critério ( lembrando que os adaptados pela USB usam menos recursos do sistema, isso porque eles terão seus controladores próprios e os adaptados pela porta paralela irão exigir mais trabalho do processador. ). A tão falada placa jama, essa nada mais é do que 3 circuitos em 1 ( áudio, joystick, junção do sincronismo ( esse ultimo se aplica somente a monitores árcades ) ). Imagens de uma placa adaptadora ( a que eu trabalho ). Primeira parte A primeira parte desse tutorial é referente ao sistema operacional, o windowsXP foi escolhido pela facilidade de uso e ter drivers atualizados, o que será mostrado aqui até daria para fazer com o windows98 o problema mesmo é que como ele foi descontinuado achar determinados drivers para ele seria difícil ou até mesmo impossível ( usando placas atuais ) , outro sistema operacional que é possível fazer é com o Linux ( mas isso vai ser tema para um próximo tutorial ). Instalando o windowsXP. Para fazermos as modificações o ideal é fazer uma instalação normal do windowsXP em um HD vazio ou então em um partição vazia. ( Atenção!!! não use as ferramentas que vão ser mostradas no sistema operacional que você está utilizando, ou terá problemas ). Depois de decidir onde vai colocar essa nova instalação, basta fazer a instalação normalmente, depois instale todos os drivers Page 1 of 29 Montando uma multijogos caseira 4/30/2008 file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Transcript of Multijogos_caseira_30_04_08

Montando uma multijogos caseira. Sistema Operacional : Windows XP SP2 ( inglês ) Placa Mãe utilizada: M871G Memória: 512MB Disco : HD 40GB Vídeo: Nvidia FX5200 ( AGP ) A parte mais chata e complicada de uma multijgos é referente a parte de vídeo isso quando falamos de monitores árcades, por esse motivo eu recomendo que seja usado uma placa de vídeo offboard ( de preferência uma nvidia e com saída para TV isso porque se usado uma placa desse tipo teremos 3 opções de monitores que poderemos usar, pc, tv e árcade, as placas da ATI também são boas mas alguns modelos podem dar problemas com jogos 3D ao tentar deixar com um sinal de 15khz usado em monitores arcades ). Outro ponto que confunde muito é que tipo de controle usar ( teclado, hack de teclado, joystick na porta paralela ou USB, etc... ) , na minha opinião a mais rápida e menos trabalhosa são os joysticks de psx, pois são baratos fáceis de realizar manutenção e tem uma quantidade de botões suficientes para qualquer montagem desse tipo e quanto a ser adaptado por porta paralela ou USB a escolha fica ao seu critério ( lembrando que os adaptados pela USB usam menos recursos do sistema, isso porque eles terão seus controladores próprios e os adaptados pela porta paralela irão exigir mais trabalho do processador. ). A tão falada placa jama, essa nada mais é do que 3 circuitos em 1 ( áudio, joystick, junção do sincronismo ( esse ultimo se aplica somente a monitores árcades ) ). Imagens de uma placa adaptadora ( a que eu trabalho ).

Primeira parte A primeira parte desse tutorial é referente ao sistema operacional, o windowsXP foi escolhido pela facilidade de uso e ter drivers atualizados, o que será mostrado aqui até daria para fazer com o windows98 o problema mesmo é que como ele foi descontinuado achar determinados drivers para ele seria difícil ou até mesmo impossível ( usando placas atuais ) , outro sistema operacional que é possível fazer é com o Linux ( mas isso vai ser tema para um próximo tutorial ). Instalando o windowsXP. Para fazermos as modificações o ideal é fazer uma instalação normal do windowsXP em um HD vazio ou então em um partição vazia. ( Atenção!!! não use as ferramentas que vão ser mostradas no sistema operacional que você está utilizando, ou terá problemas ). Depois de decidir onde vai colocar essa nova instalação, basta fazer a instalação normalmente, depois instale todos os drivers

Page 1 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

( som, vídeo, usb, etc... ) que irá usar, teste tudo para ver se está funcionando. Ferramenta que será usada para modificar o windowsXP. Para enxugarmos o WindowsXP iremos usar um utilitário chamado XPLITE ( http://www.litepc.com ), esse utilitário permite remover vários componentes do Windows sem deixar ele instável e é de fácil uso, para facilitar eu “upei“ ele para easy-share ( http://w16.easy-share.com/1700055131.html ) , esse utilitário não é grátis mas na versão “upada” contém um arquivo “.reg” que deve ser executado antes de abrir o XPLITE e que irá registrar o programa habilitando todas as suas funções. Esse utilitário não precisa de instalação para iniciá-lo basta clicar no executável. O pacote contém os seguintes arquivos:

• XPlite.exe ( o programa executável ) • XPlite.chm ( arquivo de ajuda ) • XPlite.cfg ( arquivo com as mofidicações que eu fiz ) • Readme ( termos de uso ) • License.reg ( crack para ativar o programa ) • Ghost.exe ( utilitário para clonar discos ou partições )

Nesse pacote eu não adicionei uma outra ferramenta pois existem vários tipos que trabalham de forma semelhante, trata-se de qualquer ferramenta que faça análises e correção no registro do Windows, isso é importante pois depois de usar o XPLITE irão ficar várias entradas órfãs no registro do Windows, que são aconselháveis retirar, eu particularmente gosto de usar o “ccleaner” ( http://www.ccleaner.com ). Iniciando as modificações:

Após ter instalado o sistema operacional e todos os drivers para sua placa, descompacte o pacote do XPLITE em uma pasta qualquer e clique no arquivo de registro ( Licence.reg ) para adicionar o conteúdo dele ao registro do Windows, com isso você terá uma cópia do XPLITE 100% funcional. Nesse ponto se você quiser pode iniciar suas próprias alterações para melhorar o desempenho, como por exemplo: ( remover o papel de parede e qualquer outra otimização que você conheça ). O que eu costumo fazer de imediato é:

Habilitar a visualização dos arquivos ocultos e de sistema ( Explorer )

Desabilitar a memória virtual ( isso se tiver pelos menos 512MB )

Page 2 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Desabilitar as configurações de efeitos visuais.

Remover o papel de parede Alterar as telas do windows ( welcome, ResHack )

Page 3 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Feitas as suas alterações chega a hora de iniciarmos o XPLITE ( !!! não esqueça de executar o arquivo de licença ), então vá até a pasta onde você descompactou o pacote postado e clique no ícone do XPLITE para executalo, caso seja mostrado alguma tela informando se você deseja fazer uma atualização basta clicar em "NO", a tela que deverá aparecer é a seguinte:

Agora clique no ícone ( 2 engrenagens ) de configuração ( ao lado do ícone ? no canto superior direito ) da barra de titulo, com isso irá ser exibido essa nova janela:

Deixe a janela configurada igual a imagem acima, a opção "Show Advanced...." irá mostrar mais opções que teremos acesso, e a opção "Warn If..." faz com que o XPLITE envie um aviso caso não consiga criar um ponto de restauração para as modificações realizadas e essa é uma das grandes vantagens desse utilitário, pois caso você remova algum componente que impeça o windows de iniciar normalmente, você terá a opção de inicar em modo de segurança e restaurar o registro, ao final de todas as modificações e teste então poderemos remover todos os pontos de restauração criados para livrar espaço. Apos ter configurado a sessão acima clique em "OK" para retornar a janela anterior ( principal ), e agora selecione a aba "Windows File Protection".

Page 4 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Nessa aba você deve selecionar a opção "Disabled" no quadro "Windows File Protection" e usar o botão deslizante no quadro "File cache Settings" para deixar ele em "0% 0MB". A primeira opção irá fazer com que o XPLITE desabilite o "Windows File Protections" se isso não for feito e você tentar remover qualquer arquivo da pasta "Windows" ou "System32", o windows irá imediatamente adicionar um novo arquivo para substituir o que foi deletado ou alterado. A segunda opção faz com que o XPLITE delete todo o conteúdo da pasta "c:\Windows\system32\DLLCache" o windows usa essa pasta para guardar vários arquivos para que você não tenha que colocar o CDROM de instalação a cada novo programa ou driver instalado e como essa pasta ocupa vários Megabytes, pode ser deletada sem risco ao sistema, e caso você instale algo que precise de arquivos extras basta colocar o CDROM de instalação e o problema estará resolvido. Importante!!! Após ajustar as opções mostradas acima você deve reiniciar o computador para que o "Windows File Protection" seja desabilitado. Depois de reiniciar o pc execute novamente o XPLITE e selecione a aba "Add/Remove Components", você irá ver essa janela:

Essa janela é a responsável por remover todos os componentes ( programas ) listados, repare que ao passa o mouse por qualquer opção você irá ver uma breve descrição do que será feito ( o ideal seria você ver item por item e pesquisar sobre cada um deles para saber no que a remoção dele afeta no sistema ), quando você tentar retirar um componente que pode causar alguma instabilidade no sistema o XPLITE irá te avisar sobre o risco, o mesmo acontece quando se tenta remover um componente que outros programas utilizam.

Page 5 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Como mencionei o ideal é conhecer um por dos componentes a serem retirados, embora que caso você remova algo errado sempre terá a opção de restaurar. No "pacote postado" eu coloquei a configuração que realizei aqui ( veja o arquivo xplite.cfg ), esse arquivo pode ser criado ou carregado no momento que você quiser:

Para salvar um arquivo de configuração com as opções que você selecionou, clique no ícone ( diskete, lado esquerdo ) e será exibido uma tela perguntando o nome que você quer dar para a configuração, e será salva no mesmo diretório onde se encontra o XPLITE. Para usar uma configuração salva ( como essa que eu criei ), clique no ícone ( Reload , setas formando um circulo ) e será mostrado uma lista com as configurações salvas.

Repare que nessa configuração que eu fiz eu deixei somente 38 componentes de um total de 162, com isso consegui deixar o sistema com apenas 420MB de espaço ocupado ( é possível remover bem mais, mas para isso é necessário que seja feito manualmente e conhecer o que cada arquivo representa para o sistema ou programas ).

Com a remoção desses componentes e mais algumas alterações nos serviços do winxp:

Page 6 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Deu pra chegar nessa configuração de processos em execução e uso da memória: ( repare que o pagefile.sys não é usado ( pois está desabilitado ) ).

Agora falta apenas adicionar mais algumas otimizações referentes ao desempenho e uso da memória que poderão ser feitas através de arquivos ".reg", assim que eu acabar de criá-los irei colocar para download, e explicar o que cada entrada de registro faz pelo sistema, caso você conheça alguma otimização ou arquivos que não são relevantes para o sistema fique à-vontade para postar no fórum ou adicionar/remover na sua instalação. Depois de pesquisar bastante acabei verificando que a maioria das otimizações encontradas e que são relevantes a melhoria do desempenho não são necessárias ou não tem uma base comprovada de melhorias, então fica aqui as que eu considerei necessárias ( lembrando... caso você conheça mais alguma que seja eficaz fique a vontade em adicioná-la ).

Page 7 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Fora essas otimizações outras alterações que irão aliviar tanto o processador quanto a memória física é a desabilitação de serviços que não terão utilidades na montagem, para isso não tem uma receita pronta pois pode variar de sistema para sistema dependendo do que foi instalado, a forma correta para se desabilitar esses serviços é conhecendo o que eles fazem e isso só estudando mesmo cada um deles, aqui no meu caso foram desabilitados os seguintes serviços:

DHCP DNS FASTUSER HTTP SSL IPSEC NETWORK CONNECTIONS NETWORK LOCATIONS PRINT SPOOLER PROTECTED STORAGE SERVER

Otimizações usadas no registroWindows Registry Editor Version 5.00 ;otimiza o boot abilitando a defragmentação [HKEY_LOCAL_MACHINE\software\microsoft\dfrg\bootoptimizefunction] "Enable"="Y" ;aloca um buffers maior para o arquivo a ser executado [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem] "ContigFileAllocSize"=dword:00000200 ;programas fechando mais rápido [HKEY_CURRENT_USER\Control Panel\Desktop] "AutoEndTasks"="1" "HungAppTimeout"="5000" "MenuShowDelay"="150" "PowerOffActive"="0" "PowerOffTimeOut"="0" "ScreenSaverIsSecure"="0" "ScreenSaveTimeOut"="0" "ScreenSaveActive"="0" "WaitToKillAppTimeout"="1000" ;para não ser mostrado a tela de welcome, pode ser abilitado o login automatico: ;com isso será mostrado somente uma tela rápida de entrada no sistema essa tela será mudada ( personalizada ). ;Na opção "DefaultPassword" deve ser colocado a senha correta que foi usada na instalação, ou caso não tenha usado então pode deixar da forma que está ( em branco ). [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "LogonType"=dword:00000000 "AutoAdminLogon"="1" "DefaultPassword"=""

Otimizações no system.ini, pode ser usado o comando sysedit. [386enh] 32BitDiskAccess=on 32BitFileAccess=on DMABufferSize=64 MinSPs=16 PageBuffers=32 ConservativeSwapfileUsage=1

Page 8 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

SHELL HARDWARE DETECTION THEMES WINDOWS TIME

Esses serviços mencionados foram todos "DESABILITADOS" pois iniciavam automaticamente o restante ficou como padrão ( AUTOMÁTICO ou MANUAL ). Removendo mais arquivos que não terão utilidade. O XPLITE remove uma grande quantidade de arquivos, mas mesmo assim ainda é possível remover mais alguns que não serão usados, os arquivos mencionados abaixo são encontrados em "c:\windows\system32".

Pasta HELP ( pode deletar todo o conteúdo ) Pasta INF ( pode deletar todo o conteúdo ) Pasta REPAIR ( pode deletar todo o conteúdo ) Pasta DLLCACHE ( ( pode deletar todo o conteúdo , se o xplite já não tiver feito ) Pasta PREFETCH ( pode deletar todo o conteúdo, se o xplite não tiver feito ) Delete também ( caso não vá utiliza-lo ) o "pagefile.sys" e "hiberfil.sys"

Uma ferramenta que podem ajudar a deixar a instalação bem mais limpas e é altamente recomendada éo [ Ccleaner, http://www.ccleaner.com ] Esse utilitário além de varrer o HD para limpar vários megabytes, também varre o registro do windows limpando chaves inválidas ou corrompidas. Essas são as dicas para deixar uma instalação limpa e otimizada ( pelo menos as que eu conheço ). Para por isso em prática eu usei uma hd vazia de 40GB, que foi reparticionada em 2 partes ( partição primária com 1GB e o restante 39GB para a segunda partição ), o tamanho da primeira partição irá depender da sua quantidade de memória, aqui eu pretendo usar 512MB e não irei utilizar o arquivo de troca ( pagefile.sys ), isso porque com esse esquema eu poderei colocar esse windows em um ( pendrive, compact flash, dvdrom, etc ). Personalizando o Boot do WinXP: Para personalizar o boot do windowsXP podemos criar uma imagem para ser mostrada ao invés do logotipo do windows, para isso é necessária criar uma imagem com o tamanho de 640x480 pixel, e essa imagem só pode usar uma paleta de cores de 8bits e essa paleta só pode ter 16 cores, qualquer outra imagem com uma especificação diferente não será exibida: A imagem criada de ser salva na pasta "WINDOWS" e ter o nome de "boot.bmp", feito isso agora basta colocar as opções de inicialização no arquivo "boot.ini" que se encontra na raiz da unidade "C:", as opções a serem acrescentadas são:

Amostra da minha tela de boot:

No arquivo boot.ini/bootlogo = Mostra o arquivo boot.bmp

/noguiboot = Não mostra o logotipo do windows no carregamento.

Exemplo de como ficou meu boot.ini com essas 2 opções:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /bootlogo /noguiboot

Page 9 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Proteger o sistema operacional. Todos os procedimentos mostrado acima foram para deixar uma instalação do winXP o mais leve e enxuta possível, e isso tudo para que essa instalação possa ser portada para um ( pendriver, compact flash, cdrom, dvdrom, etc...), pois com isso poderiamos criar uma multijogos com por exemplo somente um ( pendrive+cdrom ou pendrive+hd ou somente um DVDROM ). Mas para isso é necessario fazer mais algumas modificações no sistema pois dá forma que ele está somente seria possível colocá-lo em um compact-flash ou pendriver ( ou seja uma media regravavél ), e mesmo assim se for usado esse tipo de dispositivo o windows em pouco tempo irá danificar eles ou ter arquivos corrompidos. Para quem não sabe esses dispositivos ( compact-flash e pendrive ) tem um tempo de vida ( ciclos de gravação ) embora que pelas especificações dos fabricantes pareçam ser bem longas mas na prática não são ( o winxp irá gravar com muita freqüência no dispositivo ), mesmo que o esquema mostrado acima seja gravado em um HD sempre se corre o risco de ter um arquivo corrompido com uma queda de energia, o único esquema que protege os dados seria a gravação em cdrom ou dvdrom ( os chamados live-cds ) Para resolver os problema citados acima irei mostrar uma forma de proteger o sistema operacional contra gravação ( ou permitir que ele seja gravado em um cdrom ou dvdrom ), o procedimento a ser mostrado trata-se de uma espécie de gambiarra que foi adaptada do sistema "Windows XP para dispositivos embarcados", os procedimentos mostrados aqui foram retirados do site http://www.mp3car.com/vbulletin/winnt-based/37078-using-ewf-regular-winxp.html, e testadas com sucesso. O procedimento mostrado no site irá fazer com que toda a gravação que o winxp costuma fazer no HD seja redirecionada para um espaço na memória ram, ou seja o procedimento irá enganar o winxp fazendo com que ele pense que está usando um HD mas na realidade todas as operações de gravação são desviada para uma área na memória RAM, você pode até criar ou copiar um arquivo para o ( HD, pendrive, etc..), mas assim que o pc for reiniciado você irá ver que na realidade o arquivo não foi salvo dentro do dispositivo. Para fazer esse esquema são necessários os seguintes arquivos:

Ewf.sys ( drive ) Ewfntldr ( inicializador do windows ) Ewfmgr.exe ( programa para gerenciar o Ewf.sys)

Esses software são encontrados no pacote do "WindowsXP Embedded", para adquirir uma cópia basta baixar a versão "trial" no site da microsoft. Os procedimentos mostrados a seguir devem ser feitos depois que tudo estiver instalado e configurado. Primeiro renomeie o arquivo "Ewfntldr" para "ntldr" esse arquivo deve ficar na raiz do HD ( repare que já irá existir um que é o original do winxp, então renomeie esse original para qualquer outro nome por exemplo ntldr_bak ). Agora copie o "Ewf.sys" para a pasta "c:\windows\ system32\drivers", e por fim o arquivo "Ewfmgr.exe" para a pasta "c:\windows\system32". Agora devemos fazer varias alterações no registro do para ativar o "Ewf", para que o registro permita fazer tais alterações é necessário habilitar a permissão de acesso ao resgistro, para isso abra o editor de registro "regedit", selecione a chave do registro

Page 10 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

"HKEY_LOCAL_MACHINE" e de um clique com o botão direto sobre essa chave, com isso você irá ver esse menu:

Agora selecione a opção "Permissions..." e clique nessa opção, e verá essa outra janela:

Agora selecione a opção "Everyone" e marque a caixa "Full Control", com isso você estará abilitando para que qualquer pessoa possa fazer alterações nessa chave de registro, isso é necessário pois agora irei postar uma lista de modificações que deverão ser feitas e essa lista pode ser copiada no "bloco de notas" do windows e salva com a extenção ".reg" e com isso ao invés de ter que criar ou alterar certas chaves ou dados bastará dar um duplo clique no arquivo salvo e o editor de registro irá adicionar tudo automaticamente.

Lista de alterações

Windows Registry Editor Version 5.00

Page 11 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Depois de criar o arquivo ".reg" e adiciona-lo ao registro de uma pesquisada nas chaves mostradas e verifique se todas foram criadas ou alteradas e se estão com os valores iguais a tabela acima, caso alguma chave não tenha sido alterada ou criada então faça isso manualmente usando o "regedit". Depois de verificar se tudo ficou correto com o registro então chega a hora de reiniciar o computador para que as alterações tenham efeito. Depois de reiniciar iremos agora verificar se o filtro "EWF" está funcionando corretamente, para isso abra o prompt de comando "cmd.exe" e digite: c:>ewfmgr.exe c: Com isso você verá uma descrição como a mostrada nessa imagem:

;mp3car é necessario clicar com o botão direito e habilitar o previlegio no editor de registro [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF] "NextInstance"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF\0000] "Service"="EWF" "Legacy"=dword:00000001 "ConfigFlags"=dword:00000020 "Class"="LegacyDriver" "ClassGUID"="{8ECC055D-047F-11D1-A537-0000F8753ED1}" "DeviceDesc"="EWF" "Capabilities"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF\0000\Control] "ActiveService"="EWF" ;ms [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf] "ErrorControl"=dword:00000001 "Group"="System Bus Extender" "Start"=dword:00000000 "Type"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F}] "UpperFilters"="Ewf" [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf\Parameters] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf\Parameters\Protected] [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf\Parameters\Protected\Volume0] "VolumeID"="{1EA414D1-6760-4625-8CBE-4F9F85A48E15}" "Type"=dword:00000001 "ArcName"="multi(0)disk(0)rdisk(0)partition(1)" ;Disabling Last Access Time Stamps [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem] "NtfsDisableLastAccessUpdate"=dword:00000001 ;Background Disk Defragmentation Disable [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction] "Enable"="N" ;Disable Background auto-layout [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OptimalLayout] "EnableAutoLayout"=dword:00000000 ;To disable prefetch [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters] "EnablePrefetcher"=dword:00000000

Page 12 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Nessa janela o que devemos observar as informações "Type" e "State":

Type: informa o tipo de filtro que o "EWF" está aplicando na sua instalação, são 3 tipos possíveis ( veja no site os tipos existentes ) State: informa o estado do filtro "Enabled" ou "Disabled", quando está "Enabled" significa que o filtro está habilitado, e com isso qualquer tipo de gravação no dispositivo será desviada para uma área na memória ram.

Se você quiser fazer um teste abra o bloco de notas e salve o documento corrente para o HD, se quiser também pode renomear algum arquivo ou copiar algum arquivo para a unidade { C: }, depois reinicie o computador e verá que os arquivos não estarão mais lá e que o arquivo renomeado voltou a ter o nome original. Como já foi mencionado o programa "Ewfmgr.exe" é quem controla o filtro, para ver as opções possíveis digite no prompt "ewfmgr.exe /?" e será mostrado uma lista com as opções disponíveis. As principais são:

Enable ( habilita o filtro no próximo boot ) Disable ( desabilita o filtro no próximo boot) Commit ( grava os dados para o disco ) CommitAndDisable ( grava os dados e desabilita o filtro imediatamente )

Fora isso ainda é possível criar programas ou scripts usando a API do EWF para manipular esse filtro, para isso veja no site as documentação avaliada, fora isso na documentação você irá encontrar tudo que precisa para criar um CD ou DVD ou pendrive bootavel, Esse é o final do tutorial referente a personalização do winxp para a multijogos planejada.

Segunda Parte: Depois das otimizações do registro será iniciado a adição do front-end e de um emulador por vez, isso porque eles serão adicionados como uma espécie de modulo independente onde um não afeta o funcionamento do outro ou do front-end, e com isso irá facilitar na hora de adicionar ou não um determinado emulador. O front-end que irei usar é advanceMenu, e o motivo é que ele não precisa de instalação é possível colocar qualquer emulador ou programa para ele gerenciar e por ser o único que reproduz os arquivos de vídeo produzidos pelo mame. Para ajudar o advanceMenu será usado um script para cada emulador adicionado esses scripts irão fazer o trabalho de enviar teclas para o emulador e outras tarefas que não é possivel fazer só com o advanceMenu. A versão do advanceMenu que irei postar por enquanto tem as seguintes alterações:

Será usado os seguintes botoes do joystick1, caso queira usar um teclado, as teclas continuam as padrões do advanceMenu:

Page 13 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Botão2 ( troca de emulador ) Botão3 ( muda o formato da lista, por exemplo de lista para imagens ) Botão7 ( Ficha, o advanceMenu poderá trabalhar de 2 formas, 1º somente permite chamar um jogo caso haja ficha, 2º modo convencional ) Botão8 ( Carrega o jogo selecionado ) Botão9 ( Fecha o advanceMenu ) Botão10 ( Abre o menu de opções )

Poderá ser criado uma tela de fundo para cada emulador, ou seja ao trocar de emulador a imagem será mudada imediatamente. Ao depositar uma ficha será tocado um som apropriado ou uma mensagem de voz no formato ".wav" O advanceMenu terá uma opção ( caso esteja habilitada) que só irá permitir o carregamento do jogo caso haja uma ficha. Todas as fichas depositadas irão para um banco de dados ( arquivo .ini ), com isso mesmo desligando a máquina as fichas não jogadas continuarão guardadas. O advanceMenu irá trabalhar de forma transparente tanto com jogos de ( Habilidade arcade ) quanto os de ( Tempo video games ), ou seja depois de definido ( quanto Tempo uma Ficha irá valer ), tanto faz o jogador depositar uma ficha que ela será válida em qualquer um dos modos, por exemplo se ele depositar uma ficha e chamar um jogo de "Video Game" ele poderá jogar normalmente e voltar a qualquer hora para o advanceMenu e selecionar outro jogo até que o tempo se esgote. O advanceMenu foi programado para saber o tempo que resta então caso o jogador coloque uma ficha e jogue um jogo de "Video Game" por alguns minutos e depois volte ao advanceMenu e tente jogar o resto do tempo em um jogo de "Arcade", o advanceMenu não irá permitir a menos que ele deposite mais uma ficha, nesse caso o jogador poderá jogar o game de "Arcade" e depois poderá retornar ao advanceMenu e gastar o tempo que tinha sobrado da ficha anterior em qualquer outro jogo de "Video Game".

Continuação.... Aqui iremos começar com a parte de organização das pastas, com isso ficará mais fácil distribuir os pacotes para serem encaixados um a um. Imagem de como eu organizei as minhas pastas ( algumas mostradas nessa imagem não serão usadas ).

A estrutura será da seguinte forma ( ela pode ser alterada do momento que você alterar as configurações dos emuladores e scripts ).

Pasta ARCADE, irá conter todas as outras pastas, ou seja é a pasta raiz. Pasta AUXILIAR,irá conter ( por enquanto ) 3 subpastas que irão conter arquivos de som, imagem, fontes. Pasta BACKUP, irá conter uma cópia de segurança das principais configurações. Pasta JOGOS, irá conter uma subpasta para cada tipo de sistema ( neogeo, capcom, outros, zinc, model2, supernes, mega, etc...), em resumo nessa pasta será armazenado todos os jogos divididos por sistema. Pasta SNAP, irá conter várias subpastas com as fotos/imagens/videos dos jogos de cada sistema. Pasta SCRIPTS, nessa pasta serão colocados os códigos fonte de todos os scripts ( autoIT ) utilizados, com isso será fácil para localizar, modificar, adaptar conforme a necessidade. Pasta JOYTOKEY, nessa pasta contém o programa joytokey, que permite simular teclas através de botões de joystick,

Page 14 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

esse programa foi escolhido porque trabalha muito bem em conjunto com o mame, e irá facilitar bastante na construção dos scripts.

No pacote que irei posta o link logo abaixo, já irá se encarregar de criar uma parte da estrutura mencionada, bastando escolher uma partição e descompactar. Mas antes disso vou explicar um pouco sobre as alterações feitas no advanceMENU.

Como já mencionei a intenção é fazer o advanceMENU suportar vários sistemas diferentes, para isso cada sistema terá sua tela de fundo personalizada ( no pacote abaixo contém algumas que eu uso atualmente ), e para navegar entre os sistemas é utilizado o botão2 do joystick ou caso esteja usando um teclado a tecla { F6 }, ao mudar de um sistema para outro a tela de fundo correspondente ao sistema será mostrada. Também foi adicionado um sistema de fichas no advanceMENU que é inteligente o bastante para converter uma ficha em tempo e vice-versa, e por esse motivo que se torna necessário o uso de um script para cada emulador, pois eles que irão atualizar os contadores de ficha, as fichas depositadas tanto no advanceMENU quanto nos emuladores serão armazenadas em um arquivo simples do tipo ".ini" mas precisamente "advmenu.ini" na pasta principal, ou seja uma vez depositada uma ficha ela é guardada em disco e mesmo desligando a maquina as fichas não usadas não serão perdidas, e para utilizar uma ficha depositada basta pressionar o botão { START }, com isso o script irá verificar se existe uma ficha no banco de dados e em caso positivo irá enviar ao emulador ( nota: esse esquema pode ser modificado, mas como aqui se trata de uma montagem para uso caseiro eu creio que não há problemas ). Bloqueio, foi adicionado uma opção chamada "BLOQUEADO" dentro do arquivo "advmenu.ini" , que se modificada para o valor de "1", só irá permitir o carregamento do jogo caso tenha pelo menos uma ficha depositada, essa opção só seria útil em maquinas para uso comercial, mas para nível de curiosidade resolvi adicionar essa opção, então caso queira testar basta editar o advmenu.ini que é um arquivo de texto puro e modificar o valor de zero para um. Na parte de video game ( ainda não está pronto os scripts ), você poderá retornar a qualquer momento para o advanceMENU e selecionar outro jogo até o termino do tempo, caso haja tempo equivalente a uma ficha você poderá selecionar até um jogo arcade, caso contrário poderá jogar o tempo restante somente em um jogo de video game, para isso ser possível foi adicionado um código que converte o tempo em ficha e a ficha em tempo, essa configuração pode ser modificada no "advmenu.ini" na opção "TEMPOPORFICHA" , o padrão dela é "600000" que equivale a 10 minutos, esse tempo é calculado em milésimos de segundos, essa é mais uma opção que só é útil em maquinas comerciais, só foi adicionada a nível de curiosidade. Sons, ao se depositar uma ficha é tocado um arquivo ".wav" que indicará o depósito da ficha, caso a opção "BLOQUEADO" esteja ativa será reproduzido uma mensagem de voz pedindo o depósito de uma ficha, o mesmo se aplica quanto a várias mensagens do sistema. O arquivo "advmenu.rc" está todo comentado para facilitar a personalização ( cores, formato da lista, sons, etc...), como pode ser reparado na imagem acima foram retirados algumas informações que são mostradas por padrão no advanceMENU, foram deixadas apenas as que são vistas na imagem. Ainda no advanceMENU será criado uma série de scripts ( serão feitos conforme a necessidade ) para facilitar a

Page 15 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

manutenção, esses scripts poderão ser acessados através do menu e somente com um teclado.

Observação: As modificações mencionadas e os scripts disponibilizados só irão funcionar com a versão do emulador encontrada no pacote ( brmamep.exe v124u2 ), isso porque as versões distribuídas são compiladas com opções diferentes e elas não irão aceitar os scripts. Para testar o pacote, basta colocar pelo menos uma rom de cada sistema nas suas devidas pastas ( neogeo, capcom, outros ) e executar o advmenu.exe. Outra observação importante é em relação a resolução, eu configurei o advanceMENU para 640x480, isso porque quando chegarmos a última parte do tutorial será mostrado algumas formas de como passar a imagem vista no monitor do pc para um monitor arcade, ou mesmo que seja na tv essa resolução é o suficiente, e dependendo da placa de vídeo utilizada outra resolução torna inviável, outra coisa é que a imagem de fundo e o menu foram ajustados para trabalharem com essa resolução, mas mesmo assim nada impede de você alterá-la, por exemplo aqui eu deixo em 1024x768 enquanto estou testanto, para alterar a resolução basta editar o arquivo "advmenu.rc" e alterar a opção "display_size 640" para a resolução desejada, por exemplo "display_size 1024" Mais um ponto a observar é a pasta "artwork" na pasta do mame, dentro dela eu deixei um arquivo de nome "1941.zip", esse arquivo é o chamado "BEZEL", esse arquivo contém uma imagem que será usada para cobrir as bordas laterais que aparecem em jogos "verticais" como o jogo "1941 Counter Attack", esse arquivo é apenas uma demonstração e com ele é possível fazer um "BEZEL" padronizado para todos os jogos verticais de uma forma rápida e automatizada via script, mas caso você tenha paciência os "BEZEL" original de cada jogo vertical pode ser encontrado na net. Link: ARCADE.RAR ( http://w15.easy-share.com/1700219904.html )o pacote contém os primeiros arquivos para montagem, para ter a estrutura mencionada anteriormente basta descompactar ele em uma partição a seu gosto, com isso será criado uma pasta chamada "ARCADE" com várias subpastas e os arquivos mencionados, não esqueça se for testar coloque uma rom de cada sistema na pasta correta ou então altere a configuração "rompath" do emulador, o código fonte do script responsável por controlar o mame está na pasta "SCRIPTS". Depois de ter mencionado sobre os BEZEL resolvi fazer um script para facilitar a criação deles, o script ( source-code, executável, outros ) podem ser baixados no link: http://w14.easy-share.com/1700234264.html, o resultado obtido usando BEZEL é a imagem abaixo.

Fornecendo os parâmetros pedidos pelo script ele irá um bezel para cada rom que você tiver e que precisar. Continuação...

Page 16 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Nesse ponto irei explicar um pouco sobre as configurações usadas no advmenu.rc, joytokey e o script., isso porque se você entender o conceito irá conseguir adicionar qualquer emulador, programa, jogo de pc, etc... no advanceMENU, e o meu principal objetivo será incentivar o aprendizado principalmente da linguagem de script autoIT, porque se você dominar ela conseguirá fazer muitas coisas de forma rápida e fácil. Em primeiro lugar se você editar o arquivo advmenu.rc irá encontrar as seguintes linhas que fazem com que seja adicionado o emulador mame. #emulador mame #*********************************************** emulator "ARCADE" generic ".\mame\aumame.exe" "%s" emulator_roms "ARCADE" "..\jogos\outros" emulator_roms_filter "ARCADE" "*.zip" emulator_altss "ARCADE" "..\snap\arcade;..\mng" ARCADE/preview snap arcade/mode list arcade/sort name emulator_attrib "ARCADE" missing exclude #*********************************************** Explicando linha por linha:

#emulador mame, toda linha que começar com o caracter [ # ] é tratado como um comentário, ou seja oque estiver escrito depois dele será totalmente ignorado pelo advanceMENU, isso serve para documentar o advmenu.rc. emulator "ARCADE" generic ".\mame\aumame.exe" "%s", a opção "emulator" é usada para dar um apelido ao emulador, repare que o arquivo executável é o "aumame.exe", mas ele só é mencionado uma vez e todas as outras opções usa o apelido "ARCADE" ao invés do nome real do executável, a palavra "generic" informa para o advanceMENU que iremos usar um emulador que ele não conhece e com isso a única coisa que ele deve fazer é chamar o executável informado e passar o parâmetro informado na opção "%s" que significa o nome da rom, então para que tudo funcione como o esperado devemos ter um emulador na pasta ".\mame" e que se chame "aumame.exe", fora isso devemos ter um arquivo no diretório corrente com a lista dos jogos e com o mesmo apelido dado ao emulador e com a extenção "LST", no nosso caso é "ARCADE.LST", caso não seja encontrado esse arquivo no diretório corrente o advanceMENU irá mostrar na lista o nome da rom ao invés do nome do jogo. emulator_roms "ARCADE" "..\jogos\outros", essa opção irá informar ao advanceMENU onde as roms estão localizadas, caso não seja informado ou o caminho esteja incorreto o advanceMENU irá mostrar uma mensagem informando. emulator_roms_filter "ARCADE" "*.zip", essa opção irá fazer com que o advanceMENU filtre os arquivos que estiverem na pasta das roms, fazendo com que sejam reconhecidos somentes os arquivos com a extenção ".zip" qualquer outro arquivo com uma extenção diferente será ignorado e não será adicionado na lista. emulator_altss "ARCADE" "..\snap\arcade;..\mng", essa opção informa ao advanceMENU onde estão localizados as fotos ou videos dos jogos. ARCADE/preview snap, essa opção informa que o advanceMENU deverá mostrar as fotos ou vídeos informados na opção anterior. arcade/mode list, essa opção informa como o advanceMENU deverá mostrar a lista, existem vários modos possíveis para esse tutorial eu deixei somente 2 modos habilitados que são o normal ( lista ) e o modo ( imagem ) onde é mostrado 12 imagens pequenas com o nome do jogo. arcade/sort name, essa opção trabalha em conjunto com a anterior, ela faz com que seja mostrado somente o nome do jogo. emulator_attrib "ARCADE" missing exclude, essa opção informa ao advanceMENU que jogos que não forem encontrados mas mesmo estando na lista não devem ser mostrados.

Essas opções é tudo o que se precisa para adicionar qualquer emulador ao advanceMENU, bastando alterar a opção "emulador" para um nome diferente de um já usado, e informando onde se localiza esse novo emulador e onde se encontram suas roms. O joytokey como já foi mencionado e como o próprio nome sugere, ele emula teclas a partir de botões de joystick, no fórum já existe um tutorial a respeito então não vou explicar como ele funciona, aqui vale apenas informar como ele está sendo usado, e para isso basta editar um dos scripts fornecidos e verificar a linha onde ele está sendo chamado, se você reparar no script "aumame.au3" irá ver que é passado para o joytokey o parâmetro "mame" que significa que ele deve carregar o arquivo de configuração que se encontra na pasta dele com o nome "mame.cfg" nesse arquivo contém as configurações de teclas atribuídas a cada botão do joystick. E por fim os scripts, essa é a parte principal de todo o projeto pois são eles que permitem a adição de qualquer emulador ou programa e controlam como eles devem se comportar junto ao advanceMENU, os scripts usados no projeto são todos usando a linguagem de script AutoIT, a grande vantagem desses scripts é que eles podem ser compilados transformando-os em arquivos executáveis e sem a necessidade de arquivos extras ( DLLs ), fora isso é facil de distribuir e de fácil aprendizado e o melhor de tudo é grátis. Essa linguagem pode ser encontrada do site dos autores "http://www.autoitscript.com/autoit3/scite/", o AutoIT é o

Page 17 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

compilador r interpretador em sí, e o SciTE4AutoIt3 é o editor de script para o AutoIT, contém uma interface gráfica e um arquivo de ajuda muito bem organizado e com muito exemplos práticos, fora isso você pode ser cadastrar no fórum onde tem centenas de exemplos prontos para serem compilados e usados.

Adicionando o emulador ZINC ao advanceMENU

O próximo emulador a ser inserido será o ZINC.EXE, para quem não conhece é o melhor emulador para as placas arcades baseadas no playstation 1, o mame tamém emula esses jogos mas como ele não usa aceleração 3D os jogos ficam lentos ou para rodar numa velocidade razoável é necessário um processador muito potente, a imagem abaixo mostra alguns jogos emulados por ele:

O script que irá controlar ele segue a mesma linha do "aumame.au3", com umas pequenas modificações veja as diferenças:

O para rodar um jogo no zinc é necessário passar o numero do jogo e não o nome da rom como no mame. Os botões usado pelo zinc são diferentes do mame, então foi feito um novo CFG para o joytokey. Alguns jogos do zinc (por exemplo: Tekken ) precisam do arquivo "pr1data.8k" e ele deve estar em "C:\", caso contrário o jogo não roda, então o script irá se encarregar de verificar e copiar esse arquivo caso precise para o local correto. O som emulado pelo zinc é muito mais alto que o mame, para isso foi adicionado uma função que irá regular o som conforme o jogo chamado, para isso basta editar o arquivo "auZinc.ini" e na opção "volume" colocar o valor correto para cada jogo, esse valor vai de 1 até 24, e quanto maior esse valor mais baixo será o som, então para testar abra um jogo do mame veja como está a altura do volume e depois abra um jogo do zinc, caso o volume esteja muito alto então edite o arquivo "auZinc.ini" e almente o valor da opção "VOLUME", pelo meus teste os jogos que tem uma diferença muito alta em relação ao mame são os jogos da capcom "Street fighter EX, etc...", já os "Tekken" tem a altura similar ao mame podendo então ficar com a opção "VOLUME=1" e os "Streets..." com "VOLUME=12" ou mais.

Para quem não está acostumado com o zinc ele usa um arquivo de configuração que contém as linhas de comandos a serem passadas para ele, isso facilita bastante porque as linhas de comandos são grandes e com isso só é necessário passar apenas uma que é a localização desse arquivo de configuração "--use-config-file=.\config.cfg", essa linha já foi inserida no script então para alterar alguma coisa basta editar o arquivo "config.cfg" que está na pasta do zinc, por exemplo aqui eu uso o seguinte caminho para as roms ".\arcade\jogos\zinc10" então se você editar o arquivo mencionado irá encontrar esse parâmetro, e caso use uma pasta diferente será lá onde você deve editar, o mesmo se aplica a resolução de vídeo o arquivo responsável por controlar é o "renderer.cfg". Para adicionar esse emulador ao advanceMENU insira as seguintes linhas no advmenu.rc:

Page 18 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Como você pode ver as opções são praticamente idênticas ao do mame, mudando apenas o nome do executável e o nome das pasta onde se localiza as roms, imagens. O novo pacote contém a mesma estrutura de pasta do anterior, então basta descompactar na mesma unidade do pacote anterior e os novos arquivos serão copiados para as pastas corretas ( isso se você estiver seguindo o esquema de pasta mencionado ), nesse pacote contém somente os novos arquivos:

Pasta com o emulador zinc.exe e todos os arquivos necessários ( menos as roms ) Mais um arquivo de configuração para o joytokey ( zinc.cfg ) Source code do script que controla o zinc "auzinc.au3"

Link do pacote para o emulador zinc: "http://w15.easy-share.com/1700256022.html" Continuando... Com o segundo pacote eu creio que ficou mais fácil de entender como funciona a adição de novos emuladores no advanceMENU, ou seja basta dar um apelido para o novo emulador e configurar as opções de localização desse novo emulador, localização das roms e localização das fotos e estando no advanceMENU basta usar a tecla [ F6 ] ou o botão2 do joystick para alternar entre os emuladores instalados, então nesse ponto vou abrir mais um espaço para explicar mais algumas configurações úteis no advanceMENU que irá ajudar a organizar a lista de jogos e facilitar a manutenção. O advanceMENU trabalha com o esquema de organização dos jogos baseado em "GRUPOS" e "TIPOS", ao editar o arquivo "advmenu.rc" poderemos encontrar as seguintes linhas group "<MULTIJOGOS>", group "REMOVIDOS", group "BIOS", essas linhas informam ao advanceMENU que ele deve criar na entrada do "MENU" 3 grupos com os nomes mencionados entre as aspas, isso irá servir para que possamos adicionar ou remover jogos de uma forma rápida e simples, o grupo "<MULTIJOGOS>" é criado por padrão e qualquer jogo que não pertencer a esse grupo não será mostrado na lista, isso é útil na seguinte ocasião: na lista de jogos do ZINC por exemplo irão aparecer alguns nomes que não são jogos e sim as bios necessárias para o jogo poder carregar ( atluspsx, cpzn1, cpzn2, etc... ), então para que esses nomes não sejam mostrados na lista podemos atribuir essas bios a um grupo diferente dos jogos, para isso basta para em cima do nome na lista de jogos e teclar [ F9 ], com isso irá abrir o menu de "GRUPOS" e então selecionar o grupo "BIOS" e teclar [ ENTER ], com isso o jogo selecionado agora irá fazer parte desse grupo e como ele está marcado para não ser mostrado o advanceMENU irá retirar ele da lista de jogos. Esse esse método pode ser aplicado para qualquer jogo que você não goste, e para nível de organização foi criado o grupo "REMOVIDOS" que poder ser utilizado para colocar os jogos que você queira tirar da lista principal, em resumo a organização dos jogos irão ficar assim:

Grupo "<MULTIJOGOS>" , todos os jogos que devem aparecer na lista Grupo "BIOS", colocar todas as bios nesse grupo, para que não aparecem na lista Grupo "REMOVIDOS", colocar nesse grupo todos os jogos que você deseja retirar da lista.

Como o objetivo será adicionar vários emuladores nada impede de você criar vários outros grupos para organizar seus jogos, por exemplo quando colocarmos os emuladores de video games poderíamos adicionar mais um grupo para cada emulador e nesse novo grupo colocar os jogos que não devam ser mostrados na lista, um exemplo de grupo para um emulador de super nintendo

advmenu.rc#emulador zinc

#***********************************************

emulator "ZINC3D" generic ".\zinc\auzinc.exe" "%s"

emulator_roms "ZINC3D" "..\jogos\zinc10"

emulator_altss "ZINC3D" "..\snap\zinc10;..\mng"

#***********************************************

ZINC3D/preview snap

zinc3d/mode list

zinc3d/sort name

emulator_attrib "ZINC3D" missing exclude

Page 19 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

poderia ser "SNES REMOVIDO", com isso iremos ter os jogos bons no grupo "<MULTIJOGOS>" e os ruins de arcade no grupo "REMOVIDOS" e os ruins de super nintendo no grupo "SNES REMOVIDOS". A opção no advanceMENU que controla os grupos que devem ser mostrados ou não é a opção "group_include", levando em conta os exemplos mostrados acima bastaria ter a seguinte opção no arquivo "advmenu.rc" para mostrar uma lista com os jogos pertencentes ao grupo "<MULTIJOGOS>":

group_include "<MULTIJOGOS>"

Com isso todos os jogos pertencentes a outros grupos não serão mostrados, e para fazer ao contrário ou seja pegar um jogo removido e retorna-lo ao grupo "<MULTIJOGOS>" , basta teclar [ F2 ] e adicionar o grupo a lista. Quando você adiciona um jogo a um grupo diferente do grupo "<MULTIJOGOS>" o advanceMENU irá gravar dentro do "advmenu.rc" uma linha indicando a alteração, a linha será algo semelhante há: game "ZINC3D/cpzn1" "BIOS" "" 670 7 "" Essa linha é interpretada pelo advanceMENU dá seguinte forma:

game , valor padrão para todas as entradas. "ZINC3D/cpzn1", apelido do emulador mais o nome da rom. "BIOS", nome do grupo que a rom pertence. "", nome do tipo que essa rom pertence, como não atribuímos nenhum TIPO para esse jogo então essas opção fica somente as aspas. 670, essa numeração é referente ao tempo que o emulador ficou rodando a rom 7, indica a quantidade de vezes que esse jogo foi carregado "", e a ultimas aspas podem ser usadas para dar um apelido a rom, por exemplo poderíamos dar o seguinte apelido para essa bios "Bios para da placa ZN1".

Esse é o final da adição de emuladores para arcade, lembrando que você pode adicionar quantos você quiser e o emulador que mais lhe agradar, por exemplo ao invés de usar somente o mame você poderia usar o "Final Burn Alpha ( FBA ), Nebula, Kawaks, Raine, etc..." para rodar os jogos da capcom e neogeo, vistos que esses emuladores são bem mais leves que o mame, e para isso volto a insistir no aprendizado dos "Scripts" porque com eles você poderá colocar qualquer um, mesmo que o emulador escolhido não trabalhe via linha de comando como o mame. Um exemplo é que eu uso por enquanto o emulador "EMULATOR.EXE" do "Elsemi" para rodar os jogos de "CPS3" ao invés do mame, obviamente quanto mesnos emulador menos trabalho terá mas como os scripts são fáceis de se ajustar conforme as atualizações dos emuladores então você terá somente trabalho na primeira vez. O último emulador que irei adicionar para encerrar mais essa parte do tutorial será o emulador de super nintendo "Zsnesw", isso para demonstrar como o advanceMENU irá tratar as fichas e como um script irá controlar o tempo, fazendo com que o emulador seja fechado quando o tempo dessa ficha for atingido.

Adicionando o emulador de video game Zsnesw.exe Esse é o último emulador que será adicionado nesse tutorial, com isso será demonstrado a funcionabilidade do advanceMENU para tratar uma ficha como tempo e vice-versa, com a adição desse emulador será mostrados novas funções no script e um parâmetro ainda não mencionado no "advmenu.rc". Essa é a imagem obtida:

Page 20 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Aqui vou começar mostrando o código a ser inserido no "advmenu.rc", para adicionar o emulador "Zsnesw.exe".

Nessa configuração a única coisa a se destacar em relação as anteriores já mostradas é em relação a macro "%P", se você revisar as configurações anteriores irá reparar que foi usada a macro "%S", essas macros tem o seguinte significado para o advanceMENU:

"%S" , passa para o script somente o nome da rom, por exemplo kof2002. "%F", passa para o script o nome e a extensão da rom, exemplo kof2002.zip. "%P", passa para o script o caminho completo mais o nome e a extensão da rom, exemplo "c:\arcade\jogos\neogeo\kof2002.zip"

O uso de uma ou outra irá depender de como o script foi escrito e de como o emulador recebe a linha de comando, no caso do "Zsnesw" eu escolhi a macro "%P" para facilitar a escrita do script, para não ter que configurar o path do emulador e por fim para demonstrar e explicar para que serve essas macros. Se você reparar na imagem acima irá ver o advanceMENU mostrando o "TEMPO 00:09:02" ou seja ( nove minutos e dois segundos ), se você mudar para um emulador arcade o advanceMENU irá mostrar "FICHAS 00" que significa que o tempo mostrado não é suficiente para uma ficha, isso porque foi configurado que cada ficha vale (10 minutos, você pode alterar isso editando o arquivo "advmenu.ini" e alterando o valor do campo "TEMPOPORFICHA=600000", lembre-se!!! 1 segundo=1000ms, 1 minuto=60000ms ), caso você deposite mais 1 ficha então no modo arcade será mostrado "FICHAS 01", e se voltar para emulador de vídeo game será mostrado "TEMPO 00:19:02", se o menu não estiver bloqueado e não tiver nenhuma ficha o script irá emitir uma menssagem avisando que você poderá ver esse jogo por um período de 30 segundos, e caso não deposite uma ficha nesse período o script irá fechar o emulador. No script é demonstrado novas funções que se encarregam de controlar o tempo, avisar ao usuário quando o tempo está acabando e fechar o emulador caso o tempo da ficha se esgote. Com pequenos ajustes nesse script será possível adicionar qualquer outro emulador de vídeo game no advanceMENU para trabalhar de forma semelhante ao Zsnesw.

Pacote com o Zsnesw O pacote para esse último emulador segue o mesmo padrão dos anteriores, ou seja é só descompactar na unidade onde se encontram os outros arquivos já baixados, OBS: enquanto eu testava esse último emulador encontrei um "erro" no

advmenu.rc #emulador SUPER NINTENDO #*********************************************** emulator "SUPERNES" generic ".\Zsnesw\ausnes.exe" "%p" emulator_roms "SUPERNES" "..\jogos\RomsSnes" emulator_altss "SUPERNES" "..\snap\SuperNes" #***********************************************

Page 21 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

advanceMENU que fazia com que ele não mostra-se o tempo correto no modo vídeo game, então nesse pacote está indo a versão do advmenu.exe corrigida. Abaixo segue o link do pacote com o advmenu (corrigido), emulador Zsnesw, script, outros arquivos utilizados. "http://w15.easy-share.com/1700267350.html" Tamanho: 2MB

Explicação mais detalhada sobre os arquivos .LST Antes de encerrar essa parte sobre a adição de emuladores vou explicar sobre o formato da lista de jogos ( arcade.lst, neogeo.lst, etc...), isso será útil caso você queira adicionar músicas ao advanceMENU transformando ele num jukebox ou um Karaoke.

game ( ...... ), cada entrada nesse formato representa um jogo. name pacman, essa opção informa ao advanceMENU qual é o nome da rom, ou seja "pacman". description "Pac-Man (Midway)", essa opção informa ao advanceMENU o (nome/descrição) que deverá ser mostra na lista, ao invés de "pacman". manufacturer "[Namco] (Midway license)", essa opção serve para o advanceMENU mostrar na barra inferior o nome do fabricante. year 1980, essa opção tem a mesma função da anterior, ou seja irá mostrar o ano de fabricação do game. cloneof pacman, essa opção informa ao advanceMENU que esse jogo é um clone da rom informada (pacman), e é essa opção que será útil caso queira montar uma jukebox usando o advanceMENU.

Nessa lista os dados que são obrigatórios são: game, name, description, o restante pode ou não ser adicionados. Com o exemplo acima então poderíamos criar uma lista usando a opção "cloneof", para montar uma jukebox ou karaoke e organizar essa lista usando o nome do álbum como destaque e as músicas como sendo clones desse álbum, então teríamos algo parecido com isso:

Repare que o primeiro item da lista não contém a palavra "cloneof", então ele será tratado com um item principal ( nome do álbum ), e os 2 outros itens possuem a palavra "cloneof 1", isso informa ao advanceMENU que esses 2 itens ( músicas ) são clones do item ( 1 ). Para esse exemplo eu pequei algumas músicas e renomeei para 1.mp3, 2.mp3, 3.mp3, etc..., e para cada item principal que representa um álbum eu coloquei uma imagem com os nomes 1.png, 4.png, 7.png, etc..., com isso a lista poderá ficar com os seguintes aspectos:

Exemplo de um arquivo LST game ( name pacman description "Pac-Man (Midway)" manufacturer "[Namco] (Midway license)" year 1980 ) game ( name puckman description "PuckMan (Japan set 1, Probably Bootleg)" manufacturer "Namco" year 1980 cloneof pacman ) game ( name puckmana description "PuckMan (Japan set 2)" manufacturer "Namco" year 1980 cloneof pacman )

Exemplo de um arquivo LST para uma jukebox ou karaoke game ( name 1 description "Roberto carlos 1980" manufacturer "BMG" year 1980 ) game ( name 2 description "Musica 1" manufacturer "BMG" year 1980 cloneof 1) game ( name 3 description "Musica 2" manufacturer "BMG" year 1980 cloneof 1) game ( name 4 description "Roberto carlos 1981" manufacturer "BMG" year 1981 ) game ( name 5 description "Musica 1" manufacturer "BMG" year 1981 cloneof 4) game ( name 6 description "Musica 2" manufacturer "BMG" year 1981 cloneof 4) game ( name 7 description "Roberto carlos 1982" manufacturer "BMG" year 1982 ) game ( name 8 description "Musica 1" manufacturer "BMG" year 1982 cloneof 7) game ( name 9 description "Musica 2" manufacturer "BMG" year 1982 cloneof 7) game ( name 10 description "Roberto carlos 1983" manufacturer "BMG" year 1983 ) game ( name 11 description "Musica 1" manufacturer "BMG" year 1983 cloneof 10) game ( name 12 description "Musica 2" manufacturer "BMG" year 1983 cloneof 10) game ( name 13 description "Roberto carlos 1984" manufacturer "BMG" year 1984 ) game ( name 14 description "Musica 1" manufacturer "BMG" year 1984 cloneof 13) game ( name 15 description "Musica 2" manufacturer "BMG" year 1984 cloneof 13)

Page 22 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Ou assim:

Repare que nos 2 exemplos de formatação da lista os itens estão agrupados, ou seja é mostrado o nome do álbum e em seguida as músicas pertencentes a esse álbum. Para controlar a jukebox ou o karaoke pode ser usado um script ou caso o player suporte linha de comando pode ser usado diretamente no "advmenu.rc". Com esse último exemplo encerra-se a parte desse tutorial que demonstra como adicionar emuladores e outros programas no advanceMENU, a próxima etapa do tutorial será voltada a explicar como fazer a imagem ser mostrada em um monitor arcade

Page 23 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

( 15Khz ), mas lembre-se que embora seja importante a parte do monitor e dos controles, elas não se comparam a parte anterior principalmente em relação aos scripts, pois como já mencionei o ideal é você se focar neles e com isso colocar oque desejar em sua montagem.

Terceira Parte: Nessa parte irei mostras os métodos que eu conheço para fazer a imagem da placa de vídeo ser mostrada em um monitor arcade. Essa sempre foi uma grande barreira dependendo da placa de vídeo utilizada, o problema todo começa porque uma placa de vídeo emite uma freqüência horizontal de no mínimo 31.5Khz enquanto que um monitor arcade só aceita uma freqüência de aproximadamente 15.7Khz, fora isso a placa de vídeo usa 2 canais para enviar os sinais de freqüências ( horizontal, vertical ) e um monitor arcade tem somente uma entrada ou seja os sinais de sincronismos tem que ser compostos. Esse último fato tão é tão problemático pois para termos esse sinal composto bastaria unir esses 2 fios (vertical, horizontal) e teríamos o sinal composto, embora funcione existe um circuito muito simples de se fazer que faz esse serviço de uma forma mais elegante, esse circuito é o mesmo usado nas "plaquinhas jamas" usadas nas multijogos, o circuito foi desenha originalmente por "Tomi Engdahj" o site oficial é "http://www.epanorama.net/circuits/vga2tv/circuit.html", abaixo o desenho do esquema:

Nesse esquema é mostrado uma saída para um conector "SCART" mas para os monitores arcades só é usado as saídas que estão conectadas aos pinos (15, 11, 7, 20) do lado direito da imagem. Abaixo o é mostrado a imagem desse circuito impresso.

E por fim como ele irá ficar depois de montado:

Page 24 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Todos os componentes são fáceis de se encontrar e são bem baratos, de uma olhada no site mencionado acima e veja a lista de componentes. Fora o circuito mostrado acima que somente faz a junção dos sinais (Vertical e Horizontal ) precisamos ainda de um meio para reduzir a freqüência horizontal que estará em 31.5KHZ para a freqüência suportada pelo monitor arcade que é 15.7KHZ, para isso existem vários meios e nesse tutorial vou citar apenas dois isso porque irá abranger a maioria das placas de vídeos usadas e são fáceis de se fazer. O primeiro trata-se de um software chamado "powerstrip" ( http://www.entechtaiwan.com/ps.htm ), esse tem muitas funções mas a principal e a que nos interessa é a parte que permite criar uma resolução que o monitor arcade consiga trabalhar, esse software tem uma compatibilidade com centenas de placas de vídeo e suporte para vários sistemas operacionais ( até 64bits), e com uma meia-duzias de cliques você já irá conseguir uma freqüência de 15.7KHZ, nesse tutorial não vou descrever como configurá-lo isso porque no próprio site já existe um tutorial falando sobre ele que pode ser encontrado na sessão tutorial. O segundo é dirigido somente para placas de vídeo da NVIDEA, para essas placas temos 2 métodos de realizar a conversão da freqüência, a primeira é através do próprio software da nvidea que permite isso, para um tutorial completo de como realizar essa configuração você irá encontrar nesse excelente site ( http://www.marcianitos.org/tutoriales/VD017.php ), o outro método trata-se de um software que faz umas alterações no registro do windows, ele se chama "soft15khz" esse programa você também irá encontrar no site "http://www.marcianitos.org" em ( http://www.drupal.marcianitos.org/programas/soft15khz ), no site tem toda a descrição de como realizar a configuração. Fora isso você irá encontrar mais uma séries de utilitários, tutoriais e muitas informações. Como vocês podem ver não há nada de extraordinário a ser feito em relação a parte de vídeo, a única dificuldade é caso você tente fazer isso com vídeos onboard, nesse caso a dificuldade é bem maior isso porque a maioria dos softwares não dão suporte a esse tipo de vídeo, então quando for montar sua máquina de preferência sempre a usar placas de vídeo offboard e as melhores para esse tipo de montagem são as NVIDEA e as ATI, na mesma ordem. Para os teste realizados para a escrita desse tutorial eu usei uma nvidea FX5200, e todas as formas mencionadas funcionam perfeitamente com essa placa. Uma outra coisa que você pode dar preferência são para placas de vídeo que tenha saída para tv, e com isso enquanto você prepara, testa a parte do front-end e os emuladores você poderá ir vendo o resultado final na tela da TV pois o que você verá nela será mais ou menos oque verá na tela do monitor arcade ( geralmente a qualidade obtida nos monitores arcades são bem melhores ).

Amplificação do som Essa é outra parte muito simples, na net você irá encontrar vários esquemas para montar um amplificador de som, ou caso queira algo mais simples basta desmontar uma caixinha de som e usar o amplificador dela, aqui vou mostrar um bem simples que também é usado em muitas "plaquinhas jamas", o esquema mostrado abaixo pode ser encontrado no site "http://www.mameworld.net/pc2jamma/hardware.html".

Page 25 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Eu escolhi esse circuito porque usa poucos componentes e também são muito baratos.

Controle ( joystick ou teclado, ??? ) Quando visitamos sites relacionados ao assunto o que mais vemos são dúvidas em relação a qual seria o melhor tipo de controle a ser usado pois existem vários métodos que podem ser utilizados, na minha opinião o mais fácil, rápido e barato é o uso de joystics que podem ser tanto os adaptados a porta paralela quanto os USB, segundo um artigo que eu li os USB levam uma vantagem em relação aos adaptados a porta paralela isso porque os joystick USB possuem o seu próprio controlador e os adaptados necessitam que o processador faça o trabalho, embora eu concorde com esse artigo eu já fiz uns testes e não notei diferença alguma, mas fica ai um alerta, a "placaquinha jama" que aparece no inicio do tutorial é a que eu uso ela simula até 4 controles de super nintendo e é adaptada a porta paralela e funciona perfeitamente sem delays, o esquema de montagem desse tipo de controle pode ser encontrado no fórum na sessão tutoriais, mas a forma mais fácil de fazer os controles é desmontando um joystick de playstation e soldando os fios diretamente nos micros dos botões arcade, esse método é super simples, rápido e muito barato, por exemplo aqui em são paulo esses controles são encontrados a um preço que vária de 5,00 reais á 10, reais no máximo, então caso algum venha a queimar a manutenção será rápida e barata, e como você deve ter observado para todos os emuladores eu usei o "joytokey" para simular teclas atravéz do joystick e com isso não foi percebido nenhum tipo de incompatibilidade e esse esquema irá funcionar com qualquer tipo de jogo independente do tipo de suporte que ele tenha ( teclado, mouse, joystick, etc...). Talvez você se pergunte mas e onde essa tão falada "placa jama" se encaixa nessa história ?, em primeiro lugar "jama" é um padrão inventado pelos japoneses para facilitar e padronizar as placas de jogos, com isso a cada nova placa de jogo que saia o dono dá máquina não precisa de manuais para saber onde cada fio deveria ser encaixado.

Page 26 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Como você pode ver na figura acima o padrão jama é composto por um conector com 56 pinos de encaixe.

A figura acima mostra os conectores jamas encontrados nas maquinas arcades, e depois de montados temos o que chamamos de chicote.

Page 27 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

Em resumo uma "plaquinha jama" para multijogos simplesmente reúne os 3 circuitos mencionados ( junção de sincronismo, joystick, amplificador de som ) e disponibiliza eles no padrão jama, ou seja você pega a "plaquinha jama" e encaixa no chicote da maquina, isso serve somente para nível de organização e aparência, e como já foi mencionado a "plaquinha jama" é totalmente dispensável podendo tudo ser encaixado diretamente na máquina. Bom!!! isso é quase tudo, falta agora somente fazer uns scripts que serão usados para fazer a manutenção de uma forma automatiza, e um script que será usado para manipular as configurações de (fichas,tempo, bloqueio do menu, contador de fichas ) e iniciar o advanceMENU, esse script será colocado no lugar do "Explorer" para que inicie junto com windows.

Script para modificar as configurações de fichas. Esse novo script tem a seguinte tela:

Esse script poderá ser utilizado no lugar do explorer ( recomendado) ou no "menu iniciar", com isso assim que o windows terminar a inicialização o script irá ser executado e dependendo da escolha irá carregar o advanceMENU automaticamente. Para adicionar esse script no "meu iniciar " basta criar um link e apontar o local onde se encontra o script ou então adicionar uma entrada direto no registro do windows, abaixo contém as entradas para realizar essa tarefa. A melhor opção ao meu ver é usar o script no lugar do "exeplorer.exe", se feito isso as vantagens são enormes, primeiro será a economia de memória, e segundo você terá um desktop "limpo" sem nenhum ícone visível, e caso precise usar algum programa do windows basta teclar "CTRL+ALT+DEL" que será mostrado a janela do "Gerenciador de Tarefas do windows" e a partir dele é possível acessar tudo. Essas são as entradas de registro que poderão ser alteradas ou adicionadas, se quiser testar basta copiar o conteúdo desse bloco e colar no "notepad" e depois salvar esse arquivo com a extenção ".reg" e por fim dar um duplo clique no arquivo ".reg" para as entradas serem adicionadas ao registro.

Repare no caminho que está sendo apontado "d:\arcade\BRarcade.exe", caso você esteja usando um caminho diferente então corrija para o caminho correto onde se encontra o script "BRarcade.exe". Assim que o script iniciar ele irá mostrar um contador em contagem regressiva, iniciando em "5", quando o contador zerar o advanceMENU será inicializado, caso você pressione o "botão10" do joystick antes do contador terminar então será mostrado a

Entradas do RegistroWindows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] "BRarcade"="d:\arcade\BRarcade.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "Shell"="d:\arcade\BRarcade.exe"

Page 28 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...

janela de configuração, que permite você alterar os valores de ( fichas, zerar fichas, zerar contador, bloquear ou desbloquear o menu), para navegar pelas configurações usa-se o direcional do joystick ( cima=aumenta o valor, baixo=diminuí o valor, direita=vai para o próximo item, botão1=aciona o botão selecionado ( ZERAR, SALVAR ou SAIR ) ), ao selecionar o botão [SAIR] , o script irá chamar o advanceMENU e depois será encerrado. Para que tudo funcione como o descrito acima foi criado mais um ".CFG" para o "joytokey" com o nome de "brmenu.cfg". Nesse novo script são mostrados várias funções novas que podem ser exploradas para que tenha um visual diferente, toque música ou exiba um logo-tipo na inicialização, isso só irá depender da sua criatividade. Link para download do pacote com o novo script, source code, etc... "http://w15.easy-share.com/1700279454.html" tamanho 300KB. Continua....

Page 29 of 29Montando uma multijogos caseira

4/30/2008file://C:\Documents and Settings\branco\My Documents\Multijogos\montando_uma_multi...