Advertisement
Guest User

Untitled

a guest
Jul 8th, 2013
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 16.11 KB | None | 0 0
  1. // My best IR Mouse Script, with 5DOF Tracking
  2. // By Carl Kenner
  3.  
  4. //Edited for MAME 2P/ppjoy by Bakou
  5.  
  6. // Change these values for wiimote1:
  7. var.SensorBarSeparation = 8.0 inches  // distance between middles of two sensor bar dots
  8. var.NoYawAllowed = true  // Calculates X if no yaw is allowed, otherwise calculates Yaw but not X
  9. var.IRMulX = 1.0
  10. var.IRMulY = 1.0
  11. var.IROffsetX = 0  // add to mouse.x
  12. var.IROffsetY = 0  // add to mouse.y
  13. var.IRLeftButton = Wiimote1.A
  14. var.IRRightButton = Wiimote1.B
  15.  
  16. var.FreezeTime = 25ms
  17.  
  18. // change these values for wiimote2
  19. var.SecondSensorBarSeparation = 8.0 inches  // distance between middles of two sensor bar dots
  20. var.SecondNoYawAllowed = true  // Calculates X if no yaw is allowed, otherwise calculates Yaw but not X
  21. var.SecondIRMulX = 1.2
  22. var.SecondIRMulY = 1.2
  23. var.SecondIROffsetX = 0  // add to mouse.x
  24. var.SecondIROffsetY = 0  // add to mouse.y
  25. var.SecondIRLeftButton = Wiimote2.A
  26. var.SecondIRRightButton = Wiimote2.B
  27.  
  28. var.SecondFreezeTime = 25ms
  29.  
  30.  
  31. // Code for wiimote 1 ------------------------------------------------------------------------------------
  32.  
  33. // Compensate for roll
  34. var.c = cos(Smooth(wiimote1.roll, 10))
  35. var.s = sin(Smooth(wiimote1.roll, 10))
  36. if wiimote1.dot1vis then
  37.   var.dot1x = var.c*(511.5-wiimote1.dot1x)/511.5 - var.s*(wiimote1.dot1y-383.5)/511.5
  38.   var.dot1y = var.s*(511.5-wiimote1.dot1x)/511.5 + var.c*(wiimote1.dot1y-383.5)/511.5
  39. end if
  40. if wiimote1.dot2vis then
  41.   var.dot2x = var.c*(511.5-wiimote1.dot2x)/511.5 - var.s*(wiimote1.dot2y-383.5)/511.5
  42.   var.dot2y = var.s*(511.5-wiimote1.dot2x)/511.5 + var.c*(wiimote1.dot2y-383.5)/511.5
  43. end if
  44.  
  45. // if both dots are visible check which is which and how far apart
  46. if wiimote1.dot1vis and wiimote1.dot2vis then
  47.   if var.dot1x <= var.dot2x then
  48.     var.leftdot = 1
  49.     var.dotdeltay = var.dot2y - var.dot1y
  50.   else
  51.     var.leftdot = 2
  52.     var.dotdeltay = var.dot1y - var.dot2y
  53.   end if
  54.   var.dotdeltax = abs(var.dot1x-var.dot2x)
  55.   var.DotSep = hypot(var.dotdeltax, var.dotdeltay) * 511.5
  56.   var.IRDistance = var.SensorBarSeparation * 1320 / var.DotSep
  57. end if
  58.  
  59. // sort out the position of the left and right dots
  60. if var.leftdot = 1 then
  61.   if wiimote1.dot1vis and wiimote1.dot2vis then
  62.     var.LeftDotX = var.dot1x
  63.     var.LeftDotY = var.dot1y
  64.     var.LeftDotVis = true
  65.     var.RightDotX = var.dot2x
  66.     var.RightDotY = var.dot2y
  67.     var.RightDotVis = true
  68.   else if wiimote1.dot1vis then
  69.     if hypot(var.leftdotx-var.dot1x,var.leftdoty-var.dot1y) <= hypot(var.rightdotx-var.dot1x,var.rightdoty-var.dot1y) then
  70.       // is the real dot 1
  71.       var.LeftDotX = var.dot1x
  72.       var.LeftDotY = var.dot1y
  73.       var.RightDotX = var.dot1x + var.dotdeltax
  74.       var.RightDotY = var.dot1y + var.dotdeltay
  75.       var.LeftDotVis = true
  76.       var.RightDotVis = false
  77.     else
  78.       // was originally dot 2, but now called dot 1.
  79.       var.leftdot = 2 // this dot (1) is actually the right dot
  80.       var.LeftDotX = var.dot1x - var.dotdeltax
  81.       var.LeftDotY = var.dot1y - var.dotdeltay
  82.       var.RightDotX = var.dot1x
  83.       var.RightDotY = var.dot1y
  84.       var.RightDotVis = true
  85.       var.LeftDotVis = false
  86.     end if
  87.   else if wiimote1.dot2vis then
  88.     var.LeftDotX = var.dot2x - var.dotdeltax
  89.     var.LeftDotY = var.dot2y - var.dotdeltay
  90.     var.RightDotX = var.dot2x
  91.     var.RightDotY = var.dot2y
  92.     var.RightDotVis = true
  93.     var.LeftDotVis = false
  94.   end if
  95. else if var.leftdot = 2 then
  96.   if wiimote1.dot1vis and wiimote1.dot2vis then
  97.     var.LeftDotX = var.dot2x
  98.     var.LeftDotY = var.dot2y
  99.     var.LeftDotVis = true
  100.     var.RightDotX = var.dot1x
  101.     var.RightDotY = var.dot1y
  102.     var.RightDotVis = true
  103.   else if wiimote1.dot1vis then
  104.     if hypot(var.leftdotx-var.dot1x,var.leftdoty-var.dot1y) <= hypot(var.rightdotx-var.dot1x,var.rightdoty-var.dot1y) then
  105.       var.leftdot = 1 // dot 1 is now the left dot
  106.       var.LeftDotX = var.dot1x
  107.       var.LeftDotY = var.dot1y
  108.       var.RightDotX = var.dot1x + var.dotdeltax
  109.       var.RightDotY = var.dot1y + var.dotdeltay
  110.       var.LeftDotVis = true
  111.       var.RightDotVis = false
  112.     else
  113.       // the real dot 1 (on the right)
  114.       var.LeftDotX = var.dot1x - var.dotdeltax
  115.       var.LeftDotY = var.dot1y - var.dotdeltay
  116.       var.RightDotX = var.dot1x
  117.       var.RightDotY = var.dot1y
  118.       var.RightDotVis = true
  119.       var.LeftDotVis = false
  120.     end if
  121.   else if wiimote1.dot2vis then
  122.     var.RightDotX = var.dot2x + var.dotdeltax
  123.     var.RightDotY = var.dot2y + var.dotdeltay
  124.     var.LeftDotX = var.dot2x
  125.     var.LeftDotY = var.dot2y
  126.     var.LeftDotVis = true
  127.     var.RightDotVis = false
  128.   end if
  129. else
  130.   var.LeftDotX = var.dot1x
  131.   var.LeftDotY = var.dot1y
  132.   var.RightDotX = var.LeftDotX
  133.   var.RightDotY = var.LeftDotY
  134.   var.LeftDotVis = true
  135.   var.RightDotVis = true
  136. end if
  137.  
  138.  
  139. // Find the imaginary middle dot
  140. var.MiddleDotX = (var.leftdotx + var.rightdotx)/2
  141. var.MiddleDotY = (var.leftdoty + var.rightdoty)/2
  142. var.MiddleDotVis = wiimote1.dot1vis or wiimote1.dot2vis
  143.  
  144. if var.MiddleDotVis then
  145.   var.TotalPitch = atan2(511.5*var.MiddleDotY,1320) + Wiimote.Pitch
  146.   var.DotYaw = atan2(-511.5*var.MiddleDotX,1320) // assume yaw is 0
  147.   var.WiimoteYawNoX = atan2(511.5*var.MiddleDotX,1320)
  148.   var.WiimoteXNoYaw = -sin(var.dotyaw)*var.IRDistance
  149.   var.WiimoteY = -sin(var.totalpitch)*var.IRDistance
  150.   var.WiimoteZ = (-sqrt(sqr(var.IRDistance) - sqr(var.WiimoteY)))*var.IRDistance/RemoveUnits(var.IRDistance)
  151. end if
  152.  
  153. // scale it to the screen range 0 to 1
  154. var.IRx = var.IRMulX*var.middledotx/2 + 0.5
  155. var.IRy = var.IRMulY*var.middledoty*1023/767/2 + 0.5
  156. var.IRvis = wiimote1.dot1vis or wiimote1.dot2vis
  157. var.IROnScreen = 0 <= var.IRx <= 1  and  0 <= var.IRy <= 1
  158.  
  159. // is it off the screen?
  160. var.IRTooFarLeft = var.IRx < 0 or (var.IRx < 0.1 and (not var.IRvis))
  161. var.IRTooFarRight = var.IRx > 1 or (var.IRx > 1-0.1 and (not var.IRvis))
  162. var.IRTooFarUp = var.IRy < 0 or (var.IRy < 0.1 and (not var.IRvis))
  163. var.IRTooFarDown = var.IRy > 1 or (var.IRy > 1-0.1 and (not var.IRvis))
  164.  
  165. // Heavily smooth small movements, but do zero lag for quick movements
  166. var.MoveAmount = 1024*hypot(delta(var.IRx), delta(var.IRy))
  167. if smooth(var.MoveAmount) > 12 then
  168.   var.SmoothX = var.IRx
  169.   var.SmoothY = var.IRy
  170.   var.LastSureFrame = PIE.Frame
  171. else if (PIE.frame-var.LastSureFrame) > 18 then
  172.   var.SmoothX = Smooth(var.IRx, 18, 4/1024)
  173.   var.SmoothY = Smooth(var.IRy, 18, 4/1024)
  174. else if (PIE.frame-var.LastSureFrame) > 14 then
  175.   var.SmoothX = Smooth(var.IRx, 14, 4/1024)
  176.   var.SmoothY = Smooth(var.IRy, 14, 4/1024)
  177. else if (PIE.frame-var.LastSureFrame) > 10 then
  178.   var.SmoothX = Smooth(var.IRx, 10, 4/1024)
  179.   var.SmoothY = Smooth(var.IRy, 10, 4/1024)
  180. else if (PIE.frame-var.LastSureFrame) > 6 then
  181.   var.SmoothX = Smooth(var.IRx, 6, 4/1024)
  182.   var.SmoothY = Smooth(var.IRy, 6, 4/1024)
  183. else if (PIE.frame-var.LastSureFrame) > 2 then
  184.   var.SmoothX = Smooth(var.IRx, 2, 4/1024)
  185.   var.SmoothY = Smooth(var.IRy, 2, 4/1024)
  186. end if
  187.  
  188. // Freeze the mouse cursor while they start pressing the button
  189. // otherwise it will make the cursor jump
  190. var.Freeze = (var.IRLeftButton or var.IRRightButton) and KeepDown(pressed(var.IRLeftButton) or pressed(var.IRRightButton), var.FreezeTime)
  191.  
  192. // Only change the mouse position if pointing at the screen
  193. // otherwise they can still use a real mouse
  194. if var.IRvis and (not var.Freeze) then
  195.    // convert to joystick coordinates
  196.   ppjoy0.Analog0 = (var.SmoothX - 0.5 ) * 2.0
  197.   ppjoy0.Analog1 = (var.SmoothY - 0.5 ) * 2.0
  198. end if
  199.  
  200. // delay the buttons slightly so we have time to freeze the cursor (is that needed?)
  201. ppjoy0.Digital2 = var.IRLeftButton and (not KeepDown(pressed(var.IRLeftButton), 40ms))
  202. ppjoy0.Digital0 = var.IRRightButton and (not KeepDown(pressed(var.IRRightButton), 40ms))
  203. ppjoy0.Digital1 = wiimote1.one
  204. ppjoy0.Digital3 = wiimote1.two
  205. ppjoy0.Digital4 = wiimote1.Plus
  206. ppjoy0.Digital5 = wiimote1.Minus
  207. ppjoy0.Digital6 = wiimote1.Home
  208. ppjoy0.Digital7 = wiimote1.Up
  209. ppjoy0.Digital8 = wiimote1.Down
  210. ppjoy0.Digital9 = wiimote1.Left
  211. ppjoy0.Digital10 = wiimote1.Right
  212.  
  213.  
  214. // Code for wiimote #2 ------------------------------------------------------------------------------------
  215.  
  216.  
  217. // Compensate for roll
  218. var.Secondc = cos(Smooth(wiimote2.roll, 10))
  219. var.Seconds = sin(Smooth(wiimote2.roll, 10))
  220. if wiimote2.dot1vis then
  221.   var.Seconddot1x = var.Secondc*(511.5-wiimote2.dot1x)/511.5 - var.Seconds*(wiimote2.dot1y-383.5)/511.5
  222.   var.Seconddot1y = var.Seconds*(511.5-wiimote2.dot1x)/511.5 + var.Secondc*(wiimote2.dot1y-383.5)/511.5
  223. end if
  224. if wiimote2.dot2vis then
  225.   var.Seconddot2x = var.Secondc*(511.5-wiimote2.dot2x)/511.5 - var.Seconds*(wiimote2.dot2y-383.5)/511.5
  226.   var.Seconddot2y = var.Seconds*(511.5-wiimote2.dot2x)/511.5 + var.Secondc*(wiimote2.dot2y-383.5)/511.5
  227. end if
  228.  
  229. // if both dots are visible check which is which and how far apart
  230. if wiimote2.dot1vis and wiimote2.dot2vis then
  231.   if var.Seconddot1x <= var.Seconddot2x then
  232.     var.Secondleftdot = 1
  233.     var.Seconddotdeltay = var.Seconddot2y - var.Seconddot1y
  234.   else
  235.     var.Secondleftdot = 2
  236.     var.Seconddotdeltay = var.Seconddot1y - var.Seconddot2y
  237.   end if
  238.   var.Seconddotdeltax = abs(var.Seconddot1x-var.Seconddot2x)
  239.   var.SecondDotSep = hypot(var.Seconddotdeltax, var.Seconddotdeltay) * 511.5
  240.   var.SecondIRDistance = var.SecondSensorBarSeparation * 1320 / var.SecondDotSep
  241. end if
  242.  
  243. // sort out the position of the left and right dots
  244. if var.Secondleftdot = 1 then
  245.   if wiimote2.dot1vis and wiimote2.dot2vis then
  246.     var.SecondLeftDotX = var.Seconddot1x
  247.     var.SecondLeftDotY = var.Seconddot1y
  248.     var.SecondLeftDotVis = true
  249.     var.SecondRightDotX = var.Seconddot2x
  250.     var.SecondRightDotY = var.Seconddot2y
  251.     var.SecondRightDotVis = true
  252.   else if wiimote2.dot1vis then
  253.     if hypot(var.Secondleftdotx-var.Seconddot1x,var.Secondleftdoty-var.Seconddot1y) <= hypot(var.Secondrightdotx-var.Seconddot1x,var.Secondrightdoty-var.Seconddot1y) then
  254.       // is the real dot 1
  255.       var.SecondLeftDotX = var.Seconddot1x
  256.       var.SecondLeftDotY = var.Seconddot1y
  257.       var.SecondRightDotX = var.Seconddot1x + var.Seconddotdeltax
  258.       var.SecondRightDotY = var.Seconddot1y + var.Seconddotdeltay
  259.       var.SecondLeftDotVis = true
  260.       var.SecondRightDotVis = false
  261.     else
  262.       // was originally dot 2, but now called dot 1.
  263.       var.Secondleftdot = 2 // this dot (1) is actually the right dot
  264.       var.SecondLeftDotX = var.Seconddot1x - var.Seconddotdeltax
  265.       var.SecondLeftDotY = var.Seconddot1y - var.Seconddotdeltay
  266.       var.SecondRightDotX = var.Seconddot1x
  267.       var.SecondRightDotY = var.Seconddot1y
  268.       var.SecondRightDotVis = true
  269.       var.SecondLeftDotVis = false
  270.     end if
  271.   else if wiimote2.dot2vis then
  272.     var.SecondLeftDotX = var.Seconddot2x - var.Seconddotdeltax
  273.     var.SecondLeftDotY = var.Seconddot2y - var.Seconddotdeltay
  274.     var.SecondRightDotX = var.Seconddot2x
  275.     var.SecondRightDotY = var.Seconddot2y
  276.     var.SecondRightDotVis = true
  277.     var.SecondLeftDotVis = false
  278.   end if
  279. else if var.Secondleftdot = 2 then
  280.   if wiimote2.dot1vis and wiimote2.dot2vis then
  281.     var.SecondLeftDotX = var.Seconddot2x
  282.     var.SecondLeftDotY = var.Seconddot2y
  283.     var.SecondLeftDotVis = true
  284.     var.SecondRightDotX = var.Seconddot1x
  285.     var.SecondRightDotY = var.Seconddot1y
  286.     var.SecondRightDotVis = true
  287.   else if wiimote2.dot1vis then
  288.     if hypot(var.Secondleftdotx-var.Seconddot1x,var.Secondleftdoty-var.Seconddot1y) <= hypot(var.Secondrightdotx-var.Seconddot1x,var.Secondrightdoty-var.Seconddot1y) then
  289.       var.Secondleftdot = 1 // dot 1 is now the left dot
  290.       var.SecondLeftDotX = var.Seconddot1x
  291.       var.SecondLeftDotY = var.Seconddot1y
  292.       var.SecondRightDotX = var.Seconddot1x + var.Seconddotdeltax
  293.       var.SecondRightDotY = var.Seconddot1y + var.Seconddotdeltay
  294.       var.SecondLeftDotVis = true
  295.       var.SecondRightDotVis = false
  296.     else
  297.       // the real dot 1 (on the right)
  298.       var.SecondLeftDotX = var.Seconddot1x - var.Seconddotdeltax
  299.       var.SecondLeftDotY = var.Seconddot1y - var.Seconddotdeltay
  300.       var.SecondRightDotX = var.Seconddot1x
  301.       var.SecondRightDotY = var.Seconddot1y
  302.       var.SecondRightDotVis = true
  303.       var.SecondLeftDotVis = false
  304.     end if
  305.   else if wiimote2.dot2vis then
  306.     var.SecondRightDotX = var.Seconddot2x + var.Seconddotdeltax
  307.     var.SecondRightDotY = var.Seconddot2y + var.Seconddotdeltay
  308.     var.SecondLeftDotX = var.Seconddot2x
  309.     var.SecondLeftDotY = var.Seconddot2y
  310.     var.SecondLeftDotVis = true
  311.     var.SecondRightDotVis = false
  312.   end if
  313. else
  314.   var.SecondLeftDotX = var.Seconddot1x
  315.   var.SecondLeftDotY = var.Seconddot1y
  316.   var.SecondRightDotX = var.SecondLeftDotX
  317.   var.SecondRightDotY = var.SecondLeftDotY
  318.   var.SecondLeftDotVis = true
  319.   var.SecondRightDotVis = true
  320. end if
  321.  
  322.  
  323. // Find the imaginary middle dot
  324. var.SecondMiddleDotX = (var.Secondleftdotx + var.Secondrightdotx)/2
  325. var.SecondMiddleDotY = (var.Secondleftdoty + var.Secondrightdoty)/2
  326. var.SecondMiddleDotVis = wiimote2.dot1vis or wiimote2.dot2vis
  327.  
  328. if var.SecondMiddleDotVis then
  329.   var.SecondTotalPitch = atan2(511.5*var.SecondMiddleDotY,1320) + Wiimote.Pitch
  330.   var.SecondDotYaw = atan2(-511.5*var.SecondMiddleDotX,1320) // assume yaw is 0
  331.   var.SecondWiimoteYawNoX = atan2(511.5*var.SecondMiddleDotX,1320)
  332.   var.SecondWiimoteXNoYaw = -sin(var.Seconddotyaw)*var.SecondIRDistance
  333.   var.SecondWiimoteY = -sin(var.Secondtotalpitch)*var.SecondIRDistance
  334.   var.SecondWiimoteZ = (-sqrt(sqr(var.SecondIRDistance) - sqr(var.SecondWiimoteY)))*var.SecondIRDistance/RemoveUnits(var.SecondIRDistance)
  335. end if
  336.  
  337. // scale it to the screen range 0 to 1
  338. var.SecondIRx = var.SecondIRMulX*var.Secondmiddledotx/2 + 0.5
  339. var.SecondIRy = var.SecondIRMulY*var.Secondmiddledoty*1023/767/2 + 0.5
  340. var.SecondIRvis = wiimote2.dot1vis or wiimote2.dot2vis
  341. var.SecondIROnScreen = 0 <= var.SecondIRx <= 1  and  0 <= var.SecondIRy <= 1
  342.  
  343. // is it off the screen?
  344. var.SecondIRTooFarLeft = var.SecondIRx < 0 or (var.SecondIRx < 0.1 and (not var.SecondIRvis))
  345. var.SecondIRTooFarRight = var.SecondIRx > 1 or (var.SecondIRx > 1-0.1 and (not var.SecondIRvis))
  346. var.SecondIRTooFarUp = var.SecondIRy < 0 or (var.SecondIRy < 0.1 and (not var.SecondIRvis))
  347. var.SecondIRTooFarDown = var.SecondIRy > 1 or (var.SecondIRy > 1-0.1 and (not var.SecondIRvis))
  348.  
  349. // Heavily smooth small movements, but do zero lag for quick movements
  350. var.SecondMoveAmount = 1024*hypot(delta(var.SecondIRx), delta(var.SecondIRy))
  351. if smooth(var.SecondMoveAmount) > 12 then
  352.   var.SecondSmoothX = var.SecondIRx
  353.   var.SecondSmoothY = var.SecondIRy
  354.   var.SecondLastSureFrame = PIE.Frame
  355. else if (PIE.frame-var.SecondLastSureFrame) > 18 then
  356.   var.SecondSmoothX = Smooth(var.SecondIRx, 18, 4/1024)
  357.   var.SecondSmoothY = Smooth(var.SecondIRy, 18, 4/1024)
  358. else if (PIE.frame-var.SecondLastSureFrame) > 14 then
  359.   var.SecondSmoothX = Smooth(var.SecondIRx, 14, 4/1024)
  360.   var.SecondSmoothY = Smooth(var.SecondIRy, 14, 4/1024)
  361. else if (PIE.frame-var.SecondLastSureFrame) > 10 then
  362.   var.SecondSmoothX = Smooth(var.SecondIRx, 10, 4/1024)
  363.   var.SecondSmoothY = Smooth(var.SecondIRy, 10, 4/1024)
  364. else if (PIE.frame-var.SecondLastSureFrame) > 6 then
  365.   var.SecondSmoothX = Smooth(var.SecondIRx, 6, 4/1024)
  366.   var.SecondSmoothY = Smooth(var.SecondIRy, 6, 4/1024)
  367. else if (PIE.frame-var.SecondLastSureFrame) > 2 then
  368.   var.SecondSmoothX = Smooth(var.SecondIRx, 2, 4/1024)
  369.   var.SecondSmoothY = Smooth(var.SecondIRy, 2, 4/1024)
  370. end if
  371.  
  372. // Freeze the mouse cursor while they start pressing the button
  373. // otherwise it will make the cursor jump
  374. var.SecondFreeze = (var.SecondIRLeftButton or var.SecondIRRightButton) and KeepDown(pressed(var.SecondIRLeftButton) or pressed(var.SecondIRRightButton), var.SecondFreezeTime)
  375.  
  376. // Only change the mouse position if pointing at the screen
  377. // otherwise they can still use a real mouse
  378. if var.SecondIRvis and (not var.SecondFreeze) then
  379.    // convert to joystick coordinates
  380.   ppjoy2.Analog0 = (var.SecondSmoothX - 0.5 ) * 2.0
  381.   ppjoy2.Analog1 = (var.SecondSmoothY - 0.5 ) * 2.0
  382. end if
  383.  
  384. // delay the buttons slightly so we have time to freeze the cursor (is that needed?)
  385. ppjoy2.Digital2 = var.SecondIRLeftButton and (not KeepDown(pressed(var.SecondIRLeftButton), 40ms))
  386. ppjoy2.Digital0 = var.SecondIRRightButton and (not KeepDown(pressed(var.SecondIRRightButton), 40ms))
  387. ppjoy2.Digital1 = wiimote2.one
  388. ppjoy2.Digital3 = wiimote2.two
  389. ppjoy2.Digital4 = wiimote2.Plus
  390. ppjoy2.Digital5 = wiimote2.Minus
  391. ppjoy2.Digital6 = wiimote2.Home
  392. ppjoy2.Digital7 = wiimote2.Up
  393. ppjoy2.Digital8 = wiimote2.Down
  394. ppjoy2.Digital9 = wiimote2.Left
  395. ppjoy2.Digital10 = wiimote2.Right
  396.  
  397.  
  398.  
  399. debug = 'Joy0: ' + ppjoy0.Analog0 + ' ' + ppjoy0.Analog1 + 'Joy2: ' + ppjoy2.Analog0 + ' ' + ppjoy2.Analog1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement