Plugins d'accès direct aux manettes N64 pour mupen64plus et Project64

De quoi s'agit-il?

Tout ceci fonctionne

Tout ceci fonctionne

Ces plugins pour mupen64plus et Project 64 exploitent la fonction d'accès direct aux manettes offerte par mes adaptateurs N64 à USB (versions 3 et plus) pour permettre au jeu tournant dans l'émulateur de communiquer directement avec les manettes.

Qu'est-ce que cela apporte? Plusieurs avantages! En voici quelques uns:
  • Aucune calibration requise. Puisque le jeu parle directement avec la manette, il recevra exactement les mêmes valeurs d'axe que s'il ne s'agissait pas d'émulation. Bref, la manette fonctionnera et répondra aussi bien (ou aussi mal) et exactement comme dans la vraie vie, et ce sans efforts.
  • Latency très bas. Lorsque le jeu doit lire la manette, le message de requête est sur le champ relayé à la manette par l'adaptateur qui à son tour retourne la réponse au jeu.
  • Support potentiel de tout accessoire branché dans le port d'expansion de la manette N64 sans aucune intervention ni fonctionnalités y étant spécifiques requises de la part de l'émulateur, du plugin et de l'adaptateur (autre que l'accès direct). Ce qui veut dire:
    • Support du rumble pack (testé)
    • Support du memory pack (testé)
    • Support du transfer pack (confirmé!)
    • Support du Bio Sensor (testé)
    Comme lorsqu'une vraie console N64 est utilisée, il suffit simplement d'insérer l'accessoire voulu et le jeu s'occupe du reste. Aucune configuration de l'émulateur n'est nécessaire.
  • Support de périphériques autres que des manettes.
    • Souris N64 (testé)
    • VRU (confirmé!)
    • Clavier N64 (non confirmé[1])
[1] Je ne peux pas tester les accessoires que je ne possède pas encore. Mais la beauté de la chose est qu'en théorie ça fonctionne déjà. (Contactez-moi si vous avez la chance de tester)

Attention: Ce projet est encore en développement et considéré expérimental. Bien que ce plugin soit déjà utilisable, certaines fonctionalités évoquées ci-dessus, en particulier celles qui ne sont pas encore confirmées pourraient à la fin ne pas fonctionner du tout. De plus, il pourrait y avoir (probablement déjà) des bugs, et plusieurs fonctionnalités manquantes telles le support de plusieurs adaptateurs en simultané. Votre patience et votre aide pour les tests de même que vos commentaires constructifs sont des plus bienvenus.


Screenshots

Voici quelques screenshots réalisés avec une carte mémoire N64 dans la manette. Le gestionnaire de mempak de Mario Kart 64 (maintenir START enfoncé lors du lancement du jeu) est utilisable malgré les glitch graphiques. En jeu, nous pouvons constater la présence d'un ghost (sauvegardé dans le mempak lors d'une partie précédente (le jeu a été redémarré depuis). Plus tard (et sur une machine Linux dans ce screenshot) les données écrites par MK64 peuvent être relues avec l'outil de gestion d'adaptateur.
Gestionnaire MK64

Gestionnaire MK64

Ghost

Ghost

Ghost

Ghost

Gestionnaire d'adaptateur

Gestionnaire d'adaptateur


Gestionnaire MK64 (project64)

Gestionnaire MK64 (project64)

Plugin dans project 64

Plugin dans project 64


Note: Pour l'instant il ne vaut mieux pas utiliser le gestionnaire d'adaptateur en même temps qu'un jeu est en marche.
Contributions:
Controller, Transfer and Tremor paks

Controller, Transfer and Tremor paks

