Guitar Hero World Tour Drums Wii Glovepie

Help center. Members helping members
Forum rules
This topic is 15 years and 1 month old. Instead of replying, please begin a new topic, or search for another related topic that may be more suitable.
Blue Heaven!
User avatar
death_au
Member
Posts: 3991
Joined: December 12th, 2007
Location: Australia
Reputation: 7
Contact:

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby death_au » Sat Jan 10, 2009 8:40 pm

I tried it, and it seemed to work for a tiny bit I had this script for testing purposes:

Code: Select all

if pressed(Wiimote.Minus) then
var.wakeup=1
WiimotePoke(1, 0x4A400F0, 0x55) // Decrypt
wait 100ms
WiimotePoke(1, 0x4A400FB, 0) // Unknown
//wait 100ms
//WiimoteDumpBytes(1, 0x4A400F0, 16) // view type
wait 100ms
WiimotePoke(1, 0x4A400F0, 0xAA) // Encrypt again
//wait 100ms
//WiimoteDumpBytes(1, 0x4A40020, 32) // view calibration
wait 100ms
WiimotePoke(1, 0x4A40040, 0)
wait 100ms
WiimoteSend(1, 0x17, 0x04, 0xA4, 0x00, 0xF0, 0, 16) // get type
var.wakeup=0
end if
debug = var.wakeup+";" +wiimote.ExpString

If I held down a fret button and then pressed minus on the wiimote, the exp string changed. I also went nuts on the whammy bar and pressed minus during it, and I could see the values changing for that brief moment

EDIT: If I remove this line it works fine:

Code: Select all

WiimotePoke(1, 0x4A400F0, 0xAA) // Encrypt again


EDIT: Also, the analog stick on the guitar does not work. The frets, strum up and down, whammy bar, both plus buttons and the Star Power Button (minus) all work on the guitar. It's just the joystick and the touch bar which don't.
Just played FoFiX perfectly using my old script with that stuff at the top.

EDIT: I know, so many edits... I was looking at the joystick on the wii guitars through the wiimote.ExpString... The first 64 bits are the ones that change for both, but the ranges are different.
On the GH4 guitar the first two chunks vary from approximately 00 - 3F, whereas on the GH3 guitars it was C0 - FF
Also, while I'm looking at it... The touch bar seems to be governed by the 3rd chunk. On my guitar, I get these values:

Code: Select all

Not touching it  -  0F
1st (top) fret   -  04
1st AND 2nd      -  07
2nd              -  0A
2nd AND 3rd      -  0C/0D (keeps changing)
3rd              -  12/13
3rd AND 4th      -  14/15
4th              -  17/18
4th and 5th      -  1A
5th (bottom)     -  1F

You can hold two frets at once, as long as those two frets are adjacent, otherwise it will take the value of the lowest fret held (Eg, if you hold the highest and lowest fret, it reads 1F)
Note that high/low means physically on the guitar neck (in musical terms I think it's the other way around, so I thought I'd better specify)

EDIT:
And now: Drums!
I haven't really figured these out fully... They're supposed to be velocity sensitive, but I'm only really reading one bit for each drum pad. They're all from the sixth chunk (wiimote.exp5) as follows:

Code: Select all

Orange  - 7F - 01111111
Red     - BF - 10111111
Yellow  - DF - 11011111
Green   - EF - 11101111
Blue    - F7 - 11110111
bass    - FB - 11111011

Here is a GlovePie script I whipped up quickly to allow me to play drums on FoFiX using my WT drums:

Code: Select all

if(!var.init)
//if pressed(Wiimote.Minus) then
WiimotePoke(1, 0x4A400F0, 0x55) // Decrypt
wait 100ms
WiimotePoke(1, 0x4A400FB, 0) // Unknown
//wait 100ms
//WiimoteDumpBytes(1, 0x4A400F0, 16) // view type
//wait 100ms
//WiimotePoke(1, 0x4A400F0, 0xAA) // Encrypt again
//wait 100ms
//WiimoteDumpBytes(1, 0x4A40020, 32) // view calibration
wait 100ms
WiimotePoke(1, 0x4A40040, 0)
wait 100ms
WiimoteSend(1, 0x17, 0x04, 0xA4, 0x00, 0xF0, 0, 16) // get type
var.init = true
end if

var.bass =   |(1-((wiimote.Exp5 & 4)   >> 2))|
var.blue =   |(1-((wiimote.Exp5 & 8)   >> 3))|
var.green =  |(1-((wiimote.Exp5 & 16)  >> 4))|
var.yellow = |(1-((wiimote.Exp5 & 32)  >> 5))|
var.red =    |(1-((wiimote.Exp5 & 64)  >> 6))|
var.orange = |(1-((wiimote.Exp5 & 128) >> 7))|

//debug=wiimote.ExpString +";"+var.bass +";"+var.blue
var.d = " Pads:"
if(var.red)    var.d+="Red;"
if(var.yellow) var.d+="Yellow;"
if(var.blue)   var.d+="Blue;"
if(var.orange) var.d+="Orange;"
if(var.green)  var.d+="Green;"
if(var.bass)   var.d+="Bass;"

debug = wiimote.ExpString + var.d

key.q = var.red
key.w = var.yellow
key.o = var.blue
key.p = var.orange
key.space = var.bass

Also, the analog stick and plus and minus buttons are the same as the (GH4) guitar
Does this help you out, Carl?
...There's got to be something I'm missing though. How is the velocity sensitivity measured?
MaXimum_Impact
Member
Posts: 3
Joined: November 25th, 2008
Reputation: 0

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby MaXimum_Impact » Sun Jan 11, 2009 4:04 am

Hey guys, I tried the script above for drums, and i got 2 Invalid Wiimote Value errors.they are at:

var.bass = |(1-((wiimote.Exp5 & 4) >> 2))|
var.blue = |(1-((wiimote.Exp5 & 8) >> 3))|
var.green = |(1-((wiimote.Exp5 & 16) >> 4))|
var.yellow = |(1-((wiimote.Exp5 & 32) >> 5))|
var.red = |(1-((wiimote.Exp5 & 64) >> 6))|
var.orange = |(1-((wiimote.Exp5 & 128) >> 7))|


And:

if(var.red) var.d+="Red;"
if(var.yellow) var.d+="Yellow;"
if(var.blue) var.d+="Blue;"
if(var.orange) var.d+="Orange;"
if(var.green) var.d+="Green;"
if(var.bass) var.d+="Bass;"

debug = wiimote.ExpString + var.d


All help is appreciated. I really want to use my drums. And I mean REALLY.

EDIT: Nvm, I just neede glovePIE 0.30.
Last edited by MaXimum_Impact on Mon Jan 12, 2009 7:02 am, edited 1 time in total.
curtiswwe
Member
Posts: 2
Joined: January 10th, 2009
Reputation: 0

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby curtiswwe » Sun Jan 11, 2009 4:41 am

Hoping CarlKenner will have a look at this relatively soon, as I am very interested in this. Thanks death_au, and others for providing (apparently) a somewhat functional script, but obviously not completed.
Metallica_1969
Member
Posts: 21
Joined: December 22nd, 2008
Reputation: 0

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby Metallica_1969 » Sun Jan 11, 2009 4:50 am

Yeah fantastic job !

When I use your first script, please find below the results (without the encrypt line)

1 fret or null:
- no fret pressed: 20 20 0F 10 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- no fret pressed (strum down): 20 20 0F 10 BF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- no fret pressed (strum up): 20 20 0F 10 FF FE 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- G: 20 20 0F 10 FF EF 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- R: 20 20 0F 10 FF EF 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- Y: 20 20 0F 10 FF F7 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- B: 20 20 0F 10 FF DF 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- O: 20 20 0F 10 FF 7F 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE

