playing with your Wiimote MotionPlus like a light gun

Discuss Supermodel and your favorite Model 3 games. Show off your latest threads, this is the place to see and be seen.
Forum rules
Keep it classy!

  • No ROM requests or links.
  • Do not ask to be a play tester.
  • Do not ask about release dates.
  • No drama!

playing with your Wiimote MotionPlus like a light gun

Postby Fench Vik-Thor » Wed Jan 23, 2013 11:05 am

hi supermodelers!
I'm new, and wanted to share a fun experience with you: playing with my wiimote at "the lost world" and "stars wars trilogy".
first you need a wii-remote with motionPlus (inside or not)
just download glovepie (for windows)
and use the mouse script of Lednerg (i just modified the script a little for playing like a Light guns ):

Code: Select all
/*
    Wii MotionPlus and IR Mouse                                  v 2011.03.09
    by lednerg

    Control the mouse with the Wii MotionPlus accessory and the Sensor Bar.
    You can combine both or just use one or the other.
    This is just meant to be used in Windows, not for FPS games.
   
    Requires GlovePIE version .42 or higher.

    Leave the Wiimote on your desk when starting so it can calibrate.
    Wait until only the first LED is lit.
    When using MotionPlus with Sensor Bar,
      move the pointer back and forth diagonally so it can adjust itself.
    If there is a lot of drift from the MotionPlus, press Home to re-calibrate.

    A = Left-Click, Plus = Right-Click, Minus = Middle-Click
    B = Hold mouse still
    Double-Click B = Reset mouse to center
    2 + Roll Wiimote = Adjust zoom
    Home = Re-calibrate
*/

// ==== Buttons ================================================================

var.LeftMouseButton = wiimote.B
var.RightMouseButton = wiimote.plus
//var.MiddleMouseButton = wiimote.Minus
key.one= wiimote.Minus

var.HoldButton = wiimote.A                   // Holds mouse still
var.ResetButton = DoubleClicked(wiimote.A)   // Resets mouse to center
var.ZoomButton = wiimote.Two                 // Hold and then roll to zoom
var.RecalibrateButton = wiimote.Home         // Press and place Wiimote down

// ==== Options ================================================================

GlovePIE.FrameRate = 100hz

var.Zoom = 1.20                         
var.MaxSmooth = 95
var.IgnoreSensorBar = false

