I made a script for both Prime games on the GameCube, using GlovePie. It's not as good as playing the trilogy versions on Wii - but for those who play the GC version, it's pretty fun. Here's the catch: the script uses MotionPlus and a Nunchuk. You DON'T NEED A SENSOR BAR FOR THIS because it doesn't use IR. When Holding C on the Nunchuk, you use the Wiimote to look around, and giving it a soft shaking throws missiles. A shoots and B jumps, as usual; Button One uses Morph Ball, Home is Start, and Minus opens the map screen. Nunchuk Z Locks on targets as expected. D-Pad changes weapons, and when holding C on the nunchuk, visors. Any feedback is much appreciated. Thanks to ShineSprite on GlovePie forums for helping with MotionPlus to ppjoy mapping.
Quote://Metroid Prime GC Motion Plus Script
//For this, set Dolphin configuration as:
*Buttons: A = X, B = Z, X = C, Y = S, Z = D, Start = P.
*Main Analog = PPjoy Analog
*C-Stick: Up = I, Down = K, Left = J, Right = L.
*Triggers: L = Q, R = W
*D-Pad: Up = T, Down = G, Left = F, Right = H.
//Leave your Wiimote on your Desk before running the script
*so it can calibrate.
//Analog Stick
ppjoy.analog0 = Wiimote.Nunchuk.JoyX
ppjoy.analog1 = Wiimote.Nunchuk.JoyY
//Buttons
*Shoot
Key.X = Wiimote.A
*Jump
Key.Z = Wiimote.B
*Shake the wiimote to shoot missiles
Key.S = Wiimote.Shake
*Map Screen
Key.D = Wiimote.Minus
*Pause Menu
Key.P = Wiimote.Home
*Look Around - Hold C on the Nunchuck, then look around using Motion Plus
Key.W = Nunchuk.C
*LOCK on
Key.Q = Nunchuk.Z
*Morph Ball
Key.C = Wiimote.1
*Changing Weapons, D-pad
Key.I = Wiimote.Up
Key.K = Wiimote.Down
Key.J = Wiimote.Left
Key.L = Wiimote.Right
*Changing Visors: Hold Nunchuck C, then D-pad
Key.T = Nunchuk.C + Wiimote.Up
Key.G = Nunchuk.C + Wiimote.Down
Key.F = Nunchuk.C + Wiimote.Left
Key.H = Nunchuk.C + Wiimote.Right
/*
WiiMotion Plus Joystick v 2012.05.20
by Shinesprite - adapted from lednerg WiiMotion Plus Mouse (v 2010.01.14)
*/
var.MoveButton = wiimote.Nunchuk.C
//Motion+ joystick limits - change as necessary
var.JoyXMax = 4500
var.JoyXMin = -4500
var.JoyYMax = 3000
var.JoyYMin = -3000
//motion sensing
PIE.FrameRate = 120hz
if wiimote.HasMotionPlus = false then debug = "WiiMotion Plus NOT DETECTED!"
if wiimote.HasMotionPlus = true and var.MoveButton = true {
var.YawSpeed = wiimote.MotionPlus.YawSpeed
var.PitchSpeed = wiimote.MotionPlus.PitchSpeed
if SameValue( Smooth(wiimote.SmoothRoll, 10), wiimote.SmoothRoll, 10) then var.Roll = Smooth(wiimote.SmoothRoll, 10) else var.Roll = wiimote.SmoothRoll
if var.Roll < 0 and var.Roll >= -90 {
var.XYswap = 1 - EnsureMapRange(var.Roll, -90, 0, 0, 1)
var.RightDown = -1
var.TopUp = 1
}
if var.Roll <= 90 and var.Roll >= 0 {
var.XYswap = 1 - EnsureMapRange(var.Roll, 90, 0, 0, 1)
var.RightDown = 1
var.TopUp = 1
}
if var.Roll > 90 and var.Roll <= 180 {
var.XYswap = 1 - EnsureMapRange(var.Roll, 90, 180, 0, 1)
var.RightDown = 1
var.TopUp = -1
}
if var.Roll < -90 and var.Roll >= -180 {
var.XYswap = 1 - EnsureMapRange(var.Roll, -90, -180, 0, 1)
var.RightDown = -1
var.TopUp = -1
}
//Data interpretation
var.SpeedX = var.TopUp * var.YawSpeed - ( var.TopUp * var.YawSpeed * var.XYswap ) + ( var.RightDown * var.PitchSpeed * var.XYswap )
var.SpeedY = var.TopUp * var.PitchSpeed - ( var.TopUp * var.PitchSpeed * var.XYswap) + ( -var.RightDown * var.YawSpeed * var.XYswap )
var.JoyX += Smooth( var.SpeedX )
var.JoyY -= Smooth( var.SpeedY )
//change var.nunX and var.nunY to the appropriate virtual joystick axes
ppjoy.Analog0 = Deadzone(EnsureMapRange(var.JoyX, var.JoyXMin, var.JoyXMax, -1.0, 1.0) )
ppjoy.Analog1 = Deadzone(EnsureMapRange(var.JoyY, var.JoyYMin, var.JoyYMax, -1.0, 1.0) )
}
if var.MoveButton = false {
Var.nunX = Deadzone(Wiimote1.Nunchuk.JoyX*1.1) //revert to nunchuk controls (move horizontally slightly faster)
Var.nunY = Deadzone(Wiimote1.Nunchuk.JoyY*1)
var.JoyX = 0 //simple JoyX reset
var.JoyY = 0 //simple JoyY reset