2 frets:
- G + R: 20 20 0F 10 FF AF 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- G + Y: 20 20 0F 10 FF E7 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- G + B: 20 20 0F 10 FF CF 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- G + O: 20 20 0F 10 FF 6F 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- R + Y: 20 20 0F 10 FF B7 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- R + B: 20 20 0F 10 FF 9F 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE
- R + O: 20 20 0F 10 FF 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FE

Will continue during the day !

Thanks again for both of you !
Blue Heaven!
User avatar
death_au
Member
Posts: 3991
Joined: December 12th, 2007
Location: Australia
Reputation: 7
Contact:

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby death_au » Sun Jan 11, 2009 5:07 am

MaXimum_Impact wrote:Hey guys, I tried the script above for drums, and i got 2 Invalid Wiimote Value errors.

Are you using GlovePIE 0.30? I probably should have mentioned that was the version I was using.
Metallica_1969
Member
Posts: 21
Joined: December 22nd, 2008
Reputation: 0

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby Metallica_1969 » Sun Jan 11, 2009 5:18 am

I confirm that you need GlovePie 0.30 (death_au has been quicker than me to answer ... was playing nothing else matters :love: ) !

Please find below a modified script which takes the Orange Pad and map it with the Blue Pad (same when you play RB2 with GHWT drum):

Code: Select all

    if(!var.init)
    //if pressed(Wiimote.Minus) then
    WiimotePoke(1, 0x4A400F0, 0x55) // Decrypt
    wait 100ms
    WiimotePoke(1, 0x4A400FB, 0) // Unknown
    //wait 100ms
    //WiimoteDumpBytes(1, 0x4A400F0, 16) // view type
    //wait 100ms
    //WiimotePoke(1, 0x4A400F0, 0xAA) // Encrypt again
    //wait 100ms
    //WiimoteDumpBytes(1, 0x4A40020, 32) // view calibration
    wait 100ms
    WiimotePoke(1, 0x4A40040, 0)
    wait 100ms
    WiimoteSend(1, 0x17, 0x04, 0xA4, 0x00, 0xF0, 0, 16) // get type
    var.init = true
    end if

    var.bass =   |(1-((wiimote.Exp5 & 4)   >> 2))|
    var.blue =   |(1-((wiimote.Exp5 & 8)   >> 3))|
    var.green =  |(1-((wiimote.Exp5 & 16)  >> 4))|
    var.yellow = |(1-((wiimote.Exp5 & 32)  >> 5))|
    var.red =    |(1-((wiimote.Exp5 & 64)  >> 6))|
    var.orange = |(1-((wiimote.Exp5 & 128)   >> 7))|

    //debug=wiimote.ExpString +";"+var.bass +";"+var.blue
    var.d = " Pads:"
    if(var.red)    var.d+="Red;"
    if(var.yellow) var.d+="Yellow;"
    if(var.blue)   var.d+="Blue;"
    if(var.orange) var.d+="Orange;"
    if(var.green)  var.d+="Green;"
    if(var.bass)   var.d+="Bass;"

    debug = wiimote.ExpString + var.d

    key.q = var.red
    key.w = var.yellow
    key.o = var.blue
    key.o = var.orange
    key.p = var.green
    key.space = var.bass


Happy drumming !
Blue Heaven!
User avatar
death_au
Member
Posts: 3991
Joined: December 12th, 2007
Location: Australia
Reputation: 7
Contact:

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby death_au » Sun Jan 11, 2009 5:45 am

Metallica_1969 wrote:Please find below a modified script which takes the Orange Pad and map it with the Blue Pad (same when you play RB2 with GHWT drum):

Ah, I had no idea how that worked, I just thought Orange as Green made more sense (seeing as though most green notes on RB songs are symbol hits).
By the way, If anyone can figure out how velocity is measured, that would be great. When I hit a pad, some of the other bits in the ExpString do change (i think it was byte2 and byte3 from memory, I could be wrong) but they're too quick to figure out what they are, let alone how they relate to the hit velocity (assuming they do).
Metallica_1969
Member
Posts: 21
Joined: December 22nd, 2008
Reputation: 0

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby Metallica_1969 » Sun Jan 11, 2009 6:21 am