// ==== Script =================================================================
if HeldDown(not starting, 2s) and (var.started = false) and wiimote.Exists then toggle(var.started)
if wiimote.Exists = false then var.started = false
if pressed(var.RecalibrateButton) or delta(var.started) {
   // Don't bother changing any of these numbers.
   var.wmCalYP = [ 0, 2 ]
   var.wmDeadZone = 0
   toggle(var.wmCalON)
   [ var.wm_x, var.wm_y ] = [ .5, .5 ]
   [ var.WMIR_x, var.WMIR_y ] = [ 0, 0 ]
   [ var.wmMin_x, var.wmMax_x ] = [ .365, .635 ]
   [ var.irMin_x, var.irMax_x ] = [ .333, .667 ]
   [ var.wmMin_y, var.wmMax_y ] = [ .400, .600 ]
   [ var.irMin_y, var.irMax_y ] = [ .333, .667 ]
   [ var.Hold_x, var.Hold_y ] = [ 0, 0 ]
   [ var.Recenter_x, var.Recenter_y ] = [ 0, 0 ]
}
// ### Calibration
if var.wmCalON = true {
   var.wmCalDiff = EnsureMapRange(|var.wmCalYP|, 0, 1, .01, .5)
   [ var.wmCalYaw, var.wmCalPitch ] = [ var.wmCalYaw, var.wmCalPitch ] * (1-var.wmCalDiff) + var.wmSpeedYP_IN * var.wmCalDiff
   var.wmStill = |var.wmCalYP| < 2 // this will be true while wiimote is ready to be calibrated.
   var.wmMoved = var.wmMoved * .95 + ((|var.wmCalYP|<3)* |var.wmCalYP|) * .05
   if var.wmMoved < .0001 then var.wmDeadZone = 0
   if HeldDown(var.wmStill, 2s) and |var.wmCalYP| > var.wmDeadZone then var.wmDeadZone = |var.wmCalYP|
   if HeldDown(var.wmStill, 5s) then toggle(var.wmCalON)
   if smooth(|wiimote.MotionPlus.RawYawSpeed|, 29) = 0 then var.wmCalYaw = 0
   if smooth(|wiimote.MotionPlus.RawPitchSpeed|, 29) = 0 then var.wmCalPitch = 0
}
// ### Cancel calibration after 15 seconds and reset variables
if HeldDown(var.wmCalON, 15s) and not HeldDown(var.wmStill, 2s) {
   var.wmCalYaw = 0
   var.wmCalPitch = 0
   var.wmDeadZone = 0
   toggle(var.ErrorON)
   toggle(var.wmCalON)
}
// ### Calibration LED Countdown - resets when wiimote is moved
if var.wmCalON then wiimote.Leds = 15 - HeldDown(var.wmStill, 1s) * 1 - HeldDown(var.wmStill, 2s) * 2 - HeldDown(var.wmStill, 3s) * 4 - HeldDown(var.wmStill, 4s) * 8 else wiimote.Leds = 1 + var.ErrorLED
// ### LED Error Flash
if var.ErrorON {
   var.ErrorLED = ( var.ErrorLED <= 0 ) * 14 - ( var.ErrorLED > 0 ) * 1
   wait .1s
   var.ErrorON = var.ErrorON - .02 // (when var.ErrorON reaches .5 it will be false)
else
   if starting then var.ErrorLED = 15
   if var.started then var.ErrorLED = 0
}
// ### Roll - Combines accelerometer and gyroscope roll measurements
var.aRoll_360 = var.aRoll_360 - ((delta(wiimote.Roll) > 100) * 360) + ((delta(wiimote.Roll) < -100) * 360)
var.aRoll_diff = EnsureMapRange(abs(wiimote.Roll - var.aRoll_deg), 1, 10, .01, .05)
var.aRoll_deg = var.aRoll_deg * (1 - var.aRoll_diff) + (wiimote.Roll + var.aRoll_360) * var.aRoll_diff
var.aRoll = RemoveUnits(var.aRoll_deg)
var.gRoll = ( var.Roll + delta(RemoveUnits(wiimote.MotionPlus.GyroRoll)))
var.gaMinus = abs(var.gRoll - var.aRoll)
if HeldDown(var.gaMinus>3, 1s) then var.g_to_aRoll = true
if var.g_to_aRoll = true then var.g_to_aRoll = (var.gaMinus > .1)
if var.g_to_aRoll = true then var.gRoll = var.gRoll + ( - ((var.gRoll - var.aRoll)>0) * var.gaMinus * .1 + ((var.gRoll - var.aRoll)<0) * var.gaMinus * .1 )
var.Roll = var.aRoll * (var.gaMinus<.5) + var.gRoll * (var.gaMinus>.5)
// ### Wii MotionPlus - Converts [ angle & speed ] to [ X & Y ]. Accounts for Roll.
var.wmSpeedYP_IN = [ wiimote.MotionPlus.RawYawSpeed, wiimote.MotionPlus.RawPitchSpeed ]
var.wmCalYP = var.wmSpeedYP_IN - [ var.wmCalYaw, var.wmCalPitch ]
if var.wmCalYP < var.wmDeadZone then var.wmSpeedYP = [ 0, 0 ] else var.wmSpeedYP = var.wmCalYP
[ var.wmSpeedYaw, var.wmSpeedPitch ] = var.wmSpeedYP / RemoveUnits(PIE.FrameRate)
var.wmAngle = atan2(var.wmSpeedYaw, -var.wmSpeedPitch) - var.Roll
var.wmSpeed = [ var.wmSpeedYaw, -var.wmSpeedPitch ]
[ var.wmRollFix_x, var.wmRollFix_y ] = [ sin(var.wmAngle), cos(var.wmAngle) ] * |var.wmSpeed|
if var.started = true and var.wmCalON = false {
   [ var.wm_x, var.wm_y ] = [ var.wm_x, var.wm_y ] + [ var.wmRollFix_x, var.wmRollFix_y ] * .015
   if var.started = true {
      var.wmSpeed_x = var.wmSpeed_x * .8 + abs(delta(var.wm_x)) * 1000
      var.wmSpeed_y = var.wmSpeed_y * .8 + abs(delta(var.wm_y)) * 1000
      var.wmSpeed_xy = [ var.wmSpeed_x, var.wmSpeed_y ]
   }
}
// ### IR Sensor Bar
if wiimote.dot1vis and wiimote.dot2vis and not var.IgnoreSensorBar {
   // Resets Hold and Recentering when IR is seen for the first time
   if var.UsedIR = false {
      [ var.Hold_x, var.Hold_y ] = [ 0, 0 ]
      [ var.Recenter_x, var.Recenter_y ] = [ 0, 0 ]
      var.UsedIR = true
   }
   // Finds mid-point of dot1 and dot2
   var.irDot1_xy = [ (512 - wiimote.dot1x) / 1024, (wiimote.dot1y - 384) / 768 ]
   var.irDot2_xy = [ (512 - wiimote.dot2x) / 1024, (wiimote.dot2y - 384) / 768 ]
   [ var.irMid_x, var.irMid_y ] = ( var.irDot1_xy + var.irDot2_xy ) / 2
   // Finds angle of dots for Roll
   var.irMid_angle = atan2( var.irMid_x, var.irMid_y )
   var.irMid_length = [ var.irMid_x, var.irMid_y ]
   var.irNew_angle = var.irMid_angle - var.Roll
   var.irNew_xy = [ sin(var.irNew_angle) , cos(var.irNew_angle) ] * |var.irMid_length|
   [ var.ir_x, var.ir_y ] = var.irNew_xy + [ .5, .5 ]
   var.irSpeed_x = var.irSpeed_x * .8 + abs(delta(var.ir_x)) * 1000
   var.irSpeed_y = var.irSpeed_y * .8 + abs(delta(var.ir_y)) * 1000
   var.irSpeed_xy = [ var.irSpeed_x , var.irSpeed_y ]
   // Matches IR and Wii MotionPlus Position and Scale
   if (var.irSpeed_x < 40 and var.wmSpeed_x < 40) {
      if ((var.ir_x < var.irMin_x) or (var.MinMax_x = 2 and (var.irMax_x - var.ir_x) >= .15)) and ((var.wmMax_x - var.wm_x) > .075) {
         [ var.wmMin_x, var.irMin_x ] = [ var.wm_x, var.ir_x ]
         var.MinMax_x = 1
      }
      if ((var.ir_x > var.irMax_x) or (var.MinMax_x = 1 and (var.ir_x - var.irMin_x) >= .15)) and ((var.wm_x - var.wmMin_x) > .075) {
         [ var.wmMax_x, var.irMax_x ] = [ var.wm_x, var.ir_x ]
         var.MinMax_x = 2
      }
   }
   if (var.irSpeed_y < 40 and var.wmSpeed_y < 40) {
      if ((var.ir_y < var.irMin_y) or (var.MinMax_y = 2 and (var.irMax_y - var.ir_y) >= .15)) and ((var.wmMax_y - var.wm_y) > .075) {
         [ var.wmMin_y, var.irMin_y ] = [ var.wm_y, var.ir_y ]
         var.MinMax_y = 1
      }
      if ((var.ir_y > var.irMax_y) or (var.MinMax_y = 1 and (var.ir_y - var.irMin_y) >= .15)) and ((var.wm_y - var.wmMin_y) > .075) {
         [ var.wmMax_y, var.irMax_y ] = [ var.wm_y, var.ir_y ]
         var.MinMax_y = 2
      }
   }
   if var.WMIR_switch = 1 {
      [ var.IR_adj_x , var.IR_adj_y ] = [ var.Old_WM_x, var.Old_WM_y ] - [ var.ir_x, var.ir_y ]
      var.WMIR_switch = 0
   }
   if var.WMIR_switch = 0 {
      [ var.Rough_x , var.Rough_y ] = ([ var.ir_x, var.ir_y ] + [ var.IR_adj_x , var.IR_adj_y ] - [ .5, .5 ]) * var.NewZoom + [ .5, .5 ]
      [ var.WMIR_x, var.WMIR_y ] = [ var.wmNew_x , var.wmNew_y ] - [ var.ir_x , var.ir_y ]
      var.WMIR_xy = [ var.WMIR_x, var.WMIR_y ]
      var.IR_adj_c = 1 - EnsureRange(|var.WMIR_xy|, 0, .5) / 5
      [ var.IR_adj_x , var.IR_adj_y ] = [ var.IR_adj_x , var.IR_adj_y ] * var.IR_adj_c
   }
   [ var.WMIR_cal_x, var.WMIR_cal_y ] = [ var.wm_x, var.wm_y ] - [ var.ir_x, var.ir_y ]
else  // (if no IR dots visible)
   [ var.Rough_x , var.Rough_y ] = ([ var.wmNew_x, var.wmNew_y ] - [ var.WMIR_x, var.WMIR_y ] + [ var.IR_adj_x , var.IR_adj_y ] - [ .5, .5 ]) * var.NewZoom + [ .5, .5 ]
   [ var.Old_WM_x, var.Old_WM_y ] = ([ var.Rough_x , var.Rough_y ] - [ .5, .5 ]) / var.NewZoom + [ .5, .5 ]
   var.WMIR_switch = 1
   var.WMIR_xy = [ 0, 0 ]
   if var.started = true and var.wmCalON = false then [ var.ir_x, var.ir_y ] = ([ var.Smooth_x , var.Smooth_y ] - [ .5, .5 ]) / var.NewZoom + [ .5, .5 ]
}
// ### WM / IR Ratio Checking
if (var.ratio = 0) or (var.ratio = 1) or IsNAN(var.ratio) then var.ratio = var.ra
if var.ra != 1 and abs(delta(var.ra))>0 then var.ratio = var.ratio * var.rb + var.ra * (1-var.rb)
var.ra = ((var.wmMax_x - var.wmMin_x)/(var.wmMax_y - var.wmMin_y))/((var.irMax_x - var.irMin_x)/(var.irMax_y - var.irMin_y))
if abs(delta(var.ra))>0 then var.rb = .9975
if abs(var.ratio - var.ra) < .05 {
   if ( HeldDown(delta(var.wmMin_x)=0, 2s) = false ) and  ( HeldDown(delta(var.wmMax_x)=0, 2s) = false ) then [ var.wmNewMin_x, var.wmNewMax_x ] = [ var.wmMin_x, var.wmMax_x ]
   if ( HeldDown(delta(var.wmMin_y)=0, 2s) = false ) and  ( HeldDown(delta(var.wmMax_y)=0, 2s) = false ) then [ var.wmNewMin_y, var.wmNewMax_y ] = [ var.wmMin_y, var.wmMax_y ]
   if ( HeldDown(delta(var.irMin_x)=0, 2s) = false ) and  ( HeldDown(delta(var.irMax_x)=0, 2s) = false ) then [ var.irNewMin_x, var.irNewMax_x ] = [ var.irMin_x, var.irMax_x ]
   if ( HeldDown(delta(var.irMin_y)=0, 2s) = false ) and  ( HeldDown(delta(var.irMax_y)=0, 2s) = false ) then [ var.irNewMin_y, var.irNewMax_y ] = [ var.irMin_y, var.irMax_y ]
}
// ### Map WM to IR
var.wmNew_x = MapRange( var.wm_x, var.wmNewMin_x, var.wmNewMax_x, var.irNewMin_x, var.irNewMax_x  )
var.wmNew_y = MapRange( var.wm_y, var.wmNewMin_y, var.wmNewMax_y, var.irNewMin_y, var.irNewMax_y  )
// ### Mouse Movement Smoothing
if IsInfinite(var.Smooth_x + var.Smooth_y) or IsNaN(var.Smooth_x + var.Smooth_y) then [ var.Smooth_x , var.Smooth_y ] = [ var.Rough_x , var.Rough_y ]
var.Smooth_delta = [ delta(var.Rough_x) , delta(var.Rough_y) ]
var.Smooth_c = EnsureRange(var.Smooth_c * .95 + (|var.Smooth_delta| * 100) * .05 , 1-EnsureRange(sqrt(var.MaxSmooth)/10, .00001, .99999), 1)
if IsInfinite(var.Smooth_c) or IsNaN(var.Smooth_c) then var.Smooth_c = 1
[ var.Smooth_x, var.Smooth_y ] = [ var.Smooth_x, var.Smooth_y ] * (1-var.Smooth_c) + [ var.Rough_x , var.Rough_y ] * var.Smooth_c
// ### Zoom Button
if delta(var.ZoomButton) then var.ZoomFrom = var.Roll/500
if var.ZoomButton then var.ZoomShift = var.ZoomShift + delta(var.Roll)/500 //(var.Roll/500 - var.ZoomFrom)
var.NewZoom = EnsureRange(var.Zoom + var.ZoomShift, .01, 100)
// ### Zoom Cursors
[ cursor1.Visible, cursor7.Visible ] = [ 1, 1 ] * var.ZoomButton + [ 1, 1 ] * KeepDown(delta(var.ZoomButton)<0, 1 second)
[ cursor13.Visible, cursor19.Visible ] = [ 1, 1 ] * var.ZoomButton + [ 1, 1 ] * KeepDown(delta(var.ZoomButton)<0, 1 second)
[ cursor1.x, cursor1.y ] = [ -.5, 0 ] * var.NewZoom + [ .5, .5 ]
[ cursor7.x, cursor7.y ] = [ -.16666, 0 ] * var.NewZoom + [ .5, .5 ]
[ cursor13.x, cursor13.y ] = [ .16666, 0 ] * var.NewZoom + [ .5, .5 ]
[ cursor19.x, cursor19.y ] = [ .5, 0 ] * var.NewZoom + [ .5, .5 ]
// ### Reset, Hold, and Mouse
if var.ResetButton then [ var.Recenter_x, var.Recenter_y ] = [ var.Smooth_x, var.Smooth_y ] - [ var.Hold_x, var.Hold_y ] - [ .5, .5 ]
if var.started and wiimote.Exists and not var.wmCalON {
   if not HeldDown(var.HoldButton, 50ms) {
      [ mouse.x, mouse.y ] = [ var.Smooth_x, var.Smooth_y ] - [ var.Recenter_x, var.Recenter_y ] - [ var.Hold_x, var.Hold_y ]
   else
      [ var.Hold_x, var.Hold_y ] = [ var.Smooth_x, var.Smooth_y ] - [ var.Recenter_x, var.Recenter_y ] - [ mouse.x, mouse.y ]
   }
   lmb = var.LeftMouseButton
   rmb = var.RightMouseButton
   mmb = var.MiddleMouseButton
}
// ### Battery Test
if var.wmCalON = false and delta(var.wmCalON) {
   var.Battery = EnsureRange(wiimote.Battery / 1.92, 0, 100)
   if var.Battery < 15 then var.BattDebug = "  ### LOW BATTERY ###  "+ var.Battery +"%" else var.BattDebug = " Battery: "+ var.Battery +"%"
}
// ### Debug
if (var.wmCalON = true) or (var.BattDebug = 0) then var.BattDebug = ""
if var.UseCalDebug = 0 then var.UseCalDebug = ""
if (var.wmCalON = true) or (var.started = false) then var.ZoomDebug = "" else var.ZoomDebug = " Zoom: "+ var.NewZoom
if (abs(var.wmCalYaw) + abs(var.wmCalPitch) + abs(var.wmDeadZone) > 0.01) and (var.started and not var.wmCalON) {
   var.UseCalDebug = "  * Secondary Calibration *     Out: "+ var.wmSpeedYP +"   Cal: "+ [ var.wmCalYaw, var.wmCalPitch ] +"   In: "+ var.wmSpeedYP_IN +"   DeadZone: "+ var.wmDeadZone
   if delta(var.wmCalON)<0 then var.ErrorON = 0.54
elseif (abs(var.wmCalYaw) + abs(var.wmCalPitch) + abs(var.wmDeadZone) <= 0.01) and ( var.started and not var.wmCalON)
   var.UseCalDebug = "  Default GlovePIE Calibration"
elseif var.wmCalON
   var.UseCalDebug = "   ### CALIBRATING ###         Place the Wiimote down "
}
debug = var.BattDebug +"    "+ var.ZoomDebug +"    "+ var.UseCalDebug

