Jump to content

Simulate X360 controllers when you just have a keyboard


ducon2016
 Share

Recommended Posts

hace 1 hora, ducon2016 dijo:

 

SFV the PC version or the Arcade version with JConfig?

 

pc version.

 

In my regular pc all ok, any game with the correct of your dll (32/64 bit).  And "xinput test.exe" with your 1_3.dll 32bit all ok

 

But in my arcade cabinet, your dll loads and capture inputs from keyboard logitech connected and ipac (arcade control connected like another keyboard) but with insane delay and controls tends to stuck.

 

In this same arcade with original x360kb and with vjoy + x360ce no problems

 

Is somenthing in this new dlls that enters in conflict with somthing, dll activates and capture inputs but useless due to lag and stock problem

 

Thanks for the help

Edited by huntsman360
Link to comment
Share on other sites

 
  • Replies 198
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

1. Which version of the dll did you use for SFV x86 or x64?

2. In which folder did you put the dll and x360kb.ini?

 

I just tested and it works here, I also have an ipac and a keyboard connected with no lag. Did you make sure that vjoy is disabled? double click the vjoy icon and untick the enabled box

Edited by ducon2016
Link to comment
Share on other sites

 
hace 6 horas, ducon2016 dijo:

1. Which version of the dll did you use for SFV x86 or x64?

2. In which folder did you put the dll and x360kb.ini?

 

I just tested and it works here, I also have an ipac and a keyboard connected with no lag. Did you make sure that vjoy is disabled? double click the vjoy icon and untick the enabled box

Yes, dll works. I put 64 version of 1_3

 

The problem is not that dll not work, it does and captures the input keys but......  with a lot of delay and controls stuck in a position or button pressed

 

Dll is operative but for some reason on my arcade cabinet with 2 keyboards (1 normal  + ipac) response is with much delay and stuck problem

 

Original dll and vjoy+x360ce not have this problem

 

I already have disabled vjoy and no luck

Edited by huntsman360
Link to comment
Share on other sites

 
13 minutes ago, huntsman360 said:

Yes, dll works. I put 64 version of 1_3

 

The problem is not that dll not work, it does and captures the input keys but......  with a lot of delay and controls stuck in a position or button pressed

 

Dll is operative but for some reason on my arcade cabinet with 2 keyboards (1 normal  + ipac) response is with much delay and stuck problem

 

Original dll and vjoy+x360ce not have this problem

 

I already have disabled vjoy and no luck

 

I understand the problem, just trying to find out what it could be. Where did you put the dll and config file? Which folder?

Link to comment
Share on other sites

 
hace 3 horas, ducon2016 dijo:

 

I understand the problem, just trying to find out what it could be. Where did you put the dll and config file? Which folder?

 

Hi, is not a folder problem.

 

I'm testin with xinputtest.exe and in my regular pc all ok, but lag and stuck in arcade cabinet

 

I uploaded a zip with the files, if you launch xinputtest.exe you can move left analog with arrow keys and all ok, but in my arcade the problem mentioned

test.zip

Link to comment
Share on other sites

 

Hi all,

 

Great little utility, I had to make a few changes to prevent Injustice 2 from displaying "Debugging tools and cheat engines are not allowed on Injustice 2".

 

Here are the specific settings:

 

  1. X64 XInput9.DLL
  2. HIdeDLL = 0 (Not Necessary)
  3. Steam = 0 (Key setting, when this is enabled, Injustice 2 detects a cheat engine) 
Edited by coolspot
Link to comment
Share on other sites

 
7 hours ago, huntsman360 said:

 

Hi, is not a folder problem.

 

I'm testin with xinputtest.exe and in my regular pc all ok, but lag and stuck in arcade cabinet

 

I uploaded a zip with the files, if you launch xinputtest.exe you can move left analog with arrow keys and all ok, but in my arcade the problem mentioned

test.zip

 

