/*StepMania Controls for Nintendo Wii v1.0 - Ashley Muncaster This is currently a work in progress, and is quite inaccurate at times Keyboard Mappings (should be set like this for script to work): | Player 1 | Player 2 | | | | Left | Left Arrow | Numpad4 | Right | Right Arrow | Numpad6 | Up | Up Arrow | Numpad8 | Down | Down Arrow | Numpad2 | Menu Select | Enter | Numpad Enter | Escape | Escape | Numpad Plus | This version supports for upto 2 wiimotes, without nunchuks. Wiimote / Nunchuk controls: Flick Up = Up Flick Down = Down Flick Left = Left Flick Right = Right A = Enter B = Freeze (or Z for Nunchuk) Home = Escape 1 = Set Wiimote to control Player 1 2 = Set Wiimote to control Player 2 To calibrate the wiimotes, lay them on a flat surface, and press "Space Bar". To do freeze arrows with gesture control, hold B (or Z for Nunchuk), then do the appropriate motion for the arrow. Songs upto level 5 or 6 are the maximum for the gesture recognition to work ok - after that, it gets very confused. If possible, try to sync the wiimote movements with StepMania (as in timed motion). StepMania v4.0 CVS does this fine. Happy Gaming :) :) :) */ var.wiimoteforce = 40 var.nunchukforce = 90 if(var.calibrate == false) then var.correctx1 = 0 var.correcty1 = 0 var.correctz1 = 0 var.correctxnunchuk1 = 0 var.correctynunchuk1 = 0 var.correctznunchuk1 = 0 var.correctx2 = 0 var.correcty2 = 0 var.correctz2 = 0 var.correctxnunchuk2 = 0 var.correctynunchuk2 = 0 var.correctznunchuk2 = 0 endif if(space) then var.correctx1 = wiimote1.rawforcex * (-1) var.correcty1 = wiimote1.rawforcey * (-1) var.correctz1 = wiimote1.rawforcez * (-1) var.correctx2 = wiimote2.rawforcex * (-1) var.correcty2 = wiimote2.rawforcey * (-1) var.correctz2 = wiimote2.rawforcez * (-1) if (wiimote1.HasNunchuk) var.correctxnunchuk1 = wiimote1.Nunchuk.rawforcex * (-1) var.correctynunchuk1 = wiimote1.Nunchuk.rawforcey * (-1) + 50 var.correctznunchuk1 = wiimote1.Nunchuk.rawforcez * (-1) endif if (wiimote2.HasNunchuk) var.correctxnunchuk2 = wiimote2.Nunchuk.rawforcex * (-1) var.correctynunchuk2 = wiimote2.Nunchuk.rawforcey * (-1) + 50 var.correctznunchuk2 = wiimote2.Nunchuk.rawforcez * (-1) endif var.calibrate = true endif wiimote1.leds = 2^(var.aa) wiimote2.leds = 2^(var.bb + 1) if(wiimote1.one) then var.aa = 0 if(wiimote1.two) then var.aa = 1 if(wiimote2.one) then var.bb = -1 if(wiimote2.two) then var.bb = 0 var.x = wiimote1.rawforcex + var.correctx1 var.y = wiimote1.rawforcey + var.correcty1 var.z = wiimote1.rawforcez + var.correctz1 if(var.unlockx1a == 4) then if(var.x < var.ax1a and var.x > var.bx1a and var.x > var.oldx1a and var.x > -1 * var.wiimoteforce) then debug = "X: " + var.x var.unlockx1a = 0 else if(var.x > var.ax1a) then var.ax1a = var.x if(var.x < var.bx1a) then var.bx1a = var.x var.oldx1a = var.x endif endif if(var.unlockx1a == 1) then if(var.x < var.ax1a and var.x > var.bx1a and var.x < var.oldx1a and var.x < var.wiimoteforce) then debug = "X: " + var.x var.unlockx1a = 0 else if(var.x > var.ax1a) then var.ax1a = var.x if(var.x < var.bx1a) then var.bx1a = var.x var.oldx1a = var.x endif endif if(var.unlocky1a == 3) then if(var.y < var.ay1a and var.y > var.by1a and var.y > var.oldy1a and var.y > -1 * var.wiimoteforce) then debug = "Y: " + var.y var.unlocky1a = 0 else if(var.y > var.ay1a) then var.ay1a = var.y if(var.y < var.by1a) then var.by1a = var.y var.oldy1a = var.y endif endif if(var.unlocky1a == 2) then if(var.y < var.ay1a and var.y > var.by1a and var.y < var.oldy1a and var.y < var.wiimoteforce) then debug = "Y: " + var.y var.unlocky1a = 0 else if(var.y > var.ay1a) then var.ay1a = var.y if(var.y < var.by1a) then var.by1a = var.y var.oldy1a = var.y endif endif if(var.unlockx1a == 0 and var.x > var.wiimoteforce and abs(var.x) > abs(var.y) and var.last1a == 0) then debug = "X: " + var.x if wiimote1.leds = 1 then right = true else numpad6 = true var.ax1a = var.x var.bx1a = var.x var.oldx1a = var.x var.last1a = 4 var.unlockx1a = 4 endif if(var.unlockx1a == 0 and var.x < -1 * var.wiimoteforce and abs(var.x) > abs(var.y) and var.last1a == 0) then debug = "X: " + var.x if wiimote1.leds = 1 then left = true else numpad4 = true var.ax1a = var.x var.bx1a = var.x var.oldx1a = var.x var.last1a = 1 var.unlockx1a = 1 endif if(var.unlocky1a == 0 and var.y > var.wiimoteforce and abs(var.y) > abs(var.x) and var.last1a == 0) then debug = "Y: " + var.y if wiimote1.leds = 1 then up = true else numpad8 = true var.ay1a = var.y var.by1a = var.y var.oldy1a = var.y var.last1a = 3 var.unlocky1a = 3 endif if(var.unlocky1a == 0 and var.y < -1 * var.wiimoteforce and abs(var.y) > abs(var.x) and var.last1a == 0) then if wiimote1.leds = 1 then down = true else numpad2 = true debug = "Y: " + var.y var.ay1a = var.y var.by1a = var.y var.oldy1a = var.y var.last1a = 2 var.unlocky1a = 2 endif if(wiimote1.leds == 1 and wiimote1.a) then enter = true else enter = false if(wiimote1.leds == 2 and wiimote1.a) then numpadenter = true else numpadenter = false if (wiimote1.leds == 1) then if(wiimote1.home) then escape = true else escape = false endif if (wiimote1.leds == 2) then if(wiimote1.home) then numpadplus = true else numpadplus = false endif if(wiimote1.HasNunchuk) then var.x = wiimote1.Nunchuk.rawforcex + var.correctxnunchuk1 var.y = wiimote1.Nunchuk.rawforcey + var.correctynunchuk1 var.z = wiimote1.Nunchuk.rawforcez + var.correctznunchuk1 if(var.unlockx1b == 4) then if(var.x < var.ax1b and var.x > var.bx1b and var.x > var.oldx1b and var.x > -1 * var.nunchukforce) then debug = "X: " + var.x var.unlockx1b = 0 else if(var.x > var.ax1b) then var.ax1b = var.x if(var.x < var.bx1b) then var.bx1b = var.x var.oldx1b = var.x endif endif if(var.unlockx1b == 1) then if(var.x < var.ax1b and var.x > var.bx1b and var.x < var.oldx1b and var.x < var.nunchukforce) then debug = "X: " + var.x var.unlockx1b = 0 else if(var.x > var.ax1b) then var.ax1b = var.x if(var.x < var.bx1b) then var.bx1b = var.x var.oldx1b = var.x endif endif if(var.unlocky1b == 3) then if(var.y < var.ay1b and var.y > var.by1b and var.y > var.oldy1b and var.y > -1 * var.nunchukforce) then debug = "Y: " + var.y var.unlocky1b = 0 else if(var.y > var.ay1b) then var.ay1b = var.y if(var.y < var.by1b) then var.by1b = var.y var.oldy1b = var.y endif endif if(var.unlocky1b == 2) then if(var.y < var.ay1b and var.y > var.by1b and var.y < var.oldy1b and var.y < var.nunchukforce) then debug = "Y: " + var.y var.unlocky1b = 0 else if(var.y > var.ay1b) then var.ay1b = var.y if(var.y < var.by1b) then var.by1b = var.y var.oldy1b = var.y endif endif if(var.unlockx1b == 0 and var.x > var.nunchukforce and abs(var.x) > abs(var.y) and var.last1b == 0) then debug = "X: " + var.x if wiimote1.leds = 1 then right = true else numpad6 = true var.ax1b = var.x var.bx1b = var.x var.oldx1b = var.x var.last1b = 4 var.unlockx1b = 4 endif if(var.unlockx1b == 0 and var.x < -1 * var.nunchukforce and abs(var.x) > abs(var.y) and var.last1b == 0) then debug = "X: " + var.x if wiimote1.leds = 1 then left = true else numpad4 = true var.ax1b = var.x var.bx1b = var.x var.oldx1b = var.x var.last1b = 1 var.unlockx1b = 1 endif if(var.unlocky1b == 0 and var.y > var.nunchukforce and abs(var.y) > abs(var.x) and var.last1b == 0) then debug = "Y: " + var.y if wiimote1.leds = 1 then up = true else numpad8 = true var.ay1b = var.y var.by1b = var.y var.oldy1b = var.y var.last1b = 3 var.unlocky1b = 3 endif if(var.unlocky1b == 0 and var.y < -1 * var.nunchukforce and abs(var.y) > abs(var.x) and var.last1b == 0) then debug = "Y: " + var.y if wiimote1.leds = 1 then down = true else numpad2 = true var.ay1b = var.y var.by1b = var.y var.oldy1b = var.y var.last1b = 2 var.unlocky1b = 2 endif endif if(wiimote1.b == false) then if(wiimote1.leds == 1) then if(var.last1a == 1) then left = false if(var.last1a == 2) then down = false if(var.last1a == 3) then up = false if(var.last1a == 4) then right = false else if(var.last1a == 1) then numpad4 = false if(var.last1a == 2) then numpad2 = false if(var.last1a == 3) then numpad8 = false if(var.last1a == 4) then numpad6 = false endif var.last1a = 0 endif if(wiimote1.HasNunchuk) if(wiimote1.Nunchuk.ZButton == false) then if(wiimote1.leds == 1) then if(var.last1b == 1) then left = false if(var.last1b == 2) then down = false if(var.last1b == 3) then up = false if(var.last1b == 4) then right = false else if(var.last1b == 1) then numpad4 = false if(var.last1b == 2) then numpad2 = false if(var.last1b == 3) then numpad8 = false if(var.last1b == 4) then numpad6 = false endif var.last1b = 0 endif endif if(wiimote.count > 1) then var.x = wiimote2.rawforcex + var.correctx2 var.y = wiimote2.rawforcey + var.correcty2 var.z = wiimote2.rawforcez + var.correctz1 if(var.unlockx2a == 4) then if(var.x < var.ax2a and var.x > var.bx2a and var.x > var.oldx2a and var.x > -1 * var.wiimoteforce) then debug = "X: " + var.x var.unlockx2a = 0 else if(var.x > var.ax2a) then var.ax2a = var.x if(var.x < var.bx2a) then var.bx2a = var.x var.oldx2a = var.x endif endif if(var.unlockx2a == 1) then if(var.x < var.ax2a and var.x > var.bx2a and var.x < var.oldx2a and var.x < var.wiimoteforce) then debug = "X: " + var.x var.unlockx2a = 0 else if(var.x > var.ax2a) then var.ax2a = var.x if(var.x < var.bx2a) then var.bx2a = var.x var.oldx2a = var.x endif endif if(var.unlocky2a == 3) then if(var.y < var.ay2a and var.y > var.by2a and var.y > var.oldy2a and var.y > -1 * var.wiimoteforce) then debug = "Y: " + var.y var.unlocky2a = 0 else if(var.y > var.ay2a) then var.ay2a = var.y if(var.y < var.by2a) then var.by2a = var.y var.oldy2a = var.y endif endif if(var.unlocky2a == 2) then if(var.y < var.ay2a and var.y > var.by2a and var.y < var.oldy2a and var.y < var.wiimoteforce) then debug = "Y: " + var.y var.unlocky2a = 0 else if(var.y > var.ay2a) then var.ay2a = var.y if(var.y < var.by2a) then var.by2a = var.y var.oldy2a = var.y endif endif if(var.unlockx2a == 0 and var.x > var.wiimoteforce and abs(var.x) > abs(var.y) and var.last2a == 0) then debug = "X: " + var.x if wiimote2.leds = 1 then right = true else numpad6 = true var.ax2a = var.x var.bx2a = var.x var.oldx2a = var.x var.last2a = 4 var.unlockx2a = 4 endif if(var.unlockx2a == 0 and var.x < -1 * var.wiimoteforce and abs(var.x) > abs(var.y) and var.last2a == 0) then debug = "X: " + var.x if wiimote2.leds = 1 then left = true else numpad4 = true var.ax2a = var.x var.bx2a = var.x var.oldx2a = var.x var.last2a = 1 var.unlockx2a = 1 endif if(var.unlocky2a == 0 and var.y > var.wiimoteforce and abs(var.y) > abs(var.x) and var.last2a == 0) then debug = "Y: " + var.y if wiimote2.leds = 1 then up = true else numpad8 = true var.ay2a = var.y var.by2a = var.y var.oldy2a = var.y var.last2a = 3 var.unlocky2a = 3 endif if(var.unlocky2a == 0 and var.y < -1 * var.wiimoteforce and abs(var.y) > abs(var.x) and var.last2a == 0) then if wiimote2.leds = 1 then down = true else numpad2 = true debug = "Y: " + var.y var.ay2a = var.y var.by2a = var.y var.oldy2a = var.y var.last2a = 2 var.unlocky2a = 2 endif if(wiimote2.leds == 1 and wiimote2.a) then enter = true else enter = false if(wiimote2.leds == 2 and wiimote2.a) then numpadenter = true else numpadenter = false if (wiimote2.leds == 1) then if(wiimote2.home) then escape = true else escape = false endif if (wiimote2.leds == 2) then if(wiimote2.home) then numpadplus = true else numpadplus = false endif if(wiimote2.HasNunchuk) then var.x = wiimote2.Nunchuk.rawforcex + var.correctxnunchuk1 var.y = wiimote2.Nunchuk.rawforcey + var.correctynunchuk1 var.z = wiimote2.Nunchuk.rawforcez + var.correctznunchuk1 if(var.unlockx2b == 4) then if(var.x < var.ax2b and var.x > var.bx2b and var.x > var.oldx2b and var.x > -1 * var.nunchukforce) then debug = "X: " + var.x var.unlockx2b = 0 else if(var.x > var.ax2b) then var.ax2b = var.x if(var.x < var.bx2b) then var.bx2b = var.x var.oldx2b = var.x endif endif if(var.unlockx2b == 1) then if(var.x < var.ax2b and var.x > var.bx2b and var.x < var.oldx2b and var.x < var.nunchukforce) then debug = "X: " + var.x var.unlockx2b = 0 else if(var.x > var.ax2b) then var.ax2b = var.x if(var.x < var.bx2b) then var.bx2b = var.x var.oldx2b = var.x endif endif if(var.unlocky2b == 3) then if(var.y < var.ay2b and var.y > var.by2b and var.y > var.oldy2b and var.y > -1 * var.nunchukforce) then debug = "Y: " + var.y var.unlocky2b = 0 else if(var.y > var.ay2b) then var.ay2b = var.y if(var.y < var.by2b) then var.by2b = var.y var.oldy2b = var.y endif endif if(var.unlocky2b == 2) then if(var.y < var.ay2b and var.y > var.by2b and var.y < var.oldy2b and var.y < var.nunchukforce) then debug = "Y: " + var.y var.unlocky2b = 0 else if(var.y > var.ay2b) then var.ay2b = var.y if(var.y < var.by2b) then var.by2b = var.y var.oldy2b = var.y endif endif if(var.unlockx2b == 0 and var.x > var.nunchukforce and abs(var.x) > abs(var.y) and var.last2b == 0) then debug = "X: " + var.x if wiimote2.leds = 1 then right = true else numpad6 = true var.ax2b = var.x var.bx2b = var.x var.oldx2b = var.x var.last2b = 4 var.unlockx2b = 4 endif if(var.unlockx2b == 0 and var.x < -1 * var.nunchukforce and abs(var.x) > abs(var.y) and var.last2b == 0) then debug = "X: " + var.x if wiimote2.leds = 1 then left = true else numpad4 = true var.ax2b = var.x var.bx2b = var.x var.oldx2b = var.x var.last2b = 1 var.unlockx2b = 1 endif if(var.unlocky2b == 0 and var.y > var.nunchukforce and abs(var.y) > abs(var.x) and var.last2b == 0) then debug = "Y: " + var.y if wiimote2.leds = 1 then up = true else numpad8 = true var.ay2b = var.y var.by2b = var.y var.oldy2b = var.y var.last2b = 3 var.unlocky2b = 3 endif if(var.unlocky2b == 0 and var.y < -1 * var.nunchukforce and abs(var.y) > abs(var.x) and var.last2b == 0) then debug = "Y: " + var.y if wiimote2.leds = 1 then down = true else numpad2 = true var.ay2b = var.y var.by2b = var.y var.oldy2b = var.y var.last2b = 2 var.unlocky2b = 2 endif endif if(wiimote2.b == false) then if(wiimote2.leds == 1) then if(var.last2a == 1) then left = false if(var.last2a == 2) then down = false if(var.last2a == 3) then up = false if(var.last2a == 4) then right = false else if(var.last2a == 1) then numpad4 = false if(var.last2a == 2) then numpad2 = false if(var.last2a == 3) then numpad8 = false if(var.last2a == 4) then numpad6 = false endif var.last2a = 0 endif if(wiimote2.HasNunchuk) if(wiimote2.Nunchuk.ZButton == false) then if(wiimote2.leds == 1) then if(var.last2b == 1) then left = false if(var.last2b == 2) then down = false if(var.last2b == 3) then up = false if(var.last2b == 4) then right = false else if(var.last2b == 1) then numpad4 = false if(var.last2b == 2) then numpad2 = false if(var.last2b == 3) then numpad8 = false if(var.last2b == 4) then numpad6 = false endif var.last2b = 0 endif endif endif