/*
// ### Debug Cursors
var.debugCursors = false
if var.debugCursors = true and var.started = true and var.wmCalON = false {
   [ cursor3.Visible, cursor9.Visible ] = [ true, true ]
   [ cursor15.Visible, cursor21.Visible ] = [ true, true ]
   [ cursor2.Visible, cursor8.Visible ] = [ true, true ]
   [ cursor14.Visible, cursor20.Visible ] = [ true, true ]
   [ cursor3.x, cursor3.y ] = [ var.wmNewMin_x, var.wmNewMin_y ] - [ var.WMIR_cal_x, var.WMIR_cal_y ]
   [ cursor9.x, cursor9.y ] = [ var.wmNewMax_x, var.wmNewMin_y ] - [ var.WMIR_cal_x, var.WMIR_cal_y ]
   [ cursor15.x, cursor15.y ] = [ var.wmNewMax_x, var.wmNewMax_y ] - [ var.WMIR_cal_x, var.WMIR_cal_y ]
   [ cursor21.x, cursor21.y ] = [ var.wmNewMin_x, var.wmNewMax_y ] - [ var.WMIR_cal_x, var.WMIR_cal_y ]
   [ cursor2.x, cursor2.y ] = [ var.irNewMin_x, var.irNewMin_y ]
   [ cursor8.x, cursor8.y ] = [ var.irNewMax_x, var.irNewMin_y ]
   [ cursor14.x, cursor14.y ] = [ var.irNewMax_x, var.irNewMax_y ]
   [ cursor20.x, cursor20.y ] = [ var.irNewMin_x, var.irNewMax_y ]
else
   [ cursor3.Visible, cursor9.Visible ] = [ false, false ]
   [ cursor15.Visible, cursor21.Visible ] = [ false, false ]
   [ cursor2.Visible, cursor8.Visible ] = [ false, false ]
   [ cursor14.Visible, cursor20.Visible ] = [ false, false ]
}
*/



