Controlador de Gamecube / N64 para um adaptador USB (terceira geração)

Esta é a terceira geração do meu controlador de N64 / Gamecube para USB. Adaptador. Por que uma nova versão
 você pergunta?
Porque era possível fazer ainda melhor. Basta comparar:



versão antiga (v1, v2)Nova versão (v3)
  • USB de baixa velocidade ( 1,5 Mbit / s )
  • Baixa latência (aprox. 14ms pior caso)
  • As atualizações de firmware não é possível [1] (ou muito difícil)
  • USB velocidade máxima ( 12 Mbit / s)
  • Latência muito baixa (aprox. 6mspior caso)
  • Firmware atualiza possível e fácil

Uma reformulação completa do sistema eletrônico é o que permite que todas essas melhorias. O uso de um
micro-controlador com suporte USB nativa simplesmente remove as restrições impostas pelo software só
de implementação USB que foi usado formalmente, em benefício de um maior desempenho e abertura de
novas possibilidades. [1] Ok, ok, quando eu dizer impossível , eu quero dizer para o usuário médio que comprou
um adaptador preparado de mim. Claro, sempre será possível fazer o upgrade de um adaptador, cortando abrir
o calor encolher e soldar os fios programador AVR para os lugares certos ...



O adaptador:
  • N64 e Gamecube controladores suportados. ( Lista )
  • Gamecube vibração e N64 Rumble suportado.
  • 100% funcional sem instalar drivers especiais. . Fácil de usar. (Conecta-se como um HID USB ​​joystick com force feedback PID)
  • Funciona em Linux, Mac OS X e Windows.
  • Frequência configurável controlador de pesquisa (máximo de 500Hz )
  • Muito baixa latência USB (Polled em 1000Hz)
  • Firmware atualizável .
  • Alguns aspectos do adaptador são configuráveis.
  • Tem suporte para comunicação do controlador direto.
  • Cada adaptador tem o seu próprio número de série.
Drivers:
  • Nenhum! Usa os drivers padrão fornecidos com sistemas operacionais suportados.
ferramenta de gestão:
  • Fácil de usar interface com o usuário capaz de gerenciar vários adaptadores.
  • Apresentação da versão de firmware do adaptador e função de atualização de firmware .
  • exibição do tipo de controlador conectado.
  • Built-in vibração / teste de estrondo.
  • N64 mempak leitura / gravação e edição de ferramentas.
  • Suporta arquivos de imagem .N64 e .MPK mempak.



As fotos

Aqui está um adaptador completo:

conectores Gamecube / N64
conectores Gamecube / N64
Visão geral
Visão geral
O cabo USB é destacável
O cabo USB é destacável



O firmware é projetado para rodar em meu Multiuse PCBX circuito. Isso é na verdade o que foi utilizado para construir
o adaptador acima. Todos os componentes necessários (regulador 3.3V, resistores, 16 MHz cristal ..) estão presentes
 na placa. Tudo o que precisa ser feito é soldar os fios do conector do controlador.
Multiusos PCB-X
Multiusos PCB-X
Multiusos PCB-X
Multiusos PCB-X
Multiusos PCB-X
Multiusos PCB-X
Fiação
Fiação



Para o desenvolvimento e depuração, eu uso uma versão at90usb1287 do firmware que é executado em um kit de
 desenvolvimento de STK525 idade, com algumas modificações: O cristal deve ser alterado para 16MHz.
Controladores são ligados a expandir 0 dos pinos. Pinos 39,40: GND, o pino 38: Dados [PORTD0].
Jumpers são configurados para fornecer 5v para o micro-controlador. O controlador de 3.3V necessária
 é obtida a partir do regulador de bordo. 5v saída para o controlador Gamecube é diretamente do barramento USB
 (VBUS). A terceira imagem mostra outra configuração de desenvolvimento, mas desta vez ele está
 
Multiuse PCB-X baseado. O interruptor e o fio verde extras estão lá para fins de depuração.
 
Eles normalmente não têm um propósito.


Desenvolvimento na STK525
Desenvolvimento na STK525
Desenvolvimento na STK525
Desenvolvimento na STK525
Desenvolvimento no Multiusos PCB-X
Desenvolvimento no Multiusos PCB-X


esquemático

Este projeto utiliza o meu Multiuse PCB-X design. Aqui estão as referências de fiação e pinagem de controladore
s N64 e Gamecube.
Fiação para Multiuse PCB-X
Fiação para Multiuse PCB-X
pinouts N64 / Gamecube
pinouts N64 / Gamecube


Para o esquema Multiuse PCB-X: Por favor, visite o PCB-X Multiuse página.

código de firmware e fonte