MaMaLuigi9001 a testé le Transfer Pak et un Tremor Pak Plus (Équivalent au Rumble Pak de Nintendo) et tout fonctionne. Le jeux testés avec le Transfer Pak sont Pokemon Statium et Pokemon Statium 2 avec Project 64 version 2.3.0.216 sous Windows 10. Il précise toutefois que le jeu plante (l'écran devient noir) lorsqu'il se rends au Gameboy Tower.

Voici quelques screenshots avec les jeux Pokemon:

Pokemon Stadium

Pokemon Stadium

Pokemon Stadium

Pokemon Stadium

Pokemon Stadium

Pokemon Stadium

Pokemon Stadium

Pokemon Stadium

Pokemon Stadium 2

Pokemon Stadium 2

Pokemon Stadium 2

Pokemon Stadium 2

Pokemon Stadium 2

Pokemon Stadium 2


MaMaLuigi9001 confirme également que le VRU est fonctionnel, mais la version ports1_4 du plugin qui fait en sorte que le deuxième port de l'adaptateur fonctionne comme le port 4 du N64 est requise. Ce plugin fera partie de la version 1.0.0.
VRU

VRU




Adaptateurs supportés

Ce plugin fonctionne uniquement avec les adaptateurs GC/N64 à USB raphnet de troisième génération. Vous n'êtes pas certain de quelle est la version de votre adaptateur? Il y a un moyen très rapide pour le savoir: Si le câble USB est amovible, c'est un adaptateur de troisième génération.

PhotoModèle(s)Supporté?
GC/N64 to USB ADAP-GCN64-USB_V3: Adaptateur manette N64 ou Gamecube à USB (v3, Boîtier Noir)
ADAP-GCN64-USB-V_V3: Adaptateur manette N64 ou Gamecube à USB (v3, Boîtier Violet)


Les prototypes (ADAP-USB-GCN64-V3-PROTO) et unités de pré-lancement (ADAP-USB-GCN64-V3-PR) fonctionnent aussi!
Oui
N64 to USB ADAP-N64-USB_V3: Adaptateur manette N64 à USB (v3, Boîtier Noir) Oui
Dual N64 to USB ADAP-2XN64-USB: Adaptateur pour deux manettes N64 à USB Oui
Old GC/N64 to USB ADAP-GCN64-USB: Adaptateur manette N64 ou Gamecube à USB (n'est plus fabriqué) Non
Old N64 to USB ADAP-N64-USB: Adaptateur manette N64 à USB (n'est plus fabriqué) Non
Note: Ce n'est pas par manque de volonté que les anciennes versions ne sont pas supportées. C'est simplement qu'elles ne permettent pas la communication directe avec les manettes.


Fonctionnement

Voici une illustration permettant de comparer les grandes lignes de l'architecture habituelle (input-sdl) et celle obtenue via le plugin d'accès direct raphnet.




La chaîne d'événements « normale » est plus ou moins la suivante: (écrit en pensant à mupen64plus, mais s'applique à project64 également)
  1. L'adaptateur interroge la manette et store la réponse contenant les valeurs d'axes et de boutons en mémoire.
  2. Le PC hôte interroge périodiquement l'adaptateur et reçoit en réponse l'état le plus récent.
  3. Ce nouvel état fait son chemin à travers quelques niveaux logiciels driver HID, librairie DirectX ou pilote de joystick et librairie SDL. (L'information est en fait stockée dans un buffer quelque part)
  4. Lorsque le jeu tournant dans l'émulateur fait requête de lecture d'état de la manette, une réponse est construite à partir des donnés les plus récentes obtenues par la librairie SDL.
AvantagesDésavantages
  • L'émulateur n'a pas a attendre. Les donnés les plus récentes sont déjà disponibles, il n'a donc qu'à les mettre dans le bon format et les retourner au jeu.
  • La valeurs exactes d'axes sont souvent perdues (calibration, attentes de l'émulateur vis-à-vis des limites de valeurs d'axe, etc), et obtenir exactement la sensation du jeu original peut nécessiter beaucoup d'ajustement.
  • L'émulateur doit savoir s'il doit émuler un mempack ou un rumble pack. Il est nécessaire de configurer tout cela, cela dépends des jeux. Et bien que la vibration soit possible (avec le standard HID PID) le support des mempack est moins évident et généralement virtuel (stockage dans des fichiers).


La chaîne d'événements de l'approche directe est plus ou moins la suivante:
  1. Le jeu tournant dans l'émulateur fait une requête de lecture d'état de la manette.
  2. Le plugin se charge de transmettre la demande à l'adaptateur par USB
  3. L'adaptateur retransmet la requête telle-quelle à la manette N64 (ou au périphérique en question)
  4. La manette (ou périphérique) réponds
  5. La réponse est reçue par l'adaptateur et retransmise par USB
  6. Le plugin recoit la réponse et la sert sans modifications au jeu.
AvantagesDésavantages
  • Le jeu échange réellement avec la manette. Le support des accessoires tels le mem pack, rumble pack et autres fonctionne donc naturellement.
  • La réponse de la manette ne subit aucune transformation. Les valeurs d'axes reçues par le jeu sont exactement les mêmes que dans la réalité. Pas d'inconnues et pas d'ajustements!
  • Puisque la requête doit faire un allez-retour jusqu'à la manette, l'acte de lire le statut des axes et boutons prends un peu plus de temps. Lorsqu'il y a beaucoup d'échanges (notamment pour la lecture et l'écriture de mempacks, cela peut causer un ralentissement temporaire de l'émulation.


Version spéciales

Le fichier .zip pour Project 64 (voir la section téléchargement) contient plusieurs fichiers DLL, chacun correspondant à une version du plugin. Voici une table en expliquant les différences et utilitées:

NomFichierRaison d'être et description
Standard pj64raphnetraw.dll La version standard. supporte jusuqu'à 4 joueurs avec n'importe quelle combinaison d'adaptateurs à 1 et 2 ports.
1 joueur pj64raphnetraw_1player.dll Version spéciale ne prenant en charge qu'une seule manette, peu importe combien de ports votre adaptateur comporte. Permet parfois, selon le jeu, un léger gain de performance en évitant d'avoir à interroger une manette absente ou non utilisée.

Utilisez cette version lorsque vous jouez seul, et la version standard (ci-dessus) lorsque vous jouez entre amis.
Ports 1 et 3 pj64raphnetraw_ports1and3.dll Version spéciale faisant fonctionner les ports 1 et 2 de votre adaptateur comme les ports 1 et 3 de l'émulateur. Prévue pour le jeu Densha de GO! qui s'attend au raccord d'une manette spéciale dans le port 3.
Ports 1 et 4 pj64raphnetraw_ports1and4.dll Version spéciale faisant fonctionner les ports 1 et 2 de votre adaptateur comme les ports 1 et 4 de l'émulateur. Prévue pour être utilisée avec le VRU qui doit être branché au port 4.
Net pj64raphnetraw_net.dll Il y a quelques problèmes (en ce moment inexpliqués) avec le jeu réseau sous Project64k. Cela ne fonctionne pas, à moins d'installer un très vieux firmware (version 3.3.2). Une nouvelle fonctionnalité visant à augmenter la performance a été ajoutée à la version 3.4.0, et c'est depuis que raphnetraw v0.9.4 s'en sert que ça va mal...

Solution temporaire: Cette version n'utilise pas la fonctionnalité en question et permet le jeu en réseau, du moins je l'espère...


Téléchargement

Question: Quel fichier me faut-il? Quelle est la différence entre le fichier .zip et le fichier .tar.gz?
Réponse: Les fichiers .zip contiennent des plugins pour Windows (.DLL) prêts à l'emploi. Les fichiers .tar.gz contiennent le code source. Si vous êtes sous Linux, c'est ce qu'il vous faut.

Flux RSS pour cette table
Version 1.0.7
28 juin 2021 (Lundi)
  • Corrige un problème lorsqu'on change la manette en jeu.
  • Affiche une fenêtre d'information lorsqu'on tente de configurer le plugin. (contribution de CEnnis91)
Fichier(s):
pj64raphnetraw-1.0.7.tar.gz (21.6 KB)
pj64raphnetraw-1.0.7.zip (490.2 KB)
Afficher les versions précédentes
Version 2019-07-16
16 juillet 2019 (Mardi)
Maintenance pour mupen64plus seulement: (Pour project64, voir les versions précédences)
  • Migration vers la version 2.1.0 de l'API de plugin
Fichier(s):
mupen64plus-input-raphnetraw-1.1.0.tar.gz (30.6 KB)
mupen64plus-input-raphnetraw-windows-1.1.0.zip (262.6 KB)
Version 2018-10-06
6 octobre 2018 (Samedi)
Maintenance:
  • Support des adaptateurs avec firmware version 3.6.x
Fichier(s):
pj64raphnetraw-1.0.6.tar.gz (21.3 KB)
pj64raphnetraw-1.0.6.zip (483.1 KB)
mupen64plus-input-raphnetraw-1.0.2.tar.gz (30.3 KB)
mupen64plus-input-raphnetraw-windows-1.0.2.zip (262.2 KB)
Version 1.0.5
16 mai 2018 (Mercredi)
Correctif/maintenance:
  • Protection contre les commandes invalides (Évite des erreurs lorsque plusieurs Controller Pak sont utilisés)
  • Déactivation du log file. (très petit gain de performance)
Fichier(s):
pj64raphnetraw-1.0.5.zip (483 KB)
pj64raphnetraw-1.0.5.tar.gz (21.3 KB)
Version 1.0.4
22 novembre 2017 (Mercredi)
Plugin version 1.0.4 pour PJ64 et version 1.0.1 pour mupen64plus:
  • Support pour les adaptateurs version 3.5 disponibles sous peu (mise à jour nécessaire pour le bon fonctionnement des versions deux joueurs)
Fichier(s):
pj64raphnetraw-1.0.4.tar.gz (21 KB)
pj64raphnetraw-1.0.4.zip (204.6 KB)
mupen64plus-input-raphnetraw-1.0.1.tar.gz (30.2 KB)
mupen64plus-input-raphnetraw-windows-1.0.1.zip (161.9 KB)
Version 1.0.3
16 avril 2017 (Dimanche)
Correctif(s):
  • Correction de la version spéciale ports 1 et 3
  • Nouvelle tentative de réparer le jeu en ligne (la version 1.0.2 n'a pas fonctionné)
  • Fichier(s):
    pj64raphnetraw-1.0.3.tar.gz (20.9 KB)
    pj64raphnetraw-1.0.3.zip (204.6 KB)
    Version 1.0.2
    10 avril 2017 (Lundi)
    Nouvelles version spéciales:
    • Ajout d'une version spécial pour 1 joueur. (Augmentation de performance dans certaines situations en évitant les tentatives d'interrogation de manettes absentes ou inutilisées)
    • Ajout d'une version pour le jeu en réseau. (Pour un joueur seulement. N'est pas encore testé, mais cette version permettra j'espère de jouer en réseau avec le plus récent firmware Mise à jour: Malheureusement, cela n'a pas fonctionné.
    Fichier(s):
    pj64raphnetraw-1.0.2.tar.gz (20.7 KB)
    pj64raphnetraw-1.0.2.zip (203.9 KB)
    Version 1.0.1
    4 février 2017 (Samedi)
    Ajout d'une autre version spéciale où les ports d'un adaptateur à deux joueurs correspondent aux ports 1 et 3 de la N64. (Ceci est dans l'espoir que le contrôle Densha de GO! fonctionnera alors.)
    Fichier(s):
    pj64raphnetraw-1.0.1.tar.gz (20.3 KB)
    pj64raphnetraw-1.0.1.zip (139.2 KB)
    Version 1.0.0
    15 janvier 2017 (Dimanche)
    Nouvelles fonctionalités et changments internes:
    • Supporte maintenant plusieurs adaptateurs simultanément.
    • Ajout d'une version spéciale Ports 1 et 4 où les ports d'un adaptateurs à deux joueurs correspondent aux porst 1 et 4 du N64.
    Fichier(s):
    mupen64plus-input-raphnetraw-1.0.0.tar.gz (30.1 KB)
    mupen64plus-input-raphnetraw-windows-1.0.0.zip (161.8 KB)
    pj64raphnetraw-1.0.0.tar.gz (20.3 KB)
    pj64raphnetraw-1.0.0.zip (106.6 KB)
    Version 0.9.4
    3 décembre 2016 (Samedi)
    Maintenance:
    • Amélioration de la structure pour faciliter la maintenance du code en commun des versions Project 64 et mupen64plus du plugin.
    • Support pour le firmware 3.4.x à venir.
    Fichier(s):
    mupen64plus-input-raphnetraw-0.9.4.tar.gz (29.8 KB)
    mupen64plus-input-raphnetraw-windows-0.9.4.zip (161 KB)
    pj64raphnetraw-0.9.4.tar.gz (19.6 KB)
    pj64raphnetraw-0.9.4.zip (72.8 KB)
    Version 0.9.3
    26 novembre 2016 (Samedi)
    Correctif et optimisation::
    • Ne gère maintenant que les canaux supportés par l'adaptateur. Ceci résulte en une meilleure performance (moins de lag) en évitant des tentatives inutiles de communiquer avec les manettes de ports physiquement inexistants sur l'adaptateur. Ceci corrige aussi le problème de certains jeux qui voyaient plus de manettes qu'il y en avait en réalité (avec un adaptateur mono-joueur)
    Fichier(s):
    mupen64plus-input-raphnetraw-0.9.3.tar.gz (26.8 KB)
    mupen64plus-input-raphnetraw-windows-0.9.3.zip (158.4 KB)
    pj64raphnetraw-0.9.3.tar.gz (16.1 KB)
    pj64raphnetraw-0.9.3.zip (71.6 KB)
    Version 0.9.2
    24 novembre 2016 (Jeudi)
    Correctif de fiabilité::
    • Ajout d'une protection contre la réception de commandes invalides depuis l'émulateur. Ceci corrige le problème qu'avaient certains jeux de ne pas démarrer. (Le problème touchait PJ64 et mupen64plus)
    Fichier(s):
    mupen64plus-input-raphnetraw-0.9.2.tar.gz (26.3 KB)
    mupen64plus-input-raphnetraw-windows-0.9.2.zip (155.7 KB)
    pj64raphnetraw-0.9.2.tar.gz (15.9 KB)
    pj64raphnetraw-0.9.2.zip (69.4 KB)
    Version 0.9.1
    23 novembre 2016 (Mercredi)
    Changements spécifiques à la version Project64:
    • Changement de spécification de plugin (v1.0 plutôt que v1.1) afin d'être aussi utilisable avec les version précédentes de project64 (1.4-1.6).
    Changements communs aux deux versions:
    • Le polling n'est maintenant désactivé que pendant le jeu (Dans la version précédente, après avoir employé le plugin, il fallait débrancher et rebrancher l'adaptateur pour qu'il fonctionne à nouveau normalement (par DirectInput par exemple).
    Fichier(s):
    mupen64plus-input-raphnetraw-0.9.1.tar.gz (25.8 KB)
    mupen64plus-input-raphnetraw-windows-0.9.1.zip (155.6 KB)
    pj64raphnetraw-0.9.1.tar.gz (15.2 KB)
    pj64raphnetraw-0.9.1.zip (69.3 KB)
    Version 0.9b
    22 novembre 2016 (Mardi)
    Première version publiée pour project64
    Fichier(s):
    pj64raphnetraw-0.9.tar.gz (13.8 KB)
    pj64raphnetraw-0.9.zip (69.3 KB)
    Version 0.9
    20 novembre 2016 (Dimanche)
    Première version publiée (mupen64plus)
    Fichier(s):
    mupen64plus-input-raphnetraw-0.9.tar.gz (25.7 KB)
    mupen64plus-input-raphnetraw-windows-0.9.zip (155.4 KB)
    Ce projet est aussi disponible sur GitHub!
    Pour suggérer de nouvelles fonctionnalités, signaler un problème ou contribuer au projet, vous pouvez m'écrire ou utiliser le dépôt GitHub:
    https://github.com/raphnet/mupen64plus-input-raphnetraw
    Ce projet est aussi disponible sur GitHub!
    Pour suggérer de nouvelles fonctionnalités, signaler un problème ou contribuer au projet, vous pouvez m'écrire ou utiliser le dépôt GitHub:
    https://github.com/raphnet/pj64raphnetraw


    Utilisation (Project 64 sous Windows)

    Pour installer et utiliser le plugin pour PJ64 deux fichiers doivent être copiés vers des endroits spécifiques.

    1: Copiez le fichier suivant dans "répertoire d'installation PJ64"/Plugin/Input:
    • pj64raphnetraw.dll
    (Pour les version plus anciennes de PJ64 (par exemple, version 1.4) il faut mettre le DLL directement dans le répertoire Plugin car il n'y a pas de classification par type.)

    2: Vous devez également copier le fichier suivant dans le répertoire racine de votre installation PJ64 (c'est à dire, le répertoire contenant le .EXE):
    • libhidapi-0.dll
    Ensuite dans la fenêtre de configuration de PJ64, choisissez "raphnetraw for Project64 version xx.xx" de la liste des input plugins.

    Installation du plugin (pj64raphnetraw.dll)

    Installation du plugin (pj64raphnetraw.dll)

    Installation du fichier de support (libhidapi-0.dll)

    Installation du fichier de support (libhidapi-0.dll)

    Sélection du plugin

    Sélection du plugin


    Note: La version actuelle du plugin créera un fichier de logs nommé raphnetraw.log dans le répertoire de votre utilisateur.


    Utilisation (1964 sous Windows)

    Seule la version Net du plugin (voir Versions spéciales) est compatible avec 1964 en raison d'un hack de performance ne fonctionnant qu'avec Project64. (Ce hack empêche également le jeu en ligne de fonctionner sous Project64).

    L'installation du plugin sous 1964 doit être faite ainsi:
    1. Copiez le ficheir raphnetraw_net.dll vers le sous-répertoire plugin/ du dossier 1964.
    2. Copiez le fichier libhidapi-0.dll dans le répertoire racine de 1964 (pas dans le sous-répertoire plugin)
    3. Sélectionnez le plugin raphnetraw de la liste de la boîte de dialogue Change Plugins.
    raphnetraw_net.dll dans plugin/

    raphnetraw_net.dll dans plugin/

    libhidapi-0.dll dans le dossier 1964

    libhidapi-0.dll dans le dossier 1964

    Sélection du plugin

    Sélection du plugin




    Utilisation (mupen64plus sous Windows)

    La version .zip du plugin disponible depuis la section téléchargements ci-dessus contient les versions 32 et 64 bits du plugin. Le contenu du .zip ressemble à ceci:
    mupen64plus-input-raphnetraw-windows-0.9/
    mupen64plus-input-raphnetraw-windows-0.9/README.md
    mupen64plus-input-raphnetraw-windows-0.9/dist_win64/
    mupen64plus-input-raphnetraw-windows-0.9/dist_win64/libhidapi-0.dll
    mupen64plus-input-raphnetraw-windows-0.9/dist_win64/mupen64plus-input-raphnetraw.dll
    mupen64plus-input-raphnetraw-windows-0.9/dist_win32/
    mupen64plus-input-raphnetraw-windows-0.9/dist_win32/libhidapi-0.dll
    mupen64plus-input-raphnetraw-windows-0.9/dist_win32/mupen64plus-input-raphnetraw.dll
    
    Si vous avez la version 64 bit de mupen64-plus, utilisez fichiers du répertoire dist_win64. Pour la version 32 bits, utilisez plutôt les fichiers du répertoire dist_win32.

    Installez le plugin (fichiers .dll) dans un répertoire que mupen64plus examinera lors de la recherche des plugins (ex: Dans le même répertoire que l'exécutable et des autres fichiers .DLL) puis lancez l'émulateur ainsi:
    $ mupen64plus --input mupen64plus-input-raphnetraw
    
    (en ajoutant naturellement les autres éléments applicables tels que le fichier du jeu)


    Utilisation (mupen64plus sous Linux)

    Suivez les instructions du fichier README.md inclut avec le code source. Ensuite, Installez le plugin (fichier .so) dans le répertoire de plugins de votre installation mupen64plus puis lancez l'émulateur ainsi:
    $ mupen64plus --input mupen64plus-input-raphnetraw
    
    (en ajoutant naturellement les autres éléments applicables tels que le fichier du jeu)


    Vérifier le fonctionnement

    Si vous n'êtes pas certain d'avoir réussi à lancer l'émulateur de manière à ce que le plugin raphnet-raw soit utilisé, jetez un coup d'oeil aux messages dans le terminal:



    Avertissement

    Je ne saurais être tenu responsable pour les dommages que l'utilisation des informations ou la mise en œuvre des instructions présentées sur cette page pourrait causer à votre équipement, à vous-même ou à autrui. Aussi, je ne donne aucune garantie quant à l'exactitude des informations et à leur fonctionnement.