Your config has log=1 and padcount=2 when you only have one defined. Try to set log=0 and padcount=1. I tested your files and everything works fine. Also try with all the options to see if it makes a difference

 

[Options]
UseInitBeep=1
Log=0
PadCount=1
HookAllXInputDLLs=0
BlockRawInput=1
BlockKeys=1
BlockKeysDelay=0
CloseProcess=1
CloseWindow=0
CloseKey=Esc
FilterOtherPads=0
FakeXInputPads=0
HookFastProx=0
SetPropertySuccess=0
DisableDI8Keyboard=0
DI8Range=0
RemapMethod=0
HideMouse=0
HideTaskBar=0
HideDLL=0
Steam=0
AnalogRange=1.0

 

Edited by ducon2016
Link to comment
Share on other sites

 
2 hours ago, coolspot said:

UPDATE: I got it to work, here are my settings:

 

  1. X64 XInput9.DLL
  2. HIdeDLL = 0 (Not Necessary)
  3. Steam = 0 (Key setting, when this is enabled, Injustice 2 detects a cheat engine) 

 

Glad you got it to work. Yes HideDLL might not work on all games, it works for DOA6. And Steam=1 is only for games which require steam actions, most games do not need it. Can you edit your post to only keep the working part? The initial question is not necessary anymore.

Link to comment
Share on other sites

 
hace 1 hora, ducon2016 dijo:

 

Your config has log=1 and padcount=2 when you only have one defined. Try to set log=0 and padcount=1. I tested your files and everything works fine. Also try with all the options to see if it makes a difference

 


[Options]
UseInitBeep=1
Log=0
PadCount=1
HookAllXInputDLLs=0
BlockRawInput=1
BlockKeys=1
BlockKeysDelay=0
CloseProcess=1
CloseWindow=0
CloseKey=Esc
FilterOtherPads=0
FakeXInputPads=0
HookFastProx=0
SetPropertySuccess=0
DisableDI8Keyboard=0
DI8Range=0
RemapMethod=0
HideMouse=0
HideTaskBar=0
HideDLL=0
Steam=0
AnalogRange=1.0

 

i do it and nothing.

 

Is not in config files. Is someyhing on dll that conflicts with my arcade cabinet. On my other pcs no problem

 

But original x360kb and vjoy+x360ce works on my arcade cabinet, so is something like how this new x360kb (all dlls) is capturing keyboard inputs

Edited by huntsman360
Link to comment
Share on other sites

 
1 hour ago, huntsman360 said:

i do it and nothing.

 

Is not in config files. Is someyhing on dll that conflicts with my arcade cabinet. On my other pcs no problem

 

But original x360kb and vjoy+x360ce works on my arcade cabinet, so is something like how this new x360kb (all dlls) is capturing keyboard inputs

 

Not sure what it is, try this https://cdn.discordapp.com/attachments/401433952239484929/738126213700255825/xinput1_3.7z

Link to comment
Share on other sites

 
 
6 minutes ago, huntsman360 said:

 

It wooooooorks!!!!!

 

What you have done?

 

Can you do the same to all other dll (32bit and 64bit)?

 

Thanks

 

I tried something in the code. There is a known performance issue with the keyboard hooks, the code assumed a case would never happen but unfortunately it did, so cleaning it up. Will publish all dlls later today.

Link to comment
Share on other sites

 
hace 3 minutos, ducon2016 dijo:

 

I tried something in the code. There is a known performance issue with the keyboard hooks, the code assumed a case would never happen but unfortunately it did, so cleaning it up. Will publish all dlls later today.

 

thanks, really appreciate your help

Link to comment
Share on other sites

 
 
 
 

Mortal Kombat Komplete Collection has an issue with x360kb with detecting two button presses (i.e. X + A).

 

I'm using a 6 button setup so I would like to use the shortcuts to do actions like throw (FP (X)  + FK (A)).

 

