Gamoover

Vous aimez GAMOOVER ? Vous avez trouvé la perle rare grâce à notre forum ?
Alors pourquoi pas nous soutenir en effectuant un petit don Paypal sur : contribution@gamoover.net
C'est peut être un détail pour vous, mais nous, ça nous aiderait beaucoup !

Menu

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.

Voir les contributions Menu

Messages - keube

#1
Citation de: subzero76 le Samedi 24 Décembre 2011, 10:08:43 AM
- 1 PC P4 Ubuntu + QMC2 (Monté sur un Tabouret IKEA).

J'ai installé une Archlinux sur un PC à base d'ion, donc pas vraiment une fusée: lancement de gnomeshell en 15 secondes top chrono. La distribution est vraiment légère, l'installation manuelle est abordable si on suit le wiki, qmc2 est dans les dépôts ainsi que sdlmamae. Si un jour j'ai du temps pour monter une mamecab (2 gnomes ça n'aide pas) je partirai sûrement sur cette config. ^-
Bon courage pour la suite!

#2
Le Bistrot de l'Arcade / Quelques mots en passant.
Lundi 17 Octobre 2011, 19:53:29 PM
J'attends tes tutos avec impatience, ça me motivera pour avancer sur le mien!
#3
Je compte changer d'écran de PC et abandonner mon Samsung P2470HD pour un autre Samsung 24p également mais sans tuner TV (pour ne plus avoir de tv à la maison mais c'est un autre sujet), mais c'est écran ne dispose que d'entrées HDMI et VGA. J'ai fait un petit test sur mon p2470hd et l'image est pourrie: couleurs dégradées, police floue... inregardable! J'ai fait un petit tour dans les réglages de l'affichage vidéo (sous Fedora) et l'écran est bien en 1920*1080. Je ne sais pas si le soucis est également présent sous Windows.
Bref tout ça pour dire que si vous êtes comme moi confronté à ce type de problème avec un écran Samsung, la solution consiste à changer le nom de l'entrée  dans le menu de l'écran (!!!). Sélectionner l'entrée HDMI puis comme modifier et sélectionner PC. 8)
#4
Le Bistrot de l'Arcade / vide-greniers powa !!!
Dimanche 25 Septembre 2011, 14:51:56 PM
2 jeux Nes ce matin, 8 euros:
- Adventure Island part II + son étui
- Adventures of Lolo 2 :-* + son étui + notice
Pas donné mais j'ai craqué pour Lolo

#5
Oui j'utilise scanalogic c'est bien pratique pour des signaux de ce type.
Pour le code j'ai les sources de l'UPCB ça me fera gagner un peu de temps
#6
réservé pour le code  8)
#7
Bonjour à tous,

Après avoir montré comment installer un Arduino sous Linux je vais m'en servir un peu. Le but étant de simuler les manettes de différentes consoles. J'ai acheté récemment une manette NES pour sacrifice donc hop au boulot on va commencer par regarder le protocole d'un peu plus près et plus tard le codage sous Arduino (quand j'aurai du temps...)

Je m'attendais à retomber sur ça http://www.mit.edu/~tarvizo/nes-controller.html avec une modification de la période pour tomber sur du 50Hz mais au final c'est un peu différent. Je n'ai pas l'explication: un protocole légèrement différent pour la zone PAL (France?) ou une info erronée reprise à droite à gauche sur les sites...

Pour les différents fils pas de surprise:
-marron: masse
-blanc: 5V (en vert sur mes captures)
-rouge: latch (en jaune sur mes captures)
-orange: clock (en bleu sur mes captures)
-jaune: data (en rouge sur mes captures)

et une première capture pour vérifier le 50Hz:


un petit zoom pour voir ce qui se passe toutes les 20ms:

Ceci n'est pas mentionné sur les quelques sites que j'ai consulté mais à chaque période de 20ms on observe 2 échanges entre la NES et sa manette!

Quelques explications sur le rôle des différents fils:
latch: La NES envoie un petit pulse sur ce fil toutes les 20ms (x2!), la manette stocke les états des boutons et va ensuite les envoyer.
clock: chaque envoi est effectué en synchronisation avec la clock. On remarquera que le signal est inversé par rapport au lien de "référence"
data: c'est ici que sont envoyé les infos

Regardons ces signaux de plus près:
Le latch:

Le pic dure 3.4µs, à nouveau celà diffère des 12µs attendues.

La clock:


A nouveau rien avec avec la période de 12µs et un ratio de 50% attendus puisqu'on est à 0.5µs haut et 25.9µs à l'état bas... On verra également sur une autre image que la clock ne démarre pas en même temps que le latch mais environ 7µs après que le latch soit activé

Data:
Data est à 0 en dehors des transmissions mais durant le transfert une valeur de 5v correspond à l'état bouton relâché.
Les valeurs de A,B,Select,Start,Haut,Bas,Gauche,Droite sont envoyées successivement.
A activé:

B activé:

Select activé:

Start activé:

Haut activé:

Bas activé:

Gauche activé:

Droite activé:


A l'exception de la première donnée envoyée (A), l'état de chaque donnée est maintenu pendant 25,2µs peu après le pic sur le signal clock.
Pour A l'état est mis à jour dès la réception de latch et est maintenu  8.1 µs:


Je rappelle que ces 8 data sont envoyées 2 fois par cycle de 20ms, avec des timings différents de ce que j'ai pu lire sur le net.

Prochaine étape le codage!
EDIT: Ajout de la correspondances fils manette/capture d'écran










#8
Commande de la bible NES passée ce matin, elle était marquée disponible. Je viens d'aller regarder sur leur site, ma commande a déjà été expédiée  :-)=
#9
Citation de: KodeIn le Dimanche 31 Juillet 2011, 01:01:47 AM
Ahhh, ça fait plaisir, je me sens moins seul dans cette section.
Puis comme j'envisage tout de même de me frotter à ces arduinos, des tutos seront les bienvenus.

^-^
Quand j'aurai un peu plus de temps j'espère bien en faire quelques topics sur les protocoles des manettes de différentes consoles. J'avais prévu de commencer par la SNES mais vu ton dernier topic je vais varier un peu (la NES?)
#10
L'objectif de ce tutoriel est de montrer comment installer un environnement de développement pour Arduino sous Linux. Ayant eu un peu de mal à le mettre en place la première fois je profite d'avoir un bureau tout propre pour montrer toutes les étapes nécessaires. La carte Arduino utilisée et une Mega1280 (pour plus d'infos sur le projet Arduino http://www.arduino.cc/fr/ et la distribution Linux une Fedora 15 (vive Gnome Shell! http://www.fedora-fr.org/). Bien sûr tout ceci est à adapter suivant la carte et la distribution mais les bases sont là.
Allez hop c'est parti:
1. Installer l'IDE Arduino. Ce paquet installe également le compilateur:
sudo yum install arduino


Vérifier que l'Arduino est bien détecté par le système:
lsusb
brancher arduino sur le port usb. La LED s'allume.
lsusb => une nouvelle ligne apparaît (chez moi: Bus 006 Device 003: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC)

2. Ajouter les lignes suivantes à la fin de .arduino/preferences.txt pour rendre l'IDE un peu plus bavard.
compile.verbose= true
upload.verbose=true

Lancer l'IDE Arduino. Il demande à ajouter l'utilisateur courant aux groupes dialout et lock. Valider, se delogguer puis relogguer. Relancer l'IDE, vous devez arriver sur cette interface:


Testons l'installation avec ce programme minimal:
void setup()
{
}

void loop()
{
}


Sélectionner la bonne carte Arduino:
Tools => Board => Arduino Mega (ici ATmega1280, à adapter suivant votre carte)

Compiler
Le message "Done compiling" devrait apparaître

Sélectionner le port USB pour flasher l'Arduino:
Tools => Serial Port => /dev/ttyUSB0 (à adapter suivant votre système)

Uploader
Le message "Done uploading" devrait apparaître.
Noter bien dans un coin la ligne qui lance le flashage:

Dans mon cas /usr/bin/avrdude -C/etc/avrdude/avrdude.conf -v -v -v -v -patmega1280 -cstk500v1 -P/dev/ttyUSB0 -b57600 -D -Uflash:w:/tmp/build3610732341014876065.tmp/sketch_jul30a.cpp.hex:i

L'environnment de base fonctionne :). L'IDE Arduino étant minimaliste, on va maintenant configurer un autre IDE, Codeblocks.
Quitter Arduino, débrancher puis rebrancher la carte, ça évite un conflit avec Codeblocks ;)

3. installer codeblocks:
sudo yum install codeblocks
sudo yum install codeblocks-contrib


La suite est basée sur les infos disponible à cette adresse: http://www.johnhenryshammer.com/WOW2/pagesHowTo/atmelPage.php#index

Au premier lancement Codeblocks demande de choisir le compilateur par défaut:


Selectionner le GNU AVR GCC compiler qui doit être marqué "Detected"
Créer un nouveau projet








2 configurations sont crées: DEBUG et RELEASE.
Il faut maintenant editer ces 2 configs:
Project => Build options
Récupérer les lignes de commandes servant à compiler dans Test => pre/post build steps


Les couper/coller dans DEBUG et RELEASE. Ajouter la ligne précédemment récupérée pour flasher la carte à la config RELEASE en changeant uniquement le nom du fichier comme ci dessous:
DEBUG:


RELEASE (à adapter suivant votre carte):


Vous pouvez également configurer les différentes options de compilation dans ce menu., notamment les warnings de compilation.
Il ne reste plus qu'à essayer de compiler dans les différents modes et vérifier que le flashage fonctionne.
Je n'ai pas ajouté comment utiliser les librairies fournies par le projet Arduino, cette étape facultative est expliquée dans le lien précédent.

EDIT du 15/04/2011: J'ai eu quelques soucis avec mon environnement, une erreur comme quoi gnu/stubs-32.h était manquant. La solution est d'aller dans Settings/Compiler and Debugger, sélectionner le GNU AVR GCC compiler/search directories, et remplacer /usr/include par /usr/avr/include
#11
Le Bistrot de l'Arcade / Ils ont débarqué
Mercredi 06 Juillet 2011, 18:29:05 PM
Citation de: LeGlyphon le Mercredi 06 Juillet 2011, 14:47:15 PM
Salut à tous, et surtout à nos amis de la BNP ! :)
Je suis chez Ubisoft, et nous n'avons pas dit notre dernier mot... nous sommes en train de preparer une contre-attaque qui, on l'espere, saura attiser l'esprit de compétition de nos chers voisins  =:))

Pour la petite histoire, nous avions prévu de faire un grand Megaman à la place du Champignon. La salle de réunion (bookée pour l'occasion) a finalement été prise pour un vrai meeting (oui, il y en a qui bossent aussi...) et durant le temps de ce meeting, le MEME megaman a été fait en face alors que nous n'en etions encore qu'à l'étape du slip (provocation, coincidence... ?). En découvrant leur performance éclair (donc seulement 20mn plus tard), nous n'avons pas eu d'autre choix que de nous incliner et proposer autre chose. Felicitation à eux pour leur efficacité.  ^-^

A très bientot, avec de nouvelles creations à partager !

Et bravo à UBI pour la descente en rappel du bâtiment  ^-
#12
Le Bistrot de l'Arcade / Ils ont débarqué
Jeudi 16 Juin 2011, 21:07:14 PM
Citation de: Lonewolf le Jeudi 16 Juin 2011, 10:06:07 AM
Hé oui gamo bloque c'est naze  >:( c'est pour ça que je poste plus dans les bons plans.
Sinon les chefs sont passes et les post it ont rejoint les poubelles :( pacman s'est fait manger, le pong aussi. Link résiste ;)
megaman fait de la résistance également
#13
Le Bistrot de l'Arcade / Ils ont débarqué
Mercredi 15 Juin 2011, 21:24:43 PM
On dirait qu'on est 2 à bosser à BNP Montreuil. J'avais vu les spaces invaders chez UBI, mais j'ai pas su pour la réponse des BNP. Mais comme mon bureau ne donne pas sur UBI mais Air France, obligé de s'informer via gamoover ;D
PS: ils abusent BNP d'avoir coupé gamoover depuis quelques jours >:D
#14
merci bien pour la soirée, très sympa à nouveau ^-
#15
Citation de: Maitre_Poulpi le Vendredi 27 Mai 2011, 12:57:54 PM
Je crois que je viens de comprendre un truc dans le code en fait.
Dis-moi si je me trompe et si je suis clair dans ce que je dis  :D

Dans cette ligne : P1OUT &= ~(BIT0 + BIT6);

En fait, quand on fait référence à un BIT, d'un point de vue code, c'est qu'on le met à 1.
Comme tu as mis l'opérateur ~ (NOT), on l'apelle à 0.
Donc, peut importe le reste des "BIT" puisqu'on y fait pas référence.
Avec l'opérateur &, on teste l'état précédent si BIT0 était à 0 alors BIT0=0 (car 0&0=0) si BIT0 était à 1 alors BIT0=0 (car 1&0=0).

Je sais pas si je suis clair  ;D
je pense que tu as compris mais on va détailler tout ça:
#define BIT0 0x01 /* en binaire 00000001 */
#define BIT6 0x40 /* en binaire 01000000 */
BIT0 + BIT6 = 0x41 /* en binaire 01000001 */
~(BIT0 + BIT6) = 0xBE /* en binaire 10111110 */
l'opérateur & va donc mettre à 0 les bits 0 et 6 et conserver la valeurs des autres bits:
valeur du port & 10111110 => X0XXXXX0 (X étant la valeur précédente de la pin)
#16
Citation de: gc339 le Vendredi 27 Mai 2011, 12:23:22 PM
Bonjour.

Le problème avec un bouton mécanique, c'est que son contact rebondit lors de son établissement/relâchement générant ainsi des parasites qui peuvent semer la confusion dans le programme d'un µC.
La solution généralement employée consiste à lire périodiquement les "keys" ou "switches" (toutes les 8/10 ms)  à l'aide d'un délai réalisé soit par une boucle logicielle soit par l'interruption d'un timer interne.
Un changement d'état d'un bouton ne sera effectif que quand ce dernier aura été vu au moins deux fois de suite dans le même état. A partir de ce ce moment là, l'état du bouton sera considéré comme à nouveau stable.
Cet algorithme nécessite de stocker les états des boutons à chaque lecture afin de comparer les états qui viennent juste d'être lus avec ceux de la lecture précédente, c'est à dire ceux lus 8/10 ms avant.
La "e"littérature fourmille d'exemples à ce sujet, il suffit de faire une recherche avec les mots clefs suivants :

  • key, keys, switch ou switches.
  • debounce ou debouncing.
  • et éventuellement "multiple".

Tu vas nous le perdre avec le filtrage sur les entrées!
Comme quoi un exercice a priori tout bête peut se relever plus complexe que prévu.