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) |
---|---|
|
|
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.
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.
- 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:
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.
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.
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.
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.
esquemático
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
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 .
gerenciamento de ferramentas de linha de comando e fonte também incluído e licenciado sob a GPLv3.
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) |
|
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:
|
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.
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.
Download: Disponível a partir das Ferramentas para a 3ª geração de raphnet GC / N64 para adaptadores USB página.
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.
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.
Download: Disponível a partir das Ferramentas para a 3ª geração de raphnet GC / N64 para adaptadores USB página.
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.
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.
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.
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.
controladores suportados
Aqui está uma lista de controladores testados / adaptadores:
Digitar Marca / Fabricante Modelo estado testado por
Game Cube Nintendo Padrão (DOL-003) Está bem raphnet.net
Game Cube Nintendo Edição Super Smash Bros (DOL-003) Está bem raphnet.net
Game Cube Nintendo Padrão (importação Japão, cabo extra longo) Está bem raphnet.net
Game Cube Nintendo wavebird Está bem raphnet.net
Game Cube Ascii Teclado Gamecube (parte joystick) Está bem raphnet.net
Game Cube Intec Sem fio Está bem raphnet.net
Game Cube Mad Catz Microcon (item nº. 5636) Está bem raphnet.net
Game Cube ? Playstation ao adaptador Gamecube Está bem raphnet.net
Game Cube Hori bloco de notas digital Hori para GameCube Está bem Do utilizador
Game Cube Nyko PS2 ao adaptador Gamecube Não funciona Do utilizador
N64 Nintendo Padrão Está bem raphnet.net
N64 Hori MiniPad mini-64 Está bem raphnet.net
N64 TTX ? Está bem raphnet.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.
Aqui está uma lista de controladores testados / adaptadores:
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.
Digitar | Marca / Fabricante | Modelo | estado | testado por |
---|---|---|---|---|
Game Cube | Nintendo | Padrão (DOL-003) | Está bem | raphnet.net |
Game Cube | Nintendo | Edição Super Smash Bros (DOL-003) | Está bem | raphnet.net |
Game Cube | Nintendo | Padrão (importação Japão, cabo extra longo) | Está bem | raphnet.net |
Game Cube | Nintendo | wavebird | Está bem | raphnet.net |
Game Cube | Ascii | Teclado Gamecube (parte joystick) | Está bem | raphnet.net |
Game Cube | Intec | Sem fio | Está bem | raphnet.net |
Game Cube | Mad Catz | Microcon (item nº. 5636) | Está bem | raphnet.net |
Game Cube | ? | Playstation ao adaptador Gamecube | Está bem | raphnet.net |
Game Cube | Hori | bloco de notas digital Hori para GameCube | Está bem | Do utilizador |
Game Cube | Nyko | PS2 ao adaptador Gamecube | Não funciona | Do utilizador |
N64 | Nintendo | Padrão | Está bem | raphnet.net |
N64 | Hori | MiniPad mini-64 | Está bem | raphnet.net |
N64 | TTX | ? | Está bem | raphnet.net |
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:
- 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.
- 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.
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.
- 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.
- 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.
- 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.
Adaptador tipo de USB intervalo de controlador de sondagem intervalo de consulta USB Pior caso Comentários
raphnet gcn64usb v3 (O único nesta mesma página) Velocidade máxima padrão 5ms 1ms 6ms Se poll controlador é configurado para o valor mínimo de 2ms, pior caso é de apenas 3 ms.
raphnet gc / n64 usb v2(predecessor) Baixa velocidade 4ms 5ms [1] 14ms Devido
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 USB Baixa velocidade 16ms 8ms 24ms[2] bInterval = 8 ms, o intervalo de sondagem controlador verificado através de um osciloscópio.
Mayflash GC (4x) para USB (modo PC) completa SPED 8ms 1ms 9ms[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.
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:
[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.
- 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.
Adaptador | tipo de USB | intervalo de controlador de sondagem | intervalo de consulta USB | Pior caso | Comentários |
---|---|---|---|---|---|
raphnet gcn64usb v3 (O único nesta mesma página) | Velocidade máxima | padrão 5ms | 1ms | 6ms | Se poll controlador é configurado para o valor mínimo de 2ms, pior caso é de apenas 3 ms. |
raphnet gc / n64 usb v2(predecessor) | Baixa velocidade | 4ms | 5ms [1] | 14ms | Devido 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 USB | Baixa velocidade | 16ms | 8ms | 24ms[2] | bInterval = 8 ms, o intervalo de sondagem controlador verificado através de um osciloscópio. |
Mayflash GC (4x) para USB (modo PC) | completa SPED | 8ms | 1ms | 9ms[2] | bInterval = 1ms, intervalo de consulta controlador verificado através de um osciloscópio. |
0 Comentario "Controlador de Gamecube / N64 para um adaptador USB (terceira geração)"
Postar um comentário