With x360kb, I noticed the commands are coming into Mortal Kombat Komplete training mode as A... B... in quick succession (nearly instanteous but it's clear the game is recognizing two key presses), rather than as a simulatenous press.

 

If I use a real XInput controller (i.e. Logitech F710), X + A will perform the proper move, and the input data looks to be AB.

 

If I use a keyboard, the move is performed fine as well (i.e. press two keyboard key simultaneously). 

 

Any ideas how to fix this one - is it the way the driver hooks into the keyboard it doesn't handle true simultaneous key presses (i.e. chording?).

 

Thanks.

 

Link to comment
Share on other sites

 
5 minutes ago, coolspot said:

Mortal Kombat Komplete Collection has an issue with x360kb with detecting two button presses (i.e. X + A).

 

I'm using a 6 button setup so I would like to use the shortcuts to do actions like throw (FP (X)  + FK (A)).

 

With x360kb, I noticed the commands are coming into Mortal Kombat Komplete training mode as A... B... in quick succession (nearly instanteous but it's clear the game is recognizing two key presses), rather than as a simulatenous press.

 

If I use a real XInput controller (i.e. Logitech F710), X + A will perform the proper move, and the input data looks to be AB.

 

If I use a keyboard, the move is performed fine as well (i.e. press two keyboard key simultaneously). 

 

Any ideas how to fix this one - is it the way the driver hooks into the keyboard it doesn't handle true simultaneous key presses (i.e. chording?).

 

Thanks.

 

 

It does work with combinations, I use them all the time. You can even set a combination as an input for example I used stuff like DPad Left=C&Left. In the config turn on the log, press the two buttons and send me the log please.

Link to comment
Share on other sites

 
44 minutes ago, ducon2016 said:

 

It does work with combinations, I use them all the time. You can even set a combination as an input for example I used stuff like DPad Left=C&Left. In the config turn on the log, press the two buttons and send me the log please.

 

Other games like SF IV, SF V seem to recognize multi inputs fine, it's just Mortal Kombat Komplete Collection. 

 

I did not realize the .ini can handle combination input ... I gave it a try and the game is now recognizing X, A, LB, in sequence. Essentially MKK is reading all three keys,

 

Attached is a screenshot and two log files:

 

  1. Log File 1: Using combination keys in the config file, game is still detecting X / A even though X+A is mapped to LB
  2. Log File 2: No combination keys, game is detecting X / A in sequence not simultaneously like with a real gamepad or keyboard.

 

Both logs start around 40s on wards when MKK goes into practice mode:

 

From Log File 1:

2020-07-30 18:22:35.009 (  48.259s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:22:35.019 (  48.269s) [                ]             config.cpp:343   INFO| [HookCallback] Key pressed A2
2020-07-30 18:22:35.019 (  48.269s) [                ]             config.cpp:360   INFO| [HookCallback] Key blocked A2
2020-07-30 18:22:35.025 (  48.276s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:35.025 (  48.276s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:22:35.025 (  48.276s) [                ]             x360kb.cpp:59    INFO| X button pressed
2020-07-30 18:22:35.026 (  48.276s) [                ]             x360kb.cpp:59    INFO| Left Shoulder button pressed

From Log File 2:

 

2020-07-30 18:27:26.226 (  41.678s) [                ]             x360kb.cpp:84    INFO| Left Analog Right axis pressed
2020-07-30 18:27:26.226 (  41.678s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:27:26.238 (  41.690s) [                ]             config.cpp:343   INFO| [HookCallback] Key pressed A0
2020-07-30 18:27:26.238 (  41.690s) [                ]             config.cpp:360   INFO| [HookCallback] Key blocked A0
2020-07-30 18:27:26.243 (  41.695s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:27:26.243 (  41.695s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:27:26.243 (  41.695s) [                ]             x360kb.cpp:59    INFO| X button pressed

Here is my config file (without combo keys):

 

[Options]
UseInitBeep=1
Log=1
PadCount=2
HookAllXInputDLLs=0
BlockRawInput=1
BlockKeys=1
BlockKeysDelay=0
CloseProcess=1
CloseWindow=1
CloseKey=Esc
FilterOtherPads=0
FakeXInputPads=0
HookFastProx=0
SetPropertySuccess=0
DisableDI8Keyboard=0
DI8Range=0
RemapMethod=0
HideMouse=0
HideTaskBar=0
HideDLL=0
Steam=0
AnalogRange=1.0

[PAD1]
Start=1
Back=5
Left Analog Left=Left
Left Analog Down=Down
Left Analog Right=Right
Left Analog Up=Up
X=Left Control
Y=Left Alt
A=Left Shift
B=Z
Right Trigger=X
;Left Trigger=Z
Right Shoulder=Space
;Left Shoulder=Left Control&Left Shift

[PAD2]
Start=2
Back=6
Left Analog Up=R
Left Analog Down=F
Left Analog Left=D
Left Analog Right=G
X=A
Y=S
Right Shoulder=Q
;Left Shoulder=X&W
A=W
B=I
Right Trigger=K

 

 

I LOVE YOUR APP THOUGH :fiesta:

IMG_8695.jpg

Log File 1 - Combination Buttons.log

Log File 2 - No Combination Buttons.log

Edited by coolspot
Link to comment
Share on other sites

 

Looking at Log1. Thanks @coolspot

 

You press X at 2020-07-30 18:22:28.236, the game reads xinput 6 milliseconds later at 2020-07-30 18:22:28.242 and it is recognized. Then you keep X pressed and press A at 2020-07-30 18:22:28.253, the game reads xinput at 2020-07-30 18:22:28.259 and finds both X and A pressed! Then you keep those pressed and the game those are kept pressed until 2020-07-30 18:22:28.865.

 

What is possible is because the game polls the control at intervals of 16ms, it is expecting both inputs should be pressed within the same strict window. Sorry yes if you reuse the same buttons it will trigger the individual buttons, maybe I should add an option for that.

 

Can you try v15 I just posted today, this could be related to what I fixed for @huntsman360, I was waiting 16ms in some cases which seems to be the exact interval your log exhibits. So I might have fixed it already.

2020-07-30 18:22:28.236 (  41.486s) [                ]             config.cpp:343   INFO| [HookCallback] Key pressed A2
2020-07-30 18:22:28.236 (  41.486s) [                ]             config.cpp:360   INFO| [HookCallback] Key blocked A2
2020-07-30 18:22:28.242 (  41.493s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:28.242 (  41.493s) [                ]             x360kb.cpp:59    INFO| X button pressed
2020-07-30 18:22:28.242 (  41.493s) [                ]             x360kb.cpp:84    INFO| Left Analog Right axis pressed
2020-07-30 18:22:28.242 (  41.493s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:22:28.253 (  41.503s) [                ]             config.cpp:343   INFO| [HookCallback] Key pressed A0
2020-07-30 18:22:28.253 (  41.503s) [                ]             config.cpp:360   INFO| [HookCallback] Key blocked A0
2020-07-30 18:22:28.259 (  41.510s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:28.259 (  41.510s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:22:28.259 (  41.510s) [                ]             x360kb.cpp:59    INFO| X button pressed
2020-07-30 18:22:28.259 (  41.510s) [                ]             x360kb.cpp:59    INFO| Left Shoulder button pressed
2020-07-30 18:22:28.259 (  41.510s) [                ]             x360kb.cpp:84    INFO| Left Analog Right axis pressed
2020-07-30 18:22:28.259 (  41.510s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:22:28.280 (  41.531s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:28.280 (  41.531s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:22:28.280 (  41.531s) [                ]             x360kb.cpp:59    INFO| X button pressed
2020-07-30 18:22:28.280 (  41.531s) [                ]             x360kb.cpp:59    INFO| Left Shoulder button pressed
2020-07-30 18:22:28.280 (  41.531s) [                ]             x360kb.cpp:84    INFO| Left Analog Right axis pressed
2020-07-30 18:22:28.280 (  41.531s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:22:28.292 (  41.543s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:28.292 (  41.543s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:22:28.292 (  41.543s) [                ]             x360kb.cpp:59    INFO| X button pressed
2020-07-30 18:22:28.292 (  41.543s) [                ]             x360kb.cpp:59    INFO| Left Shoulder button pressed
2020-07-30 18:22:28.292 (  41.543s) [                ]             x360kb.cpp:84    INFO| Left Analog Right axis pressed
2020-07-30 18:22:28.292 (  41.543s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:22:28.309 (  41.559s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:28.309 (  41.560s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:22:28.309 (  41.560s) [                ]             x360kb.cpp:59    INFO| X button pressed
2020-07-30 18:22:28.309 (  41.560s) [                ]             x360kb.cpp:59    INFO| Left Shoulder button pressed
2020-07-30 18:22:28.309 (  41.560s) [                ]             x360kb.cpp:84    INFO| Left Analog Right axis pressed
2020-07-30 18:22:28.309 (  41.560s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:22:28.325 (  41.576s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:28.325 (  41.576s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:22:28.325 (  41.576s) [                ]             x360kb.cpp:59    INFO| X button pressed

 

 

Edited by ducon2016
Link to comment
Share on other sites

 
2 hours ago, ducon2016 said:

Looking at Log1. Thanks @coolspot

 

You press X at 2020-07-30 18:22:28.236, the game reads xinput 6 milliseconds later at 2020-07-30 18:22:28.242 and it is recognized. Then you keep X pressed and press A at 2020-07-30 18:22:28.253, the game reads xinput at 2020-07-30 18:22:28.259 and finds both X and A pressed! Then you keep those pressed and the game those are kept pressed until 2020-07-30 18:22:28.865.

 

What is possible is because the game polls the control at intervals of 16ms, it is expecting both inputs should be pressed within the same strict window. Sorry yes if you reuse the same buttons it will trigger the individual buttons, maybe I should add an option for that.

 

Can you try v15 I just posted today, this could be related to what I fixed for @huntsman360, I was waiting 16ms in some cases which seems to be the exact interval your log exhibits. So I might have fixed it already.

 

 

It's fixed with v15 - throws now work in MKK - game is recognizing X+A as a combined input! :very-good: I will continue to test with other games.

 

I also got it configured with Dragon Ball Fighter Z today, but it took a bit of work due to EasyAntiCheat. For others,to use x360kb with DBFZ, the following needs to be done:

  • Disable Easy Anti Cheat (go into DBFZ Steam local files and run the EAC setup.exe and uninstall)
  • Option A: Manually create a shortcut, add the following parameter to the end of the shortcut: "-eac-nop-loaded"
  • Option B: Use DBFZ Mod Manager and patch .EXE (https://gamebanana.com/tools/6357)

After patching or disabling, not sure if the game can go online anymore - I plan to play offline.

Edited by coolspot
Link to comment
Share on other sites

 
 

Did anyone test on teknoparrot for racing games?

Edited by Caos Gamer
Link to comment
Share on other sites

 
37 minutes ago, Caos Gamer said:

Did anyone test on teknoparrot for racing games?

 

Yes I use it with Teknoparrot too it works. You need to put xinput1_4.dll and x360kb.ini in the teknoparrot folder, NOT in the game folder.

Link to comment
Share on other sites

 
 
En 31/07/2020 a las 19:33, ducon2016 dijo:

 

Sim, eu uso com Teknoparrot também funciona. Você precisa colocar xinput1_4.dll e x360kb.ini na pasta teknoparrot, NÃO na pasta do jogo.

Thank you Bro.
Link to comment
Share on other sites

 

Pac-Man 256 has some some comments about trouble with x360kb, probably the old version not this one. I got it configured today, required a bit of trial and error:

 

  • Use X-Input 1.3, 32-bit, DLL
  • Use the following options:
[Options]
UseInitBeep=1
Log=0
PadCount=1
HookAllXInputDLLs=0
BlockRawInput=0 ;If blocking is set to any other value, the simulated x-input device will not register properly
BlockKeys=0
BlockKeysDelay=0
CloseProcess=1
CloseWindow=0
CloseKey=Esc
FilterOtherPads=0
FakeXInputPads=0
HookFastProx=0
SetPropertySuccess=0
DisableDI8Keyboard=0
DI8Range=0
RemapMethod=0
HideMouse=0
HideTaskBar=0
HideDLL=0
Steam=0
AnalogRange=1.0

That's pretty much it along with the proper control mapping of course.

Link to comment
Share on other sites

 
1 hour ago, coolspot said:

Pac-Man 256 has some some comments about trouble with x360kb, probably the old version not this one. I got it configured today, required a bit of trial and error:

  • Use X-Input 1.3, 32-bit, DLL
  • Use the following options:

[Options]
UseInitBeep=1
Log=0
PadCount=1
HookAllXInputDLLs=0
BlockRawInput=0 ;If blocking is set to any other value, the simulated x-input device will not register properly
BlockKeys=0
BlockKeysDelay=0
CloseProcess=1
CloseWindow=0
CloseKey=Esc
FilterOtherPads=0
FakeXInputPads=0
HookFastProx=0
SetPropertySuccess=0
DisableDI8Keyboard=0
DI8Range=0
RemapMethod=0
HideMouse=0
HideTaskBar=0
HideDLL=0
Steam=0
AnalogRange=1.0

That's pretty much it along with the proper control mapping of course.

 

It works with PadCount=2 or 3 or 4 if you have the controls. I use it with two players on my setup, works really well.

Link to comment
Share on other sites

 
  • 2 weeks later...

I have multiple controllers - IPAC + XINPUT fightstick, is there a way to prioritize physical XINPUT devices over virtual ones? i.e. ensure that physical controllers are detected first before simulated ones are loaded?

 

Some games only support 2 controllers and the virtual ones are loaded before my physical one, thus blocking my physical XINPUT controller when I want to use it? For example, Street Fight V, if x360kb is loaded, physical sticks won't register.

 

Thanks.

Edited by coolspot
Link to comment
Share on other sites

 
7 hours ago, coolspot said:

I have multiple controllers - IPAC + XINPUT fightstick, is there a way to prioritize physical XINPUT devices over virtual ones? i.e. ensure that physical controllers are detected first before simulated ones are loaded?

 

Some games only support 2 controllers and the virtual ones are loaded before my physical one, thus blocking my physical XINPUT controller when I want to use it? For example, Street Fight V, if x360kb is loaded, physical sticks won't register.

 

Thanks.

 

Right now x360kb does not allow mixed usage of joysticks and keyboard unfortunately.

Link to comment
Share on other sites

 
  • 2 weeks later...
 
 
 
4 hours ago, Krakatoa said:

Does it work to map a trackball (mouse)? I want to map joystick controls to a trackball for games like monkeyball.

 

Nope this is to map keyboard as a joystick. So keyboard becomes to joystick :D

 

What you want is joystick becomes trackball which I will likely never do with this project.

Link to comment
Share on other sites

 
  • 2 months later...

J'ai configuré mon multi nesica et Sega all net avec ce soft avec comme interface avec ma borne une JVSPAC. Cella marche très bie, plus de problème avec les jeux PC et la touche Alt et aussi Chaos Code 2.11 est maintenant 100% fonctionnel.

 

J'aimerai parcontre pourvoir utiliser ma manette 360 mais apparemment elle est bloqué (elle fonctionne si j'enlève le DLL), est-ce qu'il y a une option que je n'est pas trouvé pour cela?

 

Merci pour ce petit soft qui rend franchement service, surtout pour les borne d'arcade.

Link to comment
Share on other sites

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share


×
  • Create New...