double click on A for reinitialized the cursor
hold A to freeze the cursor
B button is the left click
plus button is the right click

before start the script you need to connected your wi-remote on bluetooth on your PC (like it was a keyboard and mouse peripheral,name is : Nintendo RVL-CNT-01 for me) and the placed your wii-remote on a plane surface for calibration.
i don't use IR sensor bar because it's enough reactive and precise but you can use it

personally in my supermodel.ini I changed InputAutoTrigger to 1 :
Code: Select all
InputAutoTrigger = 1                    ; automatic reload when off-screen


for just click to plus button for reload

voilà!
try it it so fun.

i'm changing the script for playing with two player, but i haven't two wii-remote for now so it's just theoric.
I will post later

have fun
User avatar
Fench Vik-Thor
 
Posts: 5
Joined: Wed Jan 23, 2013 9:16 am

Re: playing with your Wiimote MotionPlus like a light gun

Postby Bart » Wed Jan 23, 2013 11:40 am

Thanks for sharing this!
User avatar
Bart
Site Admin
 
Posts: 2038
Joined: Thu Sep 01, 2011 2:13 pm
Location: New York City

Re: playing with your Wiimote MotionPlus like a light gun

Postby dan76 » Sun Nov 20, 2016 2:28 pm

I'll bump this thread because I just got a mayflash dolphin bar from Amazon - it only cost £12. Plugged it in and it works perfectly with Lost World and Star Wars Trilogy. If you attach the nunchuck into the Wiimote you can do the lightsaber battles with the nunchuck stick (as it's virtually impossible with the Wiimote alone).

