mercredi 3 janvier 2007

Forum WiiPiiCii

J'ai mis en place un forum de discussion afin de pouvoir discuter de vos problèmes, c'est un peu plus pratique que de faire ça dans les commentaires.
Des news et des tutoriaux sont également postées sur ce forum.

http://wiipiicii.free.fr/forum/

Venez nombreux !

mardi 2 janvier 2007

Jouer "correctement" à HL2 avec la Wiimote

Il y a quelques semaines, une vidéo montrait qu'il était possible de jouer à HL2 avec la wiimote, mais à l'époque il n'était pas possible d'utiliser le nunchuk ni le pointeur IR.
Maintenant oui !

Voici une autre vidéo qui le prouve :
http://archives.grapefruitage.com/player.php?id=10002

Les contrôles :


Le script pour GlovePIE :
http://wiipiicii.free.fr/TestHL2.PIE

Ce script peut être utiliser dans n'importe quel mods HL2 (Stargate TLS ou Mammouth Party par exemple :D ) ou même FPS (suffit de bien le paramétrer).
Je vous conseilles de régler la sensibilité dans les options d'HL2, de décocher "Joystick activé" s'il est coché.

Le Speaker de la Wiimote décrypté

Il est maintenant possible d'utiliser la haut-parleur de la Wiimote sur PC, afin d'y envoyer des sons, de la musique etc...

Voici un script pour GlovePIE (v0.27 ou 0.28) permettant d'emettre des sons sur la Wiimote :)
Il suffit de copier/coller ceci dans GlovePIE et de cliquer sur "Run"
// Carl Kenner's Wiimote Speaker Test script! Version 2
// A = start sound, B = stop sound
// Minus = decrease sample frequency
// Plus = increase sample frequency
// It takes a short time to start (due to delays built into Poke)

// Change the next line to set the rate at which sound data is sent
// BUT it must be low enough for the wiimote to respond to the B button
// it may depend on your PC speed. Must be at least 91 for freq 13.
pie.FrameRate = 120 Hz

if not var.initialized then
var.freq = 13 // Set sample rate = 3640 Hz (so computer can keep up)
var.volume = 0x40 // volume = 40 ??? Seems to be about max
debug = var.freq
var.initialized = true
end if

if var.On and (not Wiimote.One) and (not Wiimote.Two) then
// Report 18, send 20 bytes, square wave, 1/4 sample rate freq
WiimoteSend(1, 0x18, 20 shl 3, 0xCC,0x33,0xCC,0x33,0xCC,0x33,0xCC,0x33,0xCC,0x33, 0xCC,0x33,0xCC,0x33,0xCC,0x33,0xCC,0x33,0xCC,0x33)
else if var.On and Wiimote.One then
// Report 18, send 20 bytes, square wave, 1/2 sample rate freq
WiimoteSend(1, 0x18, 20 shl 3, 0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3, 0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3)
else if var.On and Wiimote.Two then
// Report 18, send 20 bytes, square wave, 1/8 sample rate freq
WiimoteSend(1, 0x18, 20 shl 3, 0xCC,0xCC,0x33,0x33,0xCC,0xCC,0x33,0x33,0xCC,0xCC, 0x33,0x33,0xCC,0xCC,0x33,0x33,0xCC,0xCC,0x33,0x33)
end if


if pressed(Wiimote.A) then
// Enable Speaker
Wiimote.Report14 = 0x04 | Int(Wiimote.Rumble)
// Mute Speaker
Wiimote.Report19 = 0x04 | Int(Wiimote.Rumble)
// Write 0x01 to register 0xa20009
WiimotePoke(1, 0x04a20009, 0x01)
// Write 0x08 to register 0xa20001
WiimotePoke(1, 0x04a20001, 0x08)
// Write 7-byte configuration to registers 0xa20001-0xa20008
WiimotePoke(1, 0x04a20001, 0x00)
WiimotePoke(1, 0x04a20002, 0x00)
WiimotePoke(1, 0x04a20003, 0x00)
WiimotePoke(1, 0x04a20004, var.freq)
WiimotePoke(1, 0x04a20005, var.volume) // 40
WiimotePoke(1, 0x04a20006, 0x00)
WiimotePoke(1, 0x04a20007, 0x00)
// Write 0x01 to register 0xa20008
WiimotePoke(1, 0x04a20008, 0x01)
// Unmute speaker
Wiimote.Report19 = 0x00 | Int(Wiimote.Rumble)
var.On = true
end if
if Wiimote.Home then
var.freq= abs(Wiimote.RawForceY)
if var.freq <13
var.freq=13
endif
debug = var.freq
WiimotePoke(1, 0x04a20004, var.freq)
WiimotePoke(1, 0x04a20005, var.volume)
end if

if pressed(Wiimote.B) then
var.On = false
Wiimote.Report19 = 0x04 | Int(Wiimote.Rumble) // Mute Speaker
Wiimote.Report14 = 0x00 | Int(Wiimote.Rumble) // Disable speaker
end if