Can someone try this with the RB (or RB2) drum and provide us with the results ? Thanks in advance !
User avatar
wuxingwarrior3
Member
Posts: 62
Joined: October 18th, 2008
Location: Florida
Reputation: 0

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby wuxingwarrior3 » Sun Jan 11, 2009 2:19 pm

:woot: YOU GUYS ARE AWESOME!
Just played black hole sun expert on my GHWT drums and it worked flawlessly! Big thanks to everyone that made this possible.
stuartf
Member
Posts: 3
Joined: January 6th, 2009
Reputation: 0

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby stuartf » Sun Jan 11, 2009 3:06 pm

You guys are ace:

Tweaked the script for the World Tour Guitar (i haven't included the menu buttons yet as couldn't wait to have a go!)

Freebird now unleashed on my PC = wayhay :)

Code: Select all

    if(!var.init)
    //if pressed(Wiimote.Minus) then
    WiimotePoke(1, 0x4A400F0, 0x55) // Decrypt
    wait 100ms
    WiimotePoke(1, 0x4A400FB, 0) // Unknown
    //wait 100ms
    //WiimoteDumpBytes(1, 0x4A400F0, 16) // view type
    //wait 100ms
    //WiimotePoke(1, 0x4A400F0, 0xAA) // Encrypt again
    //wait 100ms
    //WiimoteDumpBytes(1, 0x4A40020, 32) // view calibration
    wait 100ms
    WiimotePoke(1, 0x4A40040, 0)
    wait 100ms
    WiimoteSend(1, 0x17, 0x04, 0xA4, 0x00, 0xF0, 0, 16) // get type
    var.init = true
    end if

    var.green =  |(1-((wiimote.Exp5 & 16)  >> 4))|
    var.red =    |(1-((wiimote.Exp5 & 64)  >> 6))|
    var.yellow =   |(1-((wiimote.Exp5 & 8)   >> 3))|
    var.blue = |(1-((wiimote.Exp5 & 32)  >> 5))|
    var.orange = |(1-((wiimote.Exp5 & 128)   >> 7))|
    var.pick  = |(1-((wiimote.Exp4 & 64)   >> 6))|





    //debug=wiimote.ExpString +";"+var.bass +";"+var.blue
    var.d = " Pads:"
    if(var.red)    var.d+="Red;"
    if(var.yellow) var.d+="Yellow;"
    if(var.blue)   var.d+="Blue;"
    if(var.orange) var.d+="Orange;"
    if(var.green)  var.d+="Green;"
    if(var.pick)  var.d+="Pick;"
    if(var.bass)   var.d+="Bass;"
    debug = wiimote.ExpString + var.d

    key.F1 = var.green
    key.F2 = var.red
    key.F3 = var.yellow
    key.F4 = var.blue
    key.F5 = var.orange
    key.Enter=var.pick

Blue Heaven!
User avatar
death_au
Member
Posts: 3991
Joined: December 12th, 2007
Location: Australia
Reputation: 7
Contact:

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby death_au » Sun Jan 11, 2009 4:20 pm