I know that SW Trilogy isn't a lightgun game but it's damn fun playing it this way. Ocean hunter is the only game that didn't work straight off, I guess I just have to alter the config file. Anyhow, it's a lot cheaper than the Aimtrak lightgun.
dan76
 
Posts: 20
Joined: Thu Nov 01, 2012 9:05 am
Location: London

Re: playing with your Wiimote MotionPlus like a light gun

Postby terminento » Sun Nov 20, 2016 3:57 pm

¡Holy cow!
If I had a bluetooh adapter I'd be trying this right away!
User avatar
terminento
 
Posts: 158
Joined: Fri Jun 15, 2012 8:08 am

Re: playing with your Wiimote MotionPlus like a light gun

Postby dan76 » Sun Nov 20, 2016 8:01 pm

terminento wrote:¡Holy cow!
If I had a bluetooh adapter I'd be trying this right away!


Not sure what you mean, but it's a USB sensor bar, you just plug it in. All you need is a Wiimote.
I can't get Ocean Hunter to work at all though. I had a look on the SVN thread and altered the ini but no luck. In the test menu it doesn't register anything. It should work as the gun just needs to be set to mouse.

On a side note I just configured it with the Model 2 emu. HOTD is fantastic.
dan76
 
Posts: 20
Joined: Thu Nov 01, 2012 9:05 am
Location: London