if pressed(Wiimote.Plus) then
var.freq--
debug = var.freq
// Mute Speaker
Wiimote.Report19 = 0x04 | Int(Wiimote.Rumble)
// Write 0x01 to register 0xa20009
WiimotePoke(1, 0x04a20009, 0x01)
// Write 0x08 to register 0xa20001
WiimotePoke(1, 0x04a20001, 0x08)
// Write 7-byte configuration to registers 0xa20001-0xa20008
WiimotePoke(1, 0x04a20001, 0x00)
WiimotePoke(1, 0x04a20002, 0x00)
WiimotePoke(1, 0x04a20003, 0x00)
WiimotePoke(1, 0x04a20004, var.freq) // max volume?
WiimotePoke(1, 0x04a20005, var.volume)
WiimotePoke(1, 0x04a20006, 0x00)
WiimotePoke(1, 0x04a20007, 0x00)
// Write 0x01 to register 0xa20008
WiimotePoke(1, 0x04a20008, 0x01)
// Unmute speaker
Wiimote.Report19 = 0x00 | Int(Wiimote.Rumble)
end if

if pressed(Wiimote.Minus) then
var.freq++
debug = var.freq
// Mute Speaker
Wiimote.Report19 = 0x04 | Int(Wiimote.Rumble)
// Write 0x01 to register 0xa20009
WiimotePoke(1, 0x04a20009, 0x01)
// Write 0x08 to register 0xa20001
WiimotePoke(1, 0x04a20001, 0x08)
// Write 7-byte configuration to registers 0xa20001-0xa20008
WiimotePoke(1, 0x04a20001, 0x00)
WiimotePoke(1, 0x04a20002, 0x00)
WiimotePoke(1, 0x04a20003, 0x00)
WiimotePoke(1, 0x04a20004, var.freq) // max volume?
WiimotePoke(1, 0x04a20005, var.volume)
WiimotePoke(1, 0x04a20006, 0x00)
WiimotePoke(1, 0x04a20007, 0x00)
// Write 0x01 to register 0xa20008
WiimotePoke(1, 0x04a20008, 0x01)
// Unmute speaker
Wiimote.Report19 = 0x00 | Int(Wiimote.Rumble)
end if


Appuyer sur A pour mettre en marche le Speaker
Appuyer sur B pour arrêter le speaker
Rester appuyer sur Home pour diminuer la fréquence
Appuyer sur - pour diminuer la fréquence
Appuyer sur + pour augmenter la fréquence
Appuyer sur 1 ou 2 pour changer le rythme

Des applications plus concrètent risque d'arriver très bientôt (pour WiiTar et WiiLaser par exemple).
Maintenant toutes les fonctionnalités de la Wiimote sont exploitables, reste a avoir des applications qui gèrent tout ça :)

Wiimote + Lance Missile USB = ?

ça :

1er "vrai" jeu

Voici l'un des premiers jeux conçus pour être utilisé avec la Wiimote sur un PC.
Ce jeu s'appelle WiiSticks, le but du jeu est de tenir 1 baton en équilibre grâce à 2 wiimotes ou alors 1 wiimote et 1 nunchuk.

Voici une vidéo du jeu :

Ainsi que des screens de la "v2" :

Ce jeu n'est pas encore disponible au public :(

Infos complémentaires :
http://www.ogre3d.org/phpBB2/viewtopic.php?t=27509

Dans le même genre, il y a un jeu de trampoline (par le même developpeur) :

dimanche 31 décembre 2006

Application en C#

Voici une information qui devrait intéresser les programmeurs Windows.

Voici une application en C# [.NET 2.0] permettant de communiquer avec la Wiimote via HID.
Le code source de cette application est disponible ici :
http://szymonbanka.com/~kari/

Vous pouvez utiliser Visual Studio 2005 Pro (Gratuit pour les étudiants Français) ou Visual C# 2005 Express Edition (Gratuit pour tout le monde) afin de modifier le code source.

Si vous êtes intéressés, consultez régulièrement l'url ci-dessus, les fonctionnalités suivantes devraient être ajouté :

- Optimisation de la runtine HID.
- Support du pointeur IR
- Contrôle de la Souris, Joystick
- Réglage de la sensitivité
- Calibrage
...

mercredi 27 décembre 2006

[Sensor Bar] compléments

En complément au tutorial pour créér une sensor bar : http://wiipiicii.blogspot.com/2006/12/construire-une-sensor-bar.html

Vous pouvez commander vos composants électroniques sur ce site :
http://www.selectronic.fr le magasin est situé a Paris place de la Nation

Vous pouvez également vous faire livrer par la Poste, mais il y aura des frais de port de minimum 6€.

J'ai fait une liste des différents lots possibles pour réaliser une sensor bar :

Lot 1 : Alimentation sur pile 9V

Plaque d'essai : http://www.selectronic.fr/article.asp?article_ref_entier=70.2330-2 ou http://www.selectronic.fr/article.asp?article_ref_entier=70.2330-1 => 1,50€ ou 2,90€
Connecteur pour l'alimentation : http://www.selectronic.fr/article.asp?article_ref_entier=70.0759-9999 => 0,30€
Fils (1m) : http://www.selectronic.fr/article.asp?article_ref_entier=70.4491-2 => 0,60€