Se você estiver atualizando seu adaptador, os seguintes firmwares (arquivos .hex) podem ser programados usando
 a ferramenta de gerenciamento ou utilizando a linha de comando. Se o seu circuito é novo (ou seja, ele nunca
foi programado), dfu-programador deve ser usado diretamente . 

# Programming a new PCB
$ dfu-programmer atmega32u2 erase
$ dfu-programmer atmega32u2 flash firmware.hex
$ dfu-programmer atmega32u2 start
arquivos de firmware (.hex) e pacotes de código-fonte está disponível abaixo. O código de ferramenta de
gerenciamento de ferramentas de linha de comando e fonte também incluído e licenciado sob a GPLv3.


Arquivos)Descrição
gcn64usb-3.2.0.hex (33,4 KB) gcn64usb-3.2.0.tar.gz (46,5 KB)
  • Fix reconectar loop no MacOS X
  • Alterar o uso de disparo HID GameCube (Slider tornou-Z). Agora ele funciona muito bem em openEMU.
  • Versão e do produto de cadeia atualizado.
  • USB ID do produto alterado.
gcn64usb-3.1.1.hex (33,4 KB) gcn64usb-3.1.1.tar.gz (46,3 KB)Bugfix: corrigir o código de vibração para x360ce (Vibration iria ligar e nunca parar)
gcn64usb-3.1.0.hex (33,4 KB) gcn64usb-3.1.0.tar.gz (46,3 KB)Recursos e correções de bugs:
  • Adicionar um comando de teste Rumble (para a ferramenta GUI, ou para o controle Rumble simples)
  • Ajuste Gamecube / N64 protocolo fio timing (Fixes Mad Catz controlador)
  • executar automaticamente a calibração centro ao conectar um controlador de GameCube
  • Corrigir a detecção Wavebird
  • melhorias de estabilidade (evitar um potencial estouros de buffer ao receber)
gcn64usb-3.0.0.hex (32,9 KB)primeira versão

ferramenta de gestão

A ferramenta de gestão (não é necessário usar o adaptador) pode executar um teste de vibração / rumble, pode atualizar o
firmware de um adaptador e executar as operações de leitura / gravação em mempaks N64. O .N64 comum built-in editor
mempak apoia e formatos de arquivo de imagem .MPK mempak. Baixando fraudes de GameFAQs e usá-los no sistema
 N64 real é, portanto, possível! O editor também suporta a importação e exportação indivíduo
 salva (notas) em arquivos separados.
Tela principal
Tela principal
editor Mempak
editor Mempak


A função de atualização do adaptador pede-lhe para selecionar o arquivo de firmware .hex e faz algumas verificações para evitar erros (ex: instalação de um firmware incompatível). Quando o arquivo for selecionado, clicando em "Iniciar update" é tudo o que há a fazer. Se tudo correr bem (por favor, não desligue qualquer coisa!) Depois de alguns momentos janela sucesso a actualização deve confirmar a actualização.
Antes
Antes
Durante
Durante
Depois de
Depois de

Download: Disponível a partir das Ferramentas para a 3ª geração de raphnet GC / N64 para adaptadores USB página.

ferramentas de linha de comando

Fiz algumas ferramentas de linha de comando para manipular o adaptador:
  • gcn64ctl : Configuração, cartão de memória I / O e mais
  • mempak_ls, mempak_rm, mempak_format, mempak_insert_note : N64 mempak arquivo de imagem manipulação.
Aqueles ferramenta estão disponíveis nas Ferramentas para a 3ª geração de raphnet GC / N64 para adaptadores USB página.

controladores suportados

Aqui está uma lista de controladores testados / adaptadores:
DigitarMarca / FabricanteModeloestadotestado por
Game CubeNintendoPadrão (DOL-003)Está bemraphnet.net
Game CubeNintendoEdição Super Smash Bros (DOL-003)Está bemraphnet.net
Game CubeNintendoPadrão (importação Japão, cabo extra longo)Está bemraphnet.net
Game CubeNintendowavebirdEstá bemraphnet.net
Game CubeAsciiTeclado Gamecube (parte joystick)Está bemraphnet.net
Game CubeIntecSem fioEstá bemraphnet.net
Game CubeMad CatzMicrocon (item nº. 5636)Está bemraphnet.net
Game Cube?Playstation ao adaptador GamecubeEstá bemraphnet.net
Game CubeHoribloco de notas digital Hori para GameCubeEstá bemDo utilizador
Game CubeNykoPS2 ao adaptador GamecubeNão funcionaDo utilizador
N64NintendoPadrãoEstá bemraphnet.net
N64HoriMiniPad mini-64Está bemraphnet.net
N64TTX?Está bemraphnet.net
Note que mesmo que um controlador não está listado acima, é mais provável suportado. Por favor, deixe-me saber
de quaisquer controladores adicionais que tiveram a oportunidade de testar.