Re: playing with your Wiimote MotionPlus like a light gun

Postby terminento » Mon Nov 21, 2016 1:54 pm

You need a bluethooth dongle for the wiimote to communicate with the PC.
maybe that bar that you bought has the bluetooth reception already incorporated in it?
User avatar
terminento
 
Posts: 158
Joined: Fri Jun 15, 2012 8:08 am

Re: playing with your Wiimote MotionPlus like a light gun

Postby dan76 » Mon Nov 21, 2016 2:51 pm

Yes it does. It's basically the Wii sensor bar but with a USB connection for PC. I think the OP was something where you had to have a Bluetooth dongle, but this isn't. Progress!
Here's a link: https://www.amazon.co.uk/Mayflash-W010- ... B00HZWEB74

I love lightgun games and this is one if the best damn things I've ever bought. In mame I'd always used a flight stick as it's the next best thing to a lightgun, but not anymore.
dan76
 
Posts: 20
Joined: Thu Nov 01, 2012 9:05 am
Location: London

Re: playing with your Wiimote MotionPlus like a light gun

Postby Osiris » Sun Nov 27, 2016 12:59 am

Interesting post !

I tried the method of first post : using only Glovepie and a Wiimote ( connected by Bluetooth )
It's run pretty well BUT , I need to recenter the cursor every 5/10 seconds using A button ...
It seems the cursor desync fast after some moves ...

