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:
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
Ghost
Ghost
Gestionnaire d'adaptateur
Gestionnaire MK64 (project64)
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
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 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
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.
ADAP-GCN64-USB: Adaptateur manette N64 ou Gamecube à USB (n'est plus fabriqué)
Non
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)
L'adaptateur interroge la manette et store la réponse contenant les valeurs d'axes et de boutons en mémoire.
Le PC hôte interroge périodiquement l'adaptateur et reçoit en réponse l'état le plus récent.
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)
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.
Avantages
Dé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:
Le jeu tournant dans l'émulateur fait une requête de lecture d'état de la manette.
Le plugin se charge de transmettre la demande à l'adaptateur par USB
L'adaptateur retransmet la requête telle-quelle à la manette N64 (ou au périphérique en question)
La manette (ou périphérique) réponds
La réponse est reçue par l'adaptateur et retransmise par USB
Le plugin recoit la réponse et la sert sans modifications au jeu.
Avantages
Dé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:
Nom
Fichier
Raison 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.
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 firmwareMise à jour: Malheureusement, cela n'a pas fonctionné.
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.)
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)
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)
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).
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 fichier de support (libhidapi-0.dll)
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:
Copiez le ficheir raphnetraw_net.dll vers le sous-répertoire plugin/ du dossier 1964.
Copiez le fichier libhidapi-0.dll dans le répertoire racine de 1964 (pas dans le sous-répertoire plugin)
Sélectionnez le plugin raphnetraw de la liste de la boîte de dialogue Change Plugins.
raphnetraw_net.dll dans plugin/
libhidapi-0.dll dans le dossier 1964
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:
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:
(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:
(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.