J'ai acquis un lot comprenant le jeu "House of Dead 2" et un light gun Mad Catz, le tout pour une somme modique. La boite du jeu est cassée mais le light gun est en très bon état externe et il fonctionne.
![](http://hico-srv004.pixhotel.fr/sites/default/files/styles/gamoovernet890px/public/gamoovernet/20100824221237-gc339-Rallonge.gif) | | J'ai aussi acheté une rallonge que je n'ai pas encore reçue.
Mon intention est d'enlever la gaine du câble en son milieu sur une faible longueur pour accéder au 5 fils du Maple bus. Une fois cette rallonge insérée entre l'accessoire et la DC, je pourrais alors raccorder les pinces de l'analyseur Scanalogic 2 sur les fils du bus à travers l'ouverture pratiquée au centre du câble. Ainsi, pour avoir accès aux fils du Maple bus, il ne me sera plus nécessaire de démonter l'accessoire dont je veux décortiquer les échanges.
|
A défaut de rallonge, il a fallu démonter le light-gun pour sortir les fils du Maple bus. L'opération a été bénéfique car elle a permis de se rendre compte que la butée de la gâchette était cassée.
![](http://hico-srv004.pixhotel.fr/sites/default/files/styles/gamoovernet890px/public/gamoovernet/20100824232959-gc339-DSCF4870.JPG)
Le light gun Mad Catz une fois la butée de gâchette réparée. Il est encore équipé des fils nécessaires à l'observation des signaux sur le Maple bus.
Cette butée, qui limite normalement la course de la gâchette, est réalisée par un axe creux en plastique. Cet axe n'est pas d'un seul tenant, il est constitué de deux demi-axes creux en vis à vis et solidaires chacun d'une coquille du gun.
Rien ne solidarisait les deux demi-axes entre eux quand je l'ai démonté, aussi un des deux était cassé à sa base, au ras de la coquille.
L'évidement à l'intérieur des demi-axes est cylindrique et d'un diamètre un poil supérieur à 3 mm.
Un trou a été percé dans la coquille, celle de la cassure. Une vis à tête fraisée de Ø3 introduite dans ce trou maintient le demi-axe cassé en place, le tout à été encollé à l'araldite pour que l'ensemble soit bien monolithique.
La vis étant presque aussi longue que les deux demi-axes mis bout à bout, son extrémité libre pénètre sans jeu dans l'évidement cylindrique du demi-axe de l'autre coquille et assure ainsi la rigidité de la butée.
4) Phases d'initialisation du Light Gun Mad Catz.Suite au reset de la DreamCast, le Light Gun est sollicité par une trame "Device Request" pour envoyer son status.
DC Request ********** 00 0x00 0x80 0xA0 0x01 CS 0x21
| | | | | |
| Header (AP = Absolute Position) 00.1 Command Code = 1 : Device Request 00.2 Destination AP = 10.1.0000 : Base Device on Port C 00.3 Source AP = 10.0.00000 : Port C of Host (DC) 00.4 Data Size = 0
|
Le Light Gun Mad Catz répond par une trame "Device Status" ,tout comme les autres accessoires déjà tracés, à l'exception près qu'il indique la présence de deux fonctions pour le dispositif de base :
- Une fonction Light Gun.
- Une fonction Controller car le Light Gun possède un bouton Start et un bouton B ainsi qu'un pavé directionnel.
Le bloc "Device ID" comporte donc deux blocs de définition (Function Definition Block), un pour chaque fonction.
Device Response *************** 00 0x1C 0xA0 0x80 0x05 01 0x81 0x00 0x00 0x00 02 0x00 0x00 0x00 0x00 03 0xFE 0x00 0x00 0x00 04 0x00 0x00 0x00 0x00 05 0x72 0x44 0x01 0x01 [Dr] 06 0x63 0x6D 0x61 0x65 [eamc] 07 0x20 0x74 0x73 0x61 [ast ] 08 0x20 0x6E 0x75 0x47 [Gun ] 09 0x20 0x20 0x20 0x20 [ ] 10 0x20 0x20 0x20 0x20 [ ] 11 0x20 0x20 0x20 0x20 [ ] 12 0x20 0x20 0x20 0x20 [ ] 13 0x64 0x6F 0x72 0x50 [Prod] 14 0x64 0x65 0x63 0x75 [uced] 15 0x20 0x79 0x42 0x20 [ By ] 16 0x55 0x20 0x72 0x6F [or U] 17 0x72 0x65 0x64 0x6E [nder] 18 0x63 0x69 0x4C 0x20 [ Lic] 19 0x65 0x73 0x6E 0x65 [ense] 20 0x6F 0x72 0x46 0x20 [ Fro] 21 0x45 0x53 0x20 0x6D [m SE] 22 0x45 0x20 0x41 0x47 [GA E] 23 0x52 0x45 0x54 0x4E [NTER] 24 0x53 0x49 0x52 0x50 [PRIS] 25 0x4C 0x2C 0x53 0x45 [ES,L] 26 0x20 0x2E 0x44 0x54 [TD. ] 27 0x20 0x20 0x20 0x20 [ ] 28 0x06 0xFA 0x00 0xA0 CS 0x2F
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| Header (AP = Absolute Position) 00.1 Command Code = 5 : Device Status 00.2 Destination AP = 10.0.00000 : Port C of Host (DC) 00.3 Source AP = 10.1.00000 : Base Device on Port C 00.4 Data Size = 28
Device ID 01 Function Type(s) = 0x00 0x00 00000000b 10000001b : Light-Gun + Controller Functions 02 Function Definition Block 1 = 0x00 0x00 0x00 0x00 : Nothing defined for Light-Gun function 03 Function Definition Block 2 = 0x00 0x00 0x00 0xFE : Controller function 03.1 11111110b : First joystick, buttons Start, A and B used 03.2 00000000b : Second joystick, buttons D, X, Y and Z not equipped 03.3 00000000b : Analogue triggers and joysticks not equipped 03.4 00000000b : Unused 04 Function Definition Block 3 = 0x00 0x00 0x00 0x00 : Third function does not exist
Fixed Device Status 05.1 Destination Region = 00000001b : only North America 05.2 Dummy = 0x01 05.3 Produc Name (30 Ascii) = "Dreamcast Gun " 13.1 License (60 Ascii) = "Produced By Or Under License From SEGA ENTERPRISES,LTD. " 28.1 StandBy current consuption (little endian) = 0x00A0 = 160 : 16 mA 28.3 Maximun current consuption (little endian) = 0x00FA = 250 : 25 mA
|
A noter que ce Light Gun Mad Catz n'est compatible que pour l'Amérique du Nord.
Le Light Gun indique donc qu'il supporte deux fonctions en tant que dispositif de base. Comme c'est le bit de rang le plus élevé qui est prioritaire dans le mot "Function Type(s)", c'est donc le bloc de définition du Light Gun qui suit en premier, celui du "Controller" est en second puisqu'il est le moins prioritaire.
- Le bloc du "Controller" fournit comme les fois précédentes le masque de présence des boutons/manches/gâchettes.
- Le bloc "Light Gun" est vide, il ne fournit aucun masque. La raison est que la gâchette du Light Gun ne fonctionne pas comme un bouton standard.
Le light Gun est équipé d'un bloc photoélectrique (lentille, cellule, amplificateur) qui transforme l'impulsion lumineuse reçue en signal électrique, ce dernier n'étant validé que quand la gâchette est appuyée.
Le bloc photoélectrique ne reçoit cette impulsion lumineuse que quand le spot du balayage écran illumine la surface vers laquelle le Light Gun est pointé.
Le balayage écran étant très rapide, il faut que la réponse du Light Gun vers la DreamCast soit immédiate quand le spot est focalisé sur la cellule à travers la lentille, c'est pourquoi une trame spécifique est utilisée pour cet accessoire : La trame "SDCKB Occupancy Permission".
Petit aparté : La trame "SDCKB Occupancy Permission"Il n'y a que la DreamCast elle même qui puisse générer cette trame, elle débute par un fanion constitué de 8 fronts descendants sur SDCKB pendant que SDCKA est maintenu à un niveau bas.
En fin de fanion, SDCKA retourne à l'état haut. Puis il repasse à nouveau à l'état bas pour indiquer que les rôles sont inversés sur SDCKB : pendant toute cette période de palier à l'état bas sur SDCKA, c'est le dispositif de base qui est émetteur sur SDCKB et la dreamcast qui est réceptrice sur ce même fil.
La DreamCast signale qu'elle reprend la main sur SDCKB quand le palier est terminé, c'est à dire quand elle repositionne SDCKA au niveau haut.
Il n'y a pas de fanion "End", la trame se termine avec la fin du palier bas sur SDCKA.
En fait cette inversion des rôles sur SDCKB ne se fait pas n'importe quand, elle est synchronisée avec le balayage de l'écran.
- Le début du palier bas sur SDCKA est synchrone avec le départ de la trame vidéo, le spot quitte alors le coin gauche en haut d'écran
- Le palier bas s'achève avec la fin de la trame vidéo, c'est à dire quand le spot est arrivé dans le coin droit en bas d'écran.
- Pendant ce palier bas sur SDCKA, le Light Gun prend le contrôle de SDCKB pendant que la DreamCast se met en observation sur ce même fil.
Le Light Gun peut donc retransmettre en temps réel sur SDCKB l'impulsion crée par le passage du spot devant son optique.
A la DreamCast de déterminer la position du spot sur l'écran au moment où elle reçoit cette impulsion sur SDCKB.
Pendant tout ce temps, le Maple bus est monopolisé et est indisponible pour tout autre échange, il ne le redevient que pendant les temps de retour trame.
- La trame "SDCKB Occupancy Permission" ne comporte pas de paramètre ni d'adressage à sa suite, cette trame ne peut donc s'adresser qu'au dispositif de base présent, en l'occurrence le seul Light Gun connecté sur le port.
- Ces trames ne circulent pas en permanence sur le Maple bus, elles ne sont activées qu'à des moments bien déterminés d'un jeu, au moment où des cibles apparaissent sur l'écran.
Aussi pour l'instant, bien que je les voie passer sur l'oscilloscope, je n'arrive pas à capturer le début ou la fin d'une de ces trames avec l'analyseur Scanalogic. Il faut dire que le palier bas sur SDCKA dure presque 20 ms avec un écran à 15 kHz, ce qui est beaucoup plus que la période de capture de l'analyseur quand l'échantillonnage est effectué à 10 Mhz.
Après avoir reçu le status du Light Gun, la DreamCast se met à requérir cycliquement l'état de son pavé directionnel ainsi que de ses boutons tout comme elle le fait avec une manette ordinaire :
DC Request ********** 00 0x01 0x80 0xA0 0x09 01 0x01 0x00 0x00 0x00 CS 0x29
| | | | | | | |
| Header (AP = Absolute Position) 00.1 Command Code = 9 : Get Condition 00.2 Destination AP = 10.1.00000 : Base Device on Port C 00.3 Source AP = 10.0.00000 : Port C of Host (DC) 00.4 Data Size = 1
01 Function Type(s) = 0x00 0x00 00000000b 00000001b : Only Controller Function
|
Device Response *************** 00 0x03 0xA0 0x80 0x08 01 0x01 0x00 0x00 0x00 02 0000 0000 0xFF 0xFF 03 0x80 0x80 0x80 0x80 CS 0x2A
| | | | | | | | | | | | | | | | | | | | |
| Header (AP = Absolute Position) 00.1 Command Code = 8 : Data Transfer 00.2 Destination AP = 10.0.00000 : Port C of Host (DC) 00.3 Source AP = 10.1.00000 : Base Device on Port C 00.4 Data Size = 3
Data 01 Function Type(s) = 0x00 0x00 00000000b 00000001b : Only Controller Function
02 Function Data : 11111111b 11111111b 0x00 0x00 02.1 11111111b : Right a, Left a, Down a, Up b, Start, A, B et C 02.2 11111111b : Right b, Left b, Down b, Up b, D, X, Y et Z Analogue Triggers Data 02.3 0x00 : Right Trigger 02.4 0x00 : Left Trigger
03 Function Data : 0x80 0x80 0x80 0x80 Analogue Joysticks Data 03.1 0x80 0x80 : X, Y 03.2 0x80 0x80 : X, Y, second Joystick
|