For Dan76 :

Using a mayflash sensor bar, do you need to use Glovepie before playing ?
And ,what about the cursor ? It need to be recenter oftenly pushing A button or it's always perfect ?
Thanks for your response !
Osiris
 
Posts: 6
Joined: Mon Nov 21, 2016 8:48 pm

Re: playing with your Wiimote MotionPlus like a light gun

Postby dan76 » Tue Nov 29, 2016 8:09 am

You don't need Glovepie and I haven't had to re re-centre the cursor at all.
What it does is fool your computer into thinking it's a mouse, so if you've got the mouse set up within Supermodel it should be fine. When I first started it up I had to unplug my regular mouse for it to work, but that was because I had supermodel already running. If the mayflash bar is on first you can use either.

A bit more info about the mayflash bar. There are 4 different ways that it will handle the remote input. For Supermodel and Mame I found option 2 is the one that works. It's just a matter of pressing a switch on the bar itself and cycling through the options. I haven't downloaded any update, it's really just plug and play running windows 7 through bootcamp on an iMac.
(On a side note, in mame if you have a regular mouse plugged in the mayflash bar will be mouse number 2.)

The only downside is that under option 2 only two buttons are mapped. So with Star Wars Trilogy I have the event button mapped to the same button as the second trigger. Even with the nunchuck plugged in it just maps the same two buttons to z and c.

Also, for Star Wars Trilogy you have to use the nunchuck otherwise the Lightsaber duels are almost impossible. Even with this method it's still very difficult because the pointer and nunchuck stick both control the Lightsaber. So when playing you still have to aim at the centre of the screen and then use the nunchuck stick. I've defeated a Boba Fett twice but not Vader yet.

Basically it's like it was ported to the Wii. Lost World and Ocean Hunter are both fantastic. It took a bit of trial and error to get Ocean Hunter working, but that was just down to configuring the right inputs in the ini file, nothing to do with the bar itself.
dan76
 
Posts: 20
Joined: Thu Nov 01, 2012 9:05 am
Location: London

Re: playing with your Wiimote MotionPlus like a light gun

Postby Osiris » Tue Nov 29, 2016 8:53 am

Thanks for your detailed response !

Im interested to buy a plastic gun and put inside the Wiimote ( without nunchuck ).
How do you do for reload on The lost World ?
For saying the truth , im more interested of how it will work with Sega Model 2 games like : House of The Dead and Virtua Cop 1/2.
Did you try it ? thanks !
Osiris
 
Posts: 6
Joined: Mon Nov 21, 2016 8:48 pm

Next

Return to The Catwalk

Who is online

Users browsing this forum: Bing [Bot] and 8 guests