This is my guitar script that I was using for the GH3 Guitar, with the GH4 guitar wakeup code added. The whammy bar bit could do with some modification, and it would probably work better if Strum Up was not enter, but it's what I've been using. Should work on GH3 and GH4 guitars (joystick won't work on GH4 guitars just yet)

Code: Select all

/*
// FoFiX GH Wiitar script 2.0
// Version 2.0 by Death_au
// Now supports the GH:WT guitar
*/

//GH4 guitar wakeup code:

//if pressed(Wiimote.Minus) then
WiimotePoke(1, 0x4A400F0, 0x55) // Decrypt
wait 100ms
WiimotePoke(1, 0x4A400FB, 0) // Unknown
//wait 100ms
//WiimoteDumpBytes(1, 0x4A400F0, 16) // view type
//wait 100ms
//WiimotePoke(1, 0x4A400F0, 0xAA) // Encrypt again
//wait 100ms
//WiimoteDumpBytes(1, 0x4A40020, 32) // view calibration
wait 100ms
WiimotePoke(1, 0x4A40040, 0)
wait 100ms
WiimoteSend(1, 0x17, 0x04, 0xA4, 0x00, 0xF0, 0, 16) // get type
//end if

var.found = "";
if WiiGuitar.Exists then var.found += "Guitar@Wiimote";

if var.found == "" then {
   var.found = "No Guitar found - ";
}

var.found += (" - Battery: " + WiiMote.Battery) + "% - ";

// Debug
var.dummy = Wiimote.RawForceX
if WiiGuitar.Green then var.G = "Green" else var.G = ""
if WiiGuitar.Red then var.R = "Red" else var.R = ""
if WiiGuitar.Yellow then var.Y = "Yellow" else var.Y = ""
if WiiGuitar.Blue then var.B = "Blue" else var.B = ""
if WiiGuitar.Orange then var.O = "Orange" else var.O= ""
if WiiGuitar.Minus then var.Minus = "-" else var.Minus = ""
if WiiGuitar.Plus then var.Plus = "+" else var.Plus = ""
if WiiGuitar.StrumUp then var.Strum = "StrumUp" elseif WiiGuitar.StrumDown then var.Strum = "StrumDown" else var.Strum = ""
debug = var.found+"Frets: "+var.G+var.R+var.Y+var.B+var.O+var.Minus+var.Plus+"; Strum: "+var.Strum+"; Whammy:"+Wiimote.Classic.R+var.RF+"; Tilt=" + Wiimote.RawForceZ+"; Joystick: X = "+Wiimote.Classic.Joy1X+", Y = "+Wiimote.Classic.Joy1Y;
//debug = var.wakeup+";" +wiimote.ExpString

/*---BUTTON MAPPING to Keyboard and PPJoy--*/
//Configuration:
//
//Green - F1
//Red - F2
//Yellow - F3
//Blue - F4
//Orange - F5
//Strum Up - enter
//Strum Down - Right Shift
//Minus - Page Down
//Plus - Escape
//Tilt - Page Down
//Whammy - Page Up OR PPJoy Analog 0 change in script below
//NOTE: Joystick doesn't work yet on the GH:WT guitar
//Joystick Up - Up
//Joystick Down - Down
//Joystick Right - Right
//Joystick Left - Left



// Guitar Joystick
Key.Left = (-1.2 < WiiGuitar.JoyX < -0.5) // Joystick moving Left = minus X axis
Key.Right = (0.5 < WiiGuitar.JoyX < 1.2)  // Joystick moving Right = positive X axis
Key.Up = (-1.2 < WiiGuitar.JoyY < -0.5)   // Joystick moving Up = negative Y axis
Key.Down = (0.5 < WiiGuitar.JoyY < 1.2)   // Joystick moving Down = positive Y axis


// Fret Buttons
Key.F1 = WiiGuitar.Green       //Green
Key.F2 = WiiGuitar.Red         //Red
Key.F3 = WiiGuitar.Yellow      //Yellow
Key.F4 = WiiGuitar.Blue        //Blue
Key.F5 = WiiGuitar.Orange      //Orange


// Plus and Minus Buttons
Key.Escape = WiiGuitar.Plus    //Menu / Pause


// Strum Bar
Key.Enter = WiiGuitar.StrumUp
Key.RightShift = WiiGuitar.StrumDown

//Whammy/Killswitch
Key.PageUp = WiiGuitar.Minus
Key.PageUp = (0.75 < WiiGuitar.WhammyBar < 0.9)
//ppjoy.Analog0 = WiiGuitar.WhammyBar
//debug = ppjoy.Analog0

// Star Power
//debug = Wiimote.RawForceZ
if(18 < Wiimote.RawForceZ < 100)
      Key.PageDown = true;
      Wiimote.Rumble = true;
else
      Key.PageDown = false;
      Wiimote.Rumble = false;
endif

//END OF FILE

A nice feature I added was that it rumbles when your guitar is at a high enough angle to activate star power :wink:

---- EDIT ----

Metallica_1969 wrote:Can someone try this with the RB (or RB2) drum and provide us with the results ? Thanks in advance !
Isn't the RB/RB2 drum USB? I don't actually have one myself, but that was my impression. Therefore shouldn't it work like it does on other consoles?
Metallica_1969
Member
Posts: 21
Joined: December 22nd, 2008
Reputation: 0

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby Metallica_1969 » Sun Jan 11, 2009 5:56 pm

Isn't the RB/RB2 drum USB? I don't actually have one myself, but that was my impression. Therefore shouldn't it work like it does on other consoles?

Hum you are certainly right .... I thought RB2 drum was wireless ...
Blue Heaven!
User avatar
death_au
Member
Posts: 3991
Joined: December 12th, 2007
Location: Australia
Reputation: 7
Contact:

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby death_au » Sun Jan 11, 2009 10:04 pm

Metallica_1969 wrote:
Isn't the RB/RB2 drum USB? I don't actually have one myself, but that was my impression. Therefore shouldn't it work like it does on other consoles?

Hum you are certainly right .... I thought RB2 drum was wireless ...

Apparently they are, but they connect wirelessly to some sort of usb hub thing, as opposed to using wiimotes like the GH instruments.
There's advantages and disadvantages to both methods, really
MonkeyJamboree
Member
Posts: 7
Joined: October 6th, 2008
Reputation: 0

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby MonkeyJamboree » Sun Jan 11, 2009 10:38 pm

I believe this is my first time posting, but figured it would be worth it, since i have a GHWT Guitar. the motion controls work fine with Death_au's "FoFix GH Wiitar Script 2.0" but the indicator light seems to shut off and not come back on after a couple times starting and stopping the script. also, none of the buttons seem to do anything anywhere, only the tilt sensor. Just thought I would post some feedback. Sadly, I do not have the drums or RB instruments, but if you need testing done for the GHWT guitar, please let me know! (ps - is there any reason the wiimote keeps blinking after being synched until a glovepie script is run? any way to stop that?)

EDIT: forgot to mention, the status says "No Guitar found: 0.000.000.000.000.000.000.00; Strum: 0.00; Whammy:0.000.00; Tilt=3; Joystick: X = 0.00, Y = 0.00" where only Tilt changes. the rest always stay at 0's.
CarlKenner
Member
Posts: 10
Joined: January 9th, 2009
Reputation: 0

Re: Guitar Hero World Tour Drums Wii Glovepie

Postby CarlKenner » Sun Jan 11, 2009 11:48 pm

The tilt comes from the Wii remote, NOT the Guitar. So does rumble and sound.

Rock Band devices have nothing to do with the Wii Remote. That doesn't mean I can't make them work in GlovePIE, but they will be implemented like other USB devices instead of like Wii Remotes. Rock Band PS3, XBox 360, and Wii devices are probably almost the same.

death_au, that script doesn't help me at all. Can you please fix it so it does the initialisation code ONCE rather than trying to do it 60 times a second. And you can't have wait commands in the main body. They really have to be inside IF statements. Your code will run at 2 FPS, even when using a GH3 controller, which is not enough for a rhythm game. Does that initialisation code work when only done once at the start of the script? I need to know what code to use in the next version of GlovePIE to initialise things.

By the way, if people are using GlovePIE 0.29, I think it won't understand unencrypted data. But GlovePIE 0.30 should recognise and understand unencrypted data, since the Balance Board is always unencrypted. Unlike other Wiimote libraries, I had the sense not to hardcode no encryption for the Balance Board and encryption for everything else, and instead detected whether it was encrypted or not.

Return to “Tech Support”

Who is online

Users browsing this forum: No registered users and 3 guests