2 LED Infrarouge : http://www.selectronic.fr/article.asp?article_ref_entier=70.6785-9999 => 1,20 €
2 LED de couleur visible : http://www.selectronic.fr/article.asp?article_ref_entier=70.7821-9999 => 0,30€
Résistance d'environ 100 Ohms : http://www.selectronic.fr/article.asp?article_ref_entier=70.4802-9999 => 0,30€

Total : 4,2€ ou 5,6€ (+ 6€ de frais de port)

Lot 2 : Alimentation sur 4 piles 1.5V AAA (6V)

Alimentation : http://www.selectronic.fr/article.asp?article_ref_entier=70.0761-9999 => 0,90€
Plaque d'essai : http://www.selectronic.fr/article.asp?article_ref_entier=70.2330-2 ou http://www.selectronic.fr/article.asp?article_ref_entier=70.2330-1 => 1,50€ ou 2,90€
Connecteur pour l'alimentation : http://www.selectronic.fr/article.asp?article_ref_entier=70.0759-9999 => 0,30€
Fils (1m) : http://www.selectronic.fr/article.asp?article_ref_entier=70.4491-2 => 0,60€

2 LED Infrarouge : http://www.selectronic.fr/article.asp?article_ref_entier=70.6785-9999 => 1,20 €
2 LED de couleur visible : http://www.selectronic.fr/article.asp?article_ref_entier=70.7821-9999 => 0,30€

Total : 4,8€ ou 6,2€ (+ 6€ de frais de port)

pas besoin de fer à souder.

3ème solution proposé par Saiyan78
Alimentation par USB :
http://soj.mesdiscussions.net/overclex/Electronique/Montage/creer-leds-sensorbar-sujet_4882_1.htm#t75494

mardi 19 décembre 2006

[GlovePIE] Intégration du nunchuk

La nouvelle version de GlovePIE (0.27) permet de gérer les nunchuks des wiimotes.
On peut donc dès maintenant utiliser les 2 boutons du nunchuk, son joystick et ses capteurs de mouvements.

Les variables concernant les 2 boutons (C et Z) sont celles-ci :
Wiimote.Nunchuk.CButton Wiimote.Nunchuk.ZButton

Les variables permettant de détecter les mouvements sur les axes X,Y et Z :
Wiimote.Nunchuk.RawForceX
Wiimote.Nunchuk.RawForceY
Wiimote.Nunchuk.RawForceZ


Et les 2 variables permettant de connaitre la position du joystick analogique :
Wiimote.Nunchuk.JoyX Wiimote.Nunchuk.JoyY

Voici un petit schéma que j'ai fait pour plus de précision sur le fonctionnement du joytick analogique (cliquez pour agrandir) :

Il faudra donc utiliser la trigonométrie si vous voulez connaitre l'angle du joystick, vive les maths :)

Lien pour télécharger GlovePIE 0.27 :
http://wiipiicii.free.fr/GlovePIE027.zip

Pour pouvoir utiliser le joystick, il faut installer un joystick virtuel à l'aide du logiciel PPJoy :
http://www.geocities.com/deonvdw/Docs/PPJoyMain.htm

Puis aller dans le Menu PPJoy de GlovePIE.

MISE A JOUR : J'ai pu jouer à Goldneye 64 et Zelda OoT avec le nunchuk et la wiimote, ça marche parfaitement. J'ai utilisé Project64 pour cela.
Les autres jeux N64 devrait marcher parfaitement, ainsi que tous les jeux utilisant un joystick.
De plus le combo nunchuk/wiimote est maintenant possible sur les FPS PC.

Il y a eu une mise à jour de Wiitar qui prend maintenant en compte le nunchuk :
http://www.wiili.org/forum/wiitar-30---(nunchuck-wiitar)-t450.html

Une nouvelle version de GlovePIE est sorti prenant en compte la manette classique (version 0.28)

lundi 18 décembre 2006

Acheter une sensor bar

Une société vends des sensor bars "sans fil", fonctionnant sur pile 9V.
Malheureusement pour nous (ou tant mieux), elle est disponible uniquement pour les Américains, les Anglais et les Japonais !

Son prix est de 31$ pour les USA
38 $ pour les Anglais
et 39$ pour les Japonais

Ca fait chère pour 4 LED et un bouton...

Si vous êtes bricoleur, vous pouvez aussi en fabriquer une pour bien moins chère, ou encore utiliser 2 bougies en évitant de brûler votre TV/PC :D


Le site de la sensor "sans fil" :
http://www.wirelesssensorbar.com/

vendredi 15 décembre 2006

WiiTar

Après WiiSports et WiiOrchestra sur Wii, voici WiiTar sur PC.
Le but? jouer de la guitare avec 2 wiimotes connectées au PC :



Ce script utilise les fonctions du synthétizer MIDI de votre carte son

B to start/stop play

Il vous faut bien évidement le logiciel GlovePIE pour utiliser ces scripts.

MISE A JOUR : Intégration du Nunchuk :

http://www.wiili.org/forum/wiitar-30---(nunchuck-wiitar)-t450.html