latência explicou



Para controles sensíveis e jogos de alta performance, alta latência de adaptador é extremamente indesejável. Vejamos como e por que isso acontece eo que pode ser feito para minimizá-lo. Se expressa com palavras, um adaptador funciona assim: 

  • Em um intervalo fixo, o adaptador sonda o controlador para detectar mudanças de estado (botões, eixos, etc).
  • Quando é detectada uma alteração, o adaptador envia um evento para o PC.
  • Mas os dispositivos USB também são sondados pela PC em um intervalo fixo. Isto significa que, para enviar o evento, o adaptador na verdade, tem que esperar até a próxima sondagem USB.
Existem dois principais contribuintes para a latência:
  1. O intervalo de controlador de voto: Adaptadores comumente controladores de sondagem em intervalos de 16ms. Isso faz sentido, uma vez que imita o que a maioria dos jogos fazer em polling o controlador de uma vez por quadro de vídeo. Mas isso também significa que se você empurrar 1ms fogo após a sondagem, o adaptador só sei que na próxima sondagem, 15ms mais tarde.
  2. O intervalo de consulta USB: Para um dispositivo USB de baixa velocidade, o intervalo mínimo é de 10ms. Dependendo do tempo, se o adaptador aprende sobre o botão de imprensa logo após a votação USB teve lugar, o computador não sabe sobre ele por mais de 10ms. No pior cenário, a latência 15ms do ponto 1 adiciona aos 10ms, totalizando 25ms.
Aqui é um diagrama de sequência para visualizar a acima: O gráfico mostra claramente: 


  • Fonte de latência 1 : A imprensa botão ocorre, mas o adaptador sabe sobre isso mais tarde quando ele controla o controlador.
  • Fonte de latência 2 : O adaptador finalmente sabe sobre o botão de imprensa, mas tem que esperar para a próxima sondagem USB para denunciá-lo ao PC.

latência minimizando

Face ao exposto uma solução óbvia vem à mente: USB e controlador urnas ambos devem ter lugar o mais rápido possível. Vamos examinar as duas coisas:
  • Polls USB: Esta é uma simples questão de definir o descritor ponto de extremidade USB bInterval campo para um valor baixo. Para dispositivos USB de velocidade baixa, o intervalo mínimo é de 10ms. Para dispositivos USB de alta velocidade, o mínimo é de 1 ms. Este adaptador, sendo um dispositivo de velocidade completa, utiliza o valor mínimo de 1 ms.
  • Polls controlador: Por padrão, este adaptador urnas em intervalos de 5 ms. Mas isso pode ser alterado usando a ferramenta de gerenciamento. Definindo-a para um valor muito baixo, não parece causar problemas com controladores padrão, mas incompatibilidades podem surgir quando se utiliza controladores de terceiros ou adaptadores.
Vale a pena notar que existe uma outra abordagem para reduzir a sondagem USB latência induzida pela temporização das urnas controlador de tal forma que eles ocorrem alguns momentos antes da próxima pesquisa USB. Mas com um 1 ms intervalo de consulta USB, não é realmente necessário.

Adaptadortipo de USBintervalo de controlador de sondagemintervalo de consulta USBPior casoComentários
raphnet gcn64usb v3 (O único nesta mesma página)Velocidade máximapadrão 5ms1ms6msSe poll controlador é configurado para o valor mínimo de 2ms, pior caso é de apenas 3 ms.
raphnet gc / n64 usb v2(predecessor)Baixa velocidade4ms5ms [1]14msDevido ao tamanho do relatório, duas pesquisas USB são necessários para transmitir um evento, por conseguinte, a 14ms pior caso, em vez de 9 ms
adaptadores não-raphnet (para referência)
Mayflash dupla N64 para USBBaixa velocidade16ms8ms24ms[2]bInterval = 8 ms, o intervalo de sondagem controlador verificado através de um osciloscópio.
Mayflash GC (4x) para USB (modo PC)completa SPED8ms1ms9ms[2]bInterval = 1ms, intervalo de consulta controlador verificado através de um osciloscópio.
[1] Embora o intervalo mínimo de sondagem de um dispositivo USB de baixa velocidade é de 10 ms, é possível enganar e usar um valor mais baixo. Porque funciona. [2] O valor do pior caso dada para adaptadores não-raphnet assume que nenhuma tentativa é feita para sincronizar controlador lê com urnas USB (ou seja, a leitura da direita do controlador antes da votação USB). Se eles estão fazendo a sincronização, então o intervalo usb poll (ou uma fração dela dependendo margens de design) precisa ser subtraído do valor da pior.


0 Comentario "Controlador de Gamecube / N64 para um adaptador USB (terceira geração)"

Postar um comentário