Code Monkey home page Code Monkey logo

r57zone / dualshock4-emulator Goto Github PK

View Code? Open in Web Editor NEW
176.0 3.0 27.0 393 KB

DualShock4 emulation for Xbox controllers or keyboard and mouse / Эмуляция DualShock4 для Xbox контроллеров или клавиатуры и мыши

Home Page: https://youtu.be/17hY1zTqoYQ

License: The Unlicense

C++ 89.76% C 10.24%
playstation-now dualshock4 xbox-controller xinput keyboard mouse playstation-remote-play ps-remote-play dualshock4-emulation dualshock-4-emulator

dualshock4-emulator's Introduction

EN RU FR ← Choose language | Выберите язык

DualShock4 emulator

Simple application to emulate the Sony DualShock 4 gamepad using an Xbox controller or keyboard and mouse. This method is necessary for the fully work of the service Sony Playstation Plus or Playstation Remote Play. Works based on the driver ViGEm.

Setup

  1. Install ViGEmBus.
  2. Install Microsoft Visual C++ Redistributable 2017 or newer.
  3. Unpack and launch "DualShock4 emulator" (Attention! It is important to run DS4 emulator before starting PS Plus, if you are using an Xbox controller, so that PS Plus gives priority to the DualShock controller).
  4. Launch "PlayStation Plus", "PS Remote Play", "xCloud", or another application. Read the FAQ to set up xCloud.
  5. If necessary, you can invert the axis, change the InvertX and InvertY parameters to 1 in the "Config.ini" configuration file.
  6. You can also check how the DualShock 4 controller emulation works in the VSCView program. To emulate from the keyboard and mouse, you also need to change the ActivateInAnyWindow parameter to 1 and restart the program.

FAQ

• The program crashes after launch
"Antivirus" blocks the dynamic loading of the Xbox gamepad library, so the program crashes. You can close it for the duration of use.

• Touchpad press don't work
It is possible that the "PS Plus" or "PS Remote Play" apps have given priority to the Xbox controller, so restart the "PS Plus" or "PS Remote Play" apps and the emulated DualShock 4 should take precedence over the Xbox controller.

• When playing in xCloud, in the browser, the context menu is called up on the right mouse button, how can I remove it in the browser?
First change the name of the window in the configuration file or change the ActivateInAnyWindow parameter to 1, restarting the program. Next, go to the xCloud website, press "F12", select the console and paste this code there, press run and the context menu will no longer be shown.

The game sees 2 controllers at the same time (DualSense / DualShock 4 / Nintendo Pro controller or JoyCons and Xbox)
You can hide your gamepad using the HidHide program.

Xbox controller

The "Back/View/Select" button (the first button to the right of the left stick) on the Xbox controller emulating pressing the touchpad on a Sony DualShock 4.

The "Share" button is binded to the simultaneous pressing of the "Back/View/Select" and "Start/Menu" buttons or to the "F12" key.

The "PS" button is binded to the "Xbox" button, but to use it, you need to disable the use of this button in the "Xbox Game Bar" settings. Also, the "PS" button is tied to the simultaneous pressing of the "Back/View/Select" and "LB" buttons (left bumper) or the "F2" key.

You can shake (gyro) the controller by pressing Back/View/Select and RB (right bumper).

You can rotate the gamepad (gyroscope) by pressing Back and the DPAD ←↑↓→ (you can change the combinations in the configuration file).

If necessary, you can swap bumpers and triggers, as well as the Share button and pressing the touchpad, to do this change the SwapTriggersShoulders or SwapShareTouchPad parameter to 1 in the "Config.ini" configuration file.

Changing the dead zone of sticks for drifting sticks is supported. Press ALT + F9 to get the values, paste them into the "Config.ini" configuration file, into the DeadZone parameters and restart the program.

Touchpad

Game Action
Uncharted 3: Drake’s Deception (2011) The Share button (F12) duplicates pressing the left side of the touchpad.
The Last Of Us Part II (2020) Options -> Accessibility -> "Strumming Settings" instead of vertical and horizontal, put buttons.

On the Xbox gamepad, you need to press the Back/View/Select button (touchpad) and move the stick to the sides for swipes. By default, pressing the touchpad during swipes is disabled, it can be enabled in the configuration file by changing the TouchPadPressedWhenSwiping parameter to 1.

You can use swipes for the keyboard, the button codes are described below.

Gyroscope

  1. Check Windows Firewall to see if incoming connections are allowed on your network type (private) and allow if disabled.
  2. Install FreePieIMU on your Android phone by taking the latest version in the OpenTrack archive or in the releases, enter the IP address of your computer, select "Send raw data", if not selected, select the data rate "Fastest" or "Fast".
  3. Reduce the general sensitivity if necessary (the Sens parameter, in the Motion section, where 100 is 100% sensitivity) in configuration file.
  4. Reduce individual sensor sensitivity if necessary (the AccelSens and GyroSense, in the Motion section, where 100 is 100% sensitivity) in configuration file.
  5. Invert the axes if necessary (the parameters InverseX, InverseY and InverseZ, in the Motion section, where 1 is turning on the inversion, and 0 is turning off).
  6. Change phone orientation (the parameter Orientation, in the Motion section. where 1 is landscape and 0 is portrait).

If you just need to shake (gyro) the gamepad in the game, then there is no need to install Android applications, just press the "shake" button of the gamepad.

Keyboard and mouse

By default, the mouse and keyboard only work in the windows "PlayStation Plus" and "PS4 Remote Play" (change the ActivateOnlyInWindow2 parameter to your regional application title). To work only in any other applications or emulators, change the parameters ActivateOnlyInWindow and ActivateOnlyInWindow2 to the headers of these applications You can enable the work in all windows (change the ActivateInAnyWindow parameter to 1, in the "Config.ini" configuration file) or change the name of the window (the ActivateOnlyInWindow parameter) in which the actions are captured. This is necessary so that the cursor is centered only in one window and no buttons are pressed when the window is minimized.

To disable cursor centering, hold down the "C" button (can change it in the config - StopСenteringKey).

To hide the cursor after startup, change HideCursorAfterStart to 1, to restore the cursor, close the program by pressing "ALT" + "ESCAPE" or "~".

For full-screen Playstation Plus use the keys "ALT" + "F10", the upper black bar, as well as the taskbar will be hidden. To return to the normal window, press these keys again. You can disable hiding the taskbar in the configuration file by changing the HideTaskBarInFullScreen parameter to 0. If the Playstation Plus window changes once, you can change the default top offset, the FullScreenTopOffset parameter.

DualShock 4 Keyboard and mouse
L1 Alt
R1 Control
L2 Right mouse button
R2 Left mouse button
SHARE F12
TOUCHPAD (pressing) Enter
OPTIONS Tab
DPAD UP 1
DPAD LEFT 2
DPAD RIGHT 3
DPAD DOWN 4
TRIANGLE E
SQUARE R
CIRCLE Q
CROSS Space
L3 (pressing the stick) Shift
R3 (pressing the stick) Middle mouse button
Touchpad swipe up, down, left, right 7, 8, 9, 0
Touchpad up, center, left, right, down U, J, H, K, N
Shake the gamepad T
Rotate gamepad forward, backward, right, left (gyroscope) Numpad 8, 2, 4, 6
PS F2

In the profile configuration file, in the "Profiles" folder, you can change the button bindings or create a new one based on Default.ini. Button names can be found here. You can choose from standard profiles. Send more convenient bindings for a variety of games.

The sensitivity parameters SensX, SensY for the mouse can also be found in the configuration file "Config.ini", in the section "Mouse". If there is no stick movement, you can try increasing the "SleepTimeOut" parameter to 2, 4, 8, 10.

You can also enable emulation of analog triggers (L2, R2), change the EmulateAnalogTriggers parameter to 1, and increase step AnalogTriggerStep (from 0.1 to 255).

Download

Version for Windows 10.

Download

Feedback

r57zone[at]gmail.com

dualshock4-emulator's People

Contributors

hathanhks avatar r57zone avatar the-maazu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

dualshock4-emulator's Issues

[Feature Request] Add a controller vibration function?

I don't know if ViGEmBus supports the controller vibration function yet. I would imagine that it does since it supports other things like touchpad swipes. I would ask on their GitHub but they are preventing people from reporting bugs, submitting questions, and making feature requests. They want users to ask on Discord instead, and there is nothing that I hate more than a GitHub repository trying to send me elsewhere or trying or to use a chat room.

I'm not using DS4Emulator right now because I am not subscribed to PlayStation Now. At least not yet. I plan to subscribe sometime between now and December 10, 2021. Most likely around 3-4 weeks from now. The game that I want to play is The Last of Us Part II. In this game, you have to shake the controller to recharge the flashlight. I don't think that it is absolutely necessary to have the flashlight charged, but it is a nice game with many hours of gameplay and it would be better if I could have a charged, working flashlight during that time. So if your DS4Emulator doesn't support it yet, could you look into adding it? I hope so. Thank you.

start button maximizing system soun volume to 100

start button . sometimes action button. sometimes something else set system sound volume to 100 at once. using ds emulator for last of us . cause my xbox gamepad have some trouble with sticks. issue with sound dissapearing when closing ds emulator. sorry for poor english

PS Remote Play always reports low controller battery

Remote Play complains about "low controller battery", and sometimes DualShock4-Emulator closes on its own, at which point Remote Play tells me to "charge my controller" before continuing.

I've tested with a Generic (Logitech) Gamepad with a wireless USB dongle, and a Steam Controller on the wireless USB dongle, Bluetooth and fully wired using microUSB, with and without batteries inside the controller. Steam Controller reports its charge correctly through Bluetooth and Steam(using the wireless dongle), and the Generic Gamepad doesn't report its charge at all, but it seems like this is disregarded anyways, as in both cases Remote Play claims the same thing.

Please look into it, as the warning is a bit annoying. Thank you for your work.
image
image

Motion Sensor support?

i'm primarily using this tool as a passthrough for other apps/games that supports DS4 but there is no motion sensor data.

edit: just to clarify, i'm using a DS3 with scptoolkit, i want to get the motion data from the DS3 to the DS4 Emulator.

How do I shake the controller to recharge my flashlight?

I never played a PlayStation game before, so I am not familiar with controllers at all. In The Last of Us, I am supposed to shake the controller or something to recharge the flashlight. But I don't know how to do that. I found a forum thread that said something about six-axis, whatever that means. Is there a way to do this in DualShock4 Emulator? And if not, can you implement that feature in the near future? Thank you.

How to use on other programs instead of just PS Now?

I can't quite figure out how to use it on another window besides PS Now. I tried changing separately both the ActivateInAnyWindow to 1 and changing the ActivateOnlyInWindow name to the window I want to use it in and neither worked. Thanks in advance.

Shake button issue

Some games need pressing RB and shaking at at same time.So are the any way to chage the button of shake?

"Press exit key to exit"

Minor issue. The program box says:

Press exit key to exit, by default it is "~"

However on a UK English keyboard, the exit key is in fact a single quotation mark, i.e. '

[Feature request] Option to disable mouse emulation

I use ps4 remote play because my ps4 controller is broken.

Add option to disable mouse emulation so it does not get stuck center screen.
and/or add option to disable joy sticks (for fighting games, only dpad and XO/[] are needed)

Problem:
[KeyboardMouse]
ActivateOnlyInWindow=PlayStation™Now <- unknown what to type for "ps4 remote play" window
Mouse gets stuck center screen because of:
ActivateInAnyWindow=1 <- changed to 1 so it works for ps4 remote play

Need to alt tab to disable.

DS4Emulator Crash

Hi,
When i open DS4Emulator after a few second the application crash.

In the EventVier i find this:

Nome dell'applicazione che ha generato l'errore: DS4Emulator64.exe, versione: 0.0.0.0, timestamp: 0x60462bc9
Nome del modulo che ha generato l'errore: unknown, versione: 0.0.0.0, timestamp: 0x00000000
Codice eccezione: 0xc0000005
Offset errore 0x0000000000000000
ID processo che ha generato l'errore: 0x3f14
Ora di avvio dell'applicazione che ha generato l'errore: 0x01d71a691877036b
Percorso dell'applicazione che ha generato l'errore: C:\TMP\DS4Emulator.1.6.Portable\DS4Emulator64.exe
Percorso del modulo che ha generato l'errore: unknown
ID segnalazione: f9027d19-7767-476b-896f-7480f833ae1e
Nome completo pacchetto che ha generato l'errore:
ID applicazione relativo al pacchetto che ha generato l'errore:

Thanks

Give DS4Emulator its own program icon. (Just an idea.)

So I decided to pin the DS4Emulator program to my Taskbar for easy access. I'm going to later search online how to make it open minimized to the Taskbar. It shouldn't be too hard. But the DS4Emulator program not having a program icon bothered me. I will probably search online for a good image. Maybe an image of a PS4 controller or something. But anyway, I wanted to show you my temporary icon.

e2yIhsLzB1

As you can see, the program to the right of PlayStation Now is the DS4Emulator program that is using your GitHub profile image.

I just downloaded your profile image and converted it into an .ico image and then I went to Properties and changed the shortcut icon to the new .ico image. I'm not very happy with this image, so I will search online for a better controller image later.

If I find some a good image, I will share here on this thread.

IMPORTANT:
Whenever you change a program shortcut icon, you should always go to Run and type this and press enter:
ie4uinit.exe -show
It will refresh the taskbar icons and update them to show the new shortcut icon that you applied.

I found a AutoHotKey script that lets you toggle mouse cursor visibility on/off.

So this is a six year old script that I found on the internet. It was really hard to find. If you press Win + C, it toggles mouse cursor visibility on/off. Not everyone knows how to create AutoHotKey scripts. So what you do is you download the AutoHotKey progra installation .zip. You extract it into a folder. Then you open the subfolder called Compiler. Inside the Compiler folder, you create a new .txt document (Notepad) but then you change the extension from .txt to .ahk. I would also name this new .ahk file HideShowCursor. Copy the contents of the following code inside that file and then save and close it. Finally, inside Compiler folder is a Ah2Exe program. You open that and select the path to the .ahk file you just created. Then for Base (bin), you select 32-bit or 64-bit. I always go with 64-bit. Then click the Convert button. This will create a new AutoHotKey program executable called HideShowCursor. Now if you run it and press Win + C, you can toggle mouse cursor visibility.

Here is the code for the script:

; Example: Hides the mouse cursor when you press Win+C. To later show the cursor, press Win+C again.
; This script is from www.autohotkey.com/forum/topic6107.html

OnExit, ShowCursor  ; Ensure the cursor is made visible when the script exits.
return

ShowCursor:
SystemCursor(\"On\")
ExitApp

#c::SystemCursor(\"Toggle\")  ; Win+C hotkey to toggle the cursor on and off.

SystemCursor(OnOff=1)   ; INIT = \"I\",\"Init\"; OFF = 0,\"Off\"; TOGGLE = -1,\"T\",\"Toggle\"; ON = others
{
    static AndMask, XorMask, $, h_cursor
        ,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; system cursors
        , b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13   ; blank cursors
        , h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13   ; handles of default cursors
    if (OnOff = \"Init\" or OnOff = \"I\" or $ = \"\")       ; init when requested or at first call
    {
        $ = h                                          ; active default cursors
        VarSetCapacity( h_cursor,4444, 1 )
        VarSetCapacity( AndMask, 32*4, 0xFF )
        VarSetCapacity( XorMask, 32*4, 0 )
        system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650
        StringSplit c, system_cursors, `,
        Loop %c0%
        {
            h_cursor   := DllCall( \"LoadCursor\", \"uint\",0, \"uint\",c%A_Index% )
            h%A_Index% := DllCall( \"CopyImage\",  \"uint\",h_cursor, \"uint\",2, \"int\",0, \"int\",0, \"uint\",0 )
            b%A_Index% := DllCall(\"CreateCursor\",\"uint\",0, \"int\",0, \"int\",0
                , \"int\",32, \"int\",32, \"uint\",&AndMask, \"uint\",&XorMask )
        }
    }
    if (OnOff = 0 or OnOff = \"Off\" or $ = \"h\" and (OnOff < 0 or OnOff = \"Toggle\" or OnOff = \"T\"))
        $ = b  ; use blank cursors
    else
        $ = h  ; use the saved cursors

    Loop %c0%
    {
        h_cursor := DllCall( \"CopyImage\", \"uint\",%$%%A_Index%, \"uint\",2, \"int\",0, \"int\",0, \"uint\",0 )
        DllCall( \"SetSystemCursor\", \"uint\",h_cursor, \"uint\",c%A_Index% )
    }
}

DS4Emulator exit after a couple of seconds

When i open DS4Emulator i ear the sound of a new drive but then the program just stops.
With the help of Sysinternal's Process Monitor (procmon) i see:

08:22:00,8390532 DS4Emulator.exe 10980 QuerySecurityFile C:\Windows\SysWOW64\dbgcore.dll BUFFER OVERFLOW Information: Owner, Group, DACL

Then the dump file is written.

Dump file (maybe some output, like the various Warning, are generated by WinDBG itself during the analysis... i do not know):

*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************

WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 4 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 1 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 1 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 1 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 2 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 2 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 2 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 3 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 3 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 3 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 4 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 4 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 4 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 4 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB

KEY_VALUES_STRING: 1

    Key  : AV.Fault
    Value: Execute

    Key  : Analysis.CPU.mSec
    Value: 280

    Key  : Analysis.DebugAnalysisProvider.CPP
    Value: Create: 8007007e on DESKTOP-E8UKD1H

    Key  : Analysis.DebugData
    Value: CreateObject

    Key  : Analysis.DebugModel
    Value: CreateObject

    Key  : Analysis.Elapsed.mSec
    Value: 275

    Key  : Analysis.Memory.CommitPeak.Mb
    Value: 60

    Key  : Analysis.System
    Value: CreateObject

    Key  : Timeline.OS.Boot.DeltaSec
    Value: 47815

    Key  : WER.OS.Branch
    Value: vb_release

    Key  : WER.OS.Timestamp
    Value: 2019-12-06T14:06:00Z

    Key  : WER.OS.Version
    Value: 10.0.19041.1


ADDITIONAL_XML: 1

OS_BUILD_LAYERS: 1

APPLICATION_VERIFIER_FLAGS:  0

CONTEXT:  (.ecxr)
eax=00000000 ebx=00d85000 ecx=01090000 edx=01090000 esi=00000000 edi=00000001
eip=00000000 esp=00f3f9e4 ebp=00f3fa88 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010246
00000000 ??              ???
Resetting default scope
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 00000000
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000008
   Parameter[1]: 00000000
Attempt to execute non-executable address 00000000

PROCESS_NAME:  DS4Emulator.exe

EXECUTE_ADDRESS: 0

FAILED_INSTRUCTION_ADDRESS: 
+0
00000000 ??              ???

ERROR_CODE: (NTSTATUS) 0xc0000005 - L'istruzione a 0x%p ha fatto riferimento alla memoria a 0x%p. La memoria non poteva essere %s.

EXCEPTION_CODE_STR:  c0000005

EXCEPTION_PARAMETER1:  00000008

EXCEPTION_PARAMETER2:  00000000

STACK_TEXT:  
WARNING: Frame IP not in any known module. Following frames may be wrong.
00f3f9e0 00b431d2     00000000 00b9f8d8 78e44ff6 0x0
00f3fa88 00b4d825     00000001 01098f90 0109c810 DS4Emulator+0x31d2
00f3fad0 761dfa29     00d85000 761dfa10 00f3fb3c DS4Emulator+0xd825
00f3fae0 771b75f4     00d85000 e3507d15 00000000 KERNEL32!BaseThreadInitThunk+0x19
00f3fb3c 771b75c4     ffffffff 771d7333 00000000 ntdll!__RtlUserThreadStart+0x2f
00f3fb4c 00000000     00b4d8ad 00d85000 00000000 ntdll!_RtlUserThreadStart+0x1b


SYMBOL_NAME:  ds4emulator+31d2

MODULE_NAME: DS4Emulator

IMAGE_NAME:  DS4Emulator.exe

STACK_COMMAND:  ~0s ; .ecxr ; kb

FAILURE_BUCKET_ID:  SOFTWARE_NX_FAULT_INJECTED_CRASH_c0000005_DS4Emulator.exe!Unknown

OS_VERSION:  10.0.19041.1

BUILDLAB_STR:  vb_release

OSPLATFORM_TYPE:  x86

OSNAME:  Windows 10

FAILURE_ID_HASH:  {4477d402-7f24-71aa-e522-8d97ffa035fd}

Followup:     MachineOwner
---------

WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB
WARNING: Teb 0 pointer is NULL - defaulting to 7ffde000
WARNING: 7ffde000 does not appear to be a TEB

I'm trying to use an XBox 360 Controller for PS Now on Windows 10.
Hope you can help me.

Regards.

Keys not working

Hi! I installed the vigembus and started the DS4 emulator, then connected to Ps remote play. The strange thing is that the arrows working for navigation and despite the cross button is binded to space, I figured it works with the enter key. Nothing else seems to happen when I try to push any other button, binded, or not binded.

Cant work with infamous second son

i have x360 controller and rb+back(touchpad) button doesnt work for shaking function can i solve this or not.Sorry for my problem i didnt understand well the instructions

Thanks for your emulator btw

Feature: HideCursorAfterStart=1 by default

To hide the cursor after startup, change HideCursorAfterStart to 1, to restore the cursor, close the program by pressing "ALT" + "ESCAPE" or "~".

This is not intuitive.

[Feature request] Deadzone option for sticks

Firstly, thank you so much for the great software! I can play Until Dawn on my PC with an Xbox 360 controller!

The problem is that Until Dawn's story choices are selected with the analogue stick, and my controller selects options without me pressing anything due to the stick being slightly off-centre when not pressed (it is old).

Can you add a deadzone option so that, for instance, the stick only registers when at 25% of maximum?

Still crashing seconds after startup

Probably related to #3 and/or #17, possibly #22.

The Problem

When I open DS4Emulator or DS4Emulator64.exe, it crashes after a couple seconds. This has persisted through every version since at least 1.7.3. I have all the dependencies installed already. My machine is 64-bit Windows 11 Home, although this behavior also occurred when I was still on Windows 10 Home.

When it runs in a normal CMD window, the window closes automatically on crash. On Windows Terminal, however, the window stays open so I can see that it say: Process exited with code 3221225477

It generated a dump file and a windows error reporting file, but for some reason WinDBG is not starting on my computer, so I'm attaching them instead (zipped because github doesn't support .dmp or .wer attachments. Hopefully they will be helpful.
[AppCrash_DS4Emulator64.zip]

The Workaround

A workaround that sometimes works to prevent DS4Emulator from crashing is, immediately after starting the emulator, pressing Alt+F9 to view stick input values, waiting a few seconds, then pressing Alt+F9 again to hide values. For some reason, the emulator usually will not crash during or after this (until the next restart, that is).

Emulator not working

I followed all the steps but the emulator is not working. I can use the Playstation Now interface, but when I'm inside a game, it doesn't react to anything, like there is no controller connected.

Xbox Controller not working with Last of Us Part 2

Starting the emulator first, it reports the use of an xbox controller.
Start PSNOW
Start Last of Us Part 2 and it asks me to reconnect the controller constantly and can't get to the start menu.

Have installed ViGEmBusSetup_x64 as per instructions and have the correct Microsoft Visual C++ Redistributable installed.

The controller works fine on Detroit and Horizon Dawn all OK!

Gyro tilting on buttons

Hello,

It would be nice if you were able to use the "share" button on the Xbox controller (and not the "Back") to handle the special cases.

For example:

  • HOLDING "SHARE" + D-PAD = Taps on touchpad (up down left right)
  • HOLDING "SHARE" + L-STICK = Tilting left and right (basic gyro)
  • BACK = Taps on touchpad (center) -implemented
  • HOLDING "SHARE" + L3 OR R3 = Shaking the gamepad - implemented
  • HOLDING "SHARE" + R-STICK = Swipes on touchpad (up down left right) - implemented

Inputs from emulator not registering

Hi,

I'm using the DS4 emulator version 1.7.4 and my inputs aren't registering and the cursor isn't fixed to the center of the screen as it is supposed to be. The computer can recognise the emulator and so can the PSNow, but any inputs of the emulator are not being registered in-game.

Is there anything I can do to fix this?

PlayStation Plus app compatible

Since the new PlayStation Plus app, the PS Now app no ​​longer exists.
You have to modify the Config.ini file and change like this:

ActivateOnlyInWindow=PlayStation Plus

Gyro orientation

Face of controller(where the buttons are) maps to bottom of phone (where USB slot is).

L2 and R2 does not work in Gravity Rush 2, Ace Combat 7 and Bloodborn (and maybe everywhere, I tested just this 3 games)

Hello. I tried to use your cool program with ps remote play, but there is something wrong with triggers emulation.
I tried both: keyboard mode and xbox360 mode.
In Ace Combat 7 the fighter jet should get speed boost from L2 or R2 but nothing happens when I hold them pressed.
In Gravity Rush 2 those buttons used for dodging and dashing, but totally not work too.
Can you retest and fix it?

[Enhancement] Map the Playstation button

Hi, this is a fantastic program! Would it be possible to map the PS Button (y'know, the round one in the middle of the controller that opens the PS4's settings menu)?

Personally, I'm using a physical Xbox One controller, not keyboard/mouse, so if there's a way to map the central Xbox button to the central PS button, that would be ideal. Otherwise, it would work just to have some mappable button combination (e.g. I would probably use 123, since I never use the PS share menu anyway).

Are there any bugs with L3 Left Thumb keys?

When I first installed DS4Emulator, I played around with the settings and eventually found settings that I was really happy with. I had set Ctrl (17) for L3 Left Thumb so I could press the Ctrl key to "listen" in The Last of Us. And I wasn't sure what I should set R2 Right Trigger to, but I was okay with P (80) to toggle view from over left shoulder to right shoulder.

Then today, I tried some new programs out to see how they compare to DS4Emulator. I installed GPDSCK (and vJoy) and x360e. I couldn't get it to work. It was confusing and anytime I pressed a key, it pressed a different key instead. So I gave up.

When I went back to DS4Emulator, the Ctrl key no longer worked for Left Thumb to "listen" for enemies. So I tried changing it to X. But X wasn't the greatest key. So I tried R. R was okay, but then I decided on F. But the game acted weird. With F as the key for Left Thumb to "listen" sometimes CTRL worked as L3 Left Thumb.

All I know is I can't get Ctrl (17) to work for L3 anymore. P does toggle view from left to right shoulder, but only if I point my gun. If I am not pointing my gun, it pulls up the PlayStation menu instead. Which is fine. I just wish I knew what is wrong with the L3 key. Also, right now, no key seems to be working (that I already used) for L3. Like X, F, etc. wont' work. But maybe I can only "listen" in certain parts of the game?

I did uninstall GPDSCK, vJoy, and x360e. I even uninstalled ViGEmBus and DS4Emulator and installed them again. Even restarted my computer.

Maybe I am just being dumb. Maybe nothing is wrong. It's just acting weird to me and I have no idea how to fix it. Oh, and I restarted PS Now a lot of times too.

PS - I really like this problem, and I don't have any complaints. It's easy to use and I appreciate it. I didn't want to buy a controller and this program does what I want. Just trying to figure out why I'm having problems with the L3 key now. I'm tired and half asleep so I will try again tomorrow.

[Question] How do I comment out and uncomment text in the config file?

I want to learn how to comment out 1.) lines of text, 2.) blocks of text, an 3.) parts of a line, but not just the end of the line.

1.) Lines of text.

Like this:

[DS4]
InvertX=0
InvertY=0

# This line is commented out.
// This line is commented out.
<!-- This line is commented out. -->

2.) Blocks of text.

Like this:

[DS4]
InvertX=0
InvertY=0

# This line (of a block) is commented out.
# This line (of a block) is commented out.
# This line (of a block) is commented out.

// This line (of a block) is commented out.
// This line (of a block) is commented out.
// This line (of a block) is commented out.

<!--
This line (of a block) is commented out.
This line (of a block) is commented out.
This line (of a block) is commented out.
-->

3.) Parts of a line (and not just at the end of the line).

Like this:

[DS4]
<!--This text is commented out.-->InvertX=0<!--This text is commented out.-->
<!--This text is commented out.-->InvertY=0<!--This text is aso commented out.-->

Would be great if it could ignore spaces too, like this:
<!--This text is commented out.--> InvertX=0          <!--This text is commented out.-->
<!--This text is commented out.--> InvertY=0          <!--This text is commented out.-->

Why do I want to do this?

I want to make the config files easier to read and for the config files to have all the information that I need so I don't have to refer to GitHub pages.

This is an explanation of my Last of Us controls (I will need to improve it later by using arrow characters for the dpad):

L1 -- LEFT_SHOULDER=2		RMB for "Zoom"
R1 -- RIGHT_SHOULDER=1		LMB for "Fire, Reload Weapon, Use Health"
L2 -- LEFT_TRIGGER=16		Shift for "Sprint"
R2 -- RIGHT_TRIGGER=17		Ctrl for "Listen Mode, Switch Shoulders While Aiming"
L3 -- LEFT_THUMB=70		F for "Focus On Hint/Scene"
R3 -- RIGHT_THUMB=18		Alt for "Flashlight"
O --- CIRCLE=67			C for "Crouch, Previous Menu"
X --- CROSS=32			Space for "Menu Select"
△ --- TRIANGLE=69		E for "Interact"
□ --- SQUARE=81			Q for "Melee, Escaping, Other"
----- SHARE=9			Tab for "Backpack/Crafting"
----- OPTIONS=79		O for "Options"
----- TOUCHPAD=13		Enter (not applicable)
----- DPAD_UP=38 		Up
----- DPAD_LEFT=37		Left
----- DPAD_RIGHT=39		Right
----- DPAD_DOWN=40		Down

1. ) Left side.

As you can see, the very left side had abbreviations of controls and symbols of controls, such as:
L1, R1, L2, R2, L3, R3, O, X, △, □ , and soon to be arrow characters for dpad.

It also has -----'s because when I use a monospace font in Notepad like consolas, it makes everything neatly aligned. I may end up switching to a different character instead of -----, though. I might use ______ instead.


2.) Right side.

And then on the very far right, I write what the key code stands for and what that button will do. For instance LEFT_SHOULDER=2...
2 is the key code for RMB, and for this game it is used for "Zoom".


3.) This is what I want to do on both the Left and Right sides.

So It would be nice if I could comment out stuff like this and have it ignore all the spaces:

<!--L1 __--> LEFT_SHOULDER=2		<!--RMB for "Zoom"-->
<!-______--> DPAD_DOWN=40		<!--Down-->

And this would not be as nice, because it doesn't have the aesthetically pleasing spaces:

<!--L1 __-->LEFT_SHOULDER=2<!--_____________RMB for "Zoom"-->
<!-______-->DPAD_DOWN=40<!--________________Down-->

4.) Bottom of config file.

And then I want to add a commented out block on the very bottom of the config file that has every key code, so a person can just look at their config file to know what the key codes are without having to refer to a website page.


5.) Side note.

I know that I could put the "explanation of controls" in a separate commented out block. But I wanted to make it even better than that. Because I think that it would be nice if the actual config part of the config file had L1, R1, L2, R2, L3, R3, O, X, △, □ , and soon to be arrow characters for dpad, to the left of the LEFT_SHOULDER=, RIGHT TRIGGER=, CROSS=, etc. to help better orientate users when they are trying to edit their bindings. When I am changing the config, it helps having those symbols L1, R1, L2, R2, L3, R3, O, X, △, □ immediately jump out of me. But also, sometimes when I am in-game, I forgot what I had assigned to L1, R1, L2, R2, L3, R3, O, X, △, □ and it helps to Alt + Tab to the config file and easily spot where that PS4 button is and what keyboard or mouse button I have assigned to it.


6.) Conclusion.

I hope that all the things that I want to do are already possible. And if not, I hope that DS4Emulator can be tweaked to make them possible. Thank you for taking the time to read this.

This is my Config.ini controls for The Last of Us (and some other games).

Game ► The Last of Us

DS4Emulator 1.75

# THE LAST OF US

# L1 --- RMB for "Zoom".
L1=2

# R1 --- LMB for "Fire, Reload Weapon, Use Health".
R1=1

# L2 --- Shift for "Sprint".
L2=16

# R2 --- Ctrl for "Listen Mode, Switch Shoulders While Aiming".
R2=17

# L3 --- F for "Focus On Hint/Scene".
L3=70

# R3 --- Alt for "Flashlight".
R3=18

# ------ R for "Recharge Flashlight".
SHAKING=82

# O ---- C for "Crouch, Previous Menu".
CIRCLE=67

# X ---- Space for "Menu Select".
CROSS=32

# △ ---- E for "Interact".
TRIANGLE=69

# □ ---- Q for "Melee, Escaping, Other".
SQUARE=81

# ------ Tab for "Backpack/Crafting".
SHARE=9

# ------ O for "Options".
OPTIONS=79

# ------ Up, Down, Left, Right for "Weapons/Items Menu".
DPAD_UP=38
DPAD_DOWN=40
DPAD_LEFT=37
DPAD_RIGHT=39

# ------ W, S, A, D.
LS_UP=87
LS_DOWN=83
LS_LEFT=65
LS_RIGHT=68

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  9 for "Swipe Left".
TOUCHPAD_SWIPE_LEFT=57
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  0 for "Swipe Right".
TOUCHPAD_SWIPE_RIGHT=48
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  7 for "Swipe Up".
TOUCHPAD_SWIPE_UP=55
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  8 for "Swipe Down".
TOUCHPAD_SWIPE_DOWN=56

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  H for "Touchpad Left".
TOUCHPAD_LEFT=72
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  K for "Touchpad Right".
TOUCHPAD_RIGHT=75
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  J for "Touchpad Center".
TOUCHPAD_CENTER=74
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  U for "Touchpad Up".
TOUCHPAD_UP=85
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  N for "Touchpad Down".
TOUCHPAD_DOWN=78

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  Enter for "Touchpad".
TOUCHPAD=13

# ------ F10 for the PlayStation Button (Return to Game, Close Game, Application Saved Data Management, Vibration Settings).
PS=121

In DS4Emulator 1.7.5, there is a button for "Motion" that lets you shake your controller.‎ This should allow you to recharge your flashlight. I haven't tested it out yet though. If it doesn't work, another way to recharge your flashlight is to just restart the checkpoint.

Game ► The Last of Us Part II

DS4Emulator 1.75

[Keys]

# THE LAST OF US PART II

# L1 --- Shift for "Sprint, Previous Menu".
L1=16

# R1 --- Ctrl for "Listen Mode, Switch Weapons, Next Menu".
R1=17

# L2 --- RMB for "Zoom".
L2=2

# R2 --- LMB for "Fire, Reload Weapon, Use Health".
R2=1

# L3 --- F for "Focus On Hint/Scene".
L3=70

# R3 --- Alt for "Flashlight".
R3=18

# O ---- C for "Crouch, Previous Menu".
CIRCLE=67

# X ---- Space for "Jump, Climb, Menu Select".
CROSS=32

# △ ---- E for "Interact".
TRIANGLE=69

# □ ---- Q for "Melee, Escaping, Switch Shoulders While Aiming".
SQUARE=81

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  Enter for "".
SHARE=13

# ------ Tab for Backpack/Crafting/Journal".
TOUCHPAD=9

# ------ O for "Options".
OPTIONS=79

# ------ Up, Down, Left, Right for "Weapons/Items Menu".
DPAD_UP=38
DPAD_DOWN=40
DPAD_LEFT=37
DPAD_RIGHT=39

# ------ W, S, A, D.
LS_UP=87
LS_DOWN=83
LS_LEFT=65
LS_RIGHT=68

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  9 for "Swipe Left".
TOUCHPAD_SWIPE_LEFT=57
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  0 for "Swipe Right".
TOUCHPAD_SWIPE_RIGHT=48
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  7 for "Swipe Up".
TOUCHPAD_SWIPE_UP=55
# ------ X for "Play Guitar Note".
TOUCHPAD_SWIPE_DOWN=88

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  H for "Touchpad Left".
TOUCHPAD_LEFT=72
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  K for "Touchpad Right".
TOUCHPAD_RIGHT=75
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  J for "Touchpad Center".
TOUCHPAD_CENTER=74
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  U for "Touchpad Up".
TOUCHPAD_UP=85
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  N for "Touchpad Down".
TOUCHPAD_DOWN=78

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  R for "Motion".
SHAKING=82

# ------ F10 for the PlayStation Button (Return to Game, Close Game, Application Saved Data Management, Vibration Settings).
PS=121

Game ► Until Dawn

DS4Emulator 1.6. I will update this to 1.75 later on.

[Keys]

# UNTIL DAWN

# L1 --- RMB for "Next Tab in Character Menu, Walk Faster"
L1=2

# R1 --- LMB for "Opens the Character Menu, Previous Tab in Character Menu"
R1=1

# L2 --- YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (Shift)
L2=16

# R2 --- Ctrl for "Grab Objects, Fire Weapons"
R2=17

# L3 --- YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (F)
L3=70

# R3 --- YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (Alt)
R3=18

# O ---- C for "Button Prompt, Previous Menu"
CIRCLE=67

# △ ---- E for "Button Prompt"
TRIANGLE=69

# □ ---- Q for "Button Prompt"
SQUARE=81

# X ---- Space for "Interact, Menu Select"
CROSS=32

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (Tab)
SHARE=9

# ------ O for "Options"
OPTIONS=79

# ------ Up, Down, Left, Right
DPAD_UP=38
DPAD_DOWN=40
DPAD_LEFT=37
DPAD_RIGHT=39

# ------ 9  (If it doesn't work on the first try, keep pressing.  It will eventually work.)
TOUCHPAD_SWIPE_LEFT=57
# ------ 0  (If it doesn't work on the first try, keep pressing.  It will eventually work.)
TOUCHPAD_SWIPE_RIGHT=48
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (7)
TOUCHPAD_SWIPE_UP=55
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (8)
TOUCHPAD_SWIPE_DOWN=56

# ------ H  (If you press K and then H, it is the same thing as a Swipe Left.)
TOUCHPAD_LEFT=72
# ------ K  (If you press H and then K, it is the same thing as a Swipe Right.)
TOUCHPAD_RIGHT=75
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (J)
TOUCHPAD_CENTER=74
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (U)
TOUCHPAD_UP=85
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (N)
TOUCHPAD_DOWN=78
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (Enter)
TOUCHPAD=13

Game ► Little Nightmares

DS4Emulator 1.6. I will update this to 1.75 later on.

[Keys]

# LITTLE NIGHTMARES

# L1 --- YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (RMB)
L1=2

# R1 --- YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (LMB)
R1=1

# L2 --- C for "Crouch, Slide"
L2=67

# R2 --- F for "Grab"
R2=70

# L3 --- YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (1)
L3=49

# R3 --- YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (2)
R3=50

# O ---- Alt for "Lighter, Previous Menu"
CIRCLE=18

# X ---- Space for "Jump, Throw"
CROSS=32

# △ ---- YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (3)
TRIANGLE=51

# □ ---- Shift for "Sprint"
SQUARE=16

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (Tab)
SHARE=9

# ------ O for "Options"
OPTIONS=79

# ------ Up, Down, Left, Right
DPAD_UP=38
DPAD_DOWN=40
DPAD_LEFT=37
DPAD_RIGHT=39

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (9)
TOUCHPAD_SWIPE_LEFT=57
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (0)
TOUCHPAD_SWIPE_RIGHT=48
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (7)
TOUCHPAD_SWIPE_UP=55
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (8)
TOUCHPAD_SWIPE_DOWN=56

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (H)
TOUCHPAD_LEFT=72
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (K)
TOUCHPAD_RIGHT=75
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (J)
TOUCHPAD_CENTER=74
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (U)
TOUCHPAD_UP=85
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (N)
TOUCHPAD_DOWN=78
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (Enter)
TOUCHPAD=13

Game ► The Darkness

DS4Emulator 1.6. I will update this to 1.75 later on.

[Keys]

# THE DARKNESS

# SPAWN DARKLINGS:
# Press Ctrl + F (□) to spawn a Berserker Darkling.
# Press Ctrl + E (X) to spawn a Gunner Darkling.
# Press Ctrl + Q (O) to spawn a Kamikaze Darkling.
# Press Ctrl + Space (△) to spawn a Lightkiller Darkling.

# L1 --- Ctrl for "Manifest Darkness"
L1=17

# R1 --- Shift for "Darkness Powers: Creeping Dark, Demon Arm, Darkness Guns, Black Hole"
R1=16

# L2 --- LMB for "Fire Left Weapon"
L2=1

# R2 --- RMB for "Fire Right Weapon"
R2=2

# L3 --- C for "Crouch"
L3=67

# R3 --- Alt for "Zoom"
R3=18

# O ---- Q for "Reload Weapon, Previous Menu"
CIRCLE=81

# X ---- E for "Interact, Devour Hearts, Start Button, Menu Select"
CROSS=69

# △ ---- Space for "Jump"
TRIANGLE=32

# □ ---- F for "Redirect Darklings"
SQUARE=70

# ------ Tab for "Objectives"
SHARE=9

# ------ O for "Options"
OPTIONS=79

# ------ Switch Darkness Powers
DPAD_UP=38
DPAD_DOWN=40
# ------ Switch Weapons
DPAD_LEFT=37
DPAD_RIGHT=39

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (9)
TOUCHPAD_SWIPE_LEFT=57
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (0)
TOUCHPAD_SWIPE_RIGHT=48
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (7)
TOUCHPAD_SWIPE_UP=55
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (8)
TOUCHPAD_SWIPE_DOWN=56

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (H)
TOUCHPAD_LEFT=72
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (K)
TOUCHPAD_RIGHT=75
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (J)
TOUCHPAD_CENTER=74
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (U)
TOUCHPAD_UP=85
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (N)
TOUCHPAD_DOWN=78
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (Enter)
TOUCHPAD=13

Game ► Red Dead Redemption

DS4Emulator 1.6. I will update this to 1.75 later on.

[Keys]

# RED DEAD REDEMPTION

# I just started playing, so I might not know all of the controls yet.

# L1 --- Q for "Weapons Menu"
L1=81

# R1 --- Ctrl for "Take Cover"
R1=17

# L2 --- RMB for "Draw Weapon, Aim Weapon"
L2=2

# R2 --- LMB for "Use Weapon"
R2=1

# L3 --- C for "Crouch"
L3=67

# R3 --- F for "Dead Eye, Change View"
R3=70

# O ---- R for "Reload, Previous Menu"
CIRCLE=82

# X ---- Alt for "Sprint, Menu Option"
CROSS=18

# △ ---- E for "Interact, Slide Down"
TRIANGLE=69

# □ ---- Space for "Jump"
SQUARE=32

# ------ Tab for "Inventory"
SHARE=9

# ------ O for "Start, Main Menu"
OPTIONS=79

# ------ Up, Down, Left, Right
DPAD_UP=38
DPAD_DOWN=40
DPAD_LEFT=37
DPAD_RIGHT=39

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (9)
TOUCHPAD_SWIPE_LEFT=57
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (0)
TOUCHPAD_SWIPE_RIGHT=48
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (7)
TOUCHPAD_SWIPE_UP=55
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (8)
TOUCHPAD_SWIPE_DOWN=56

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (H)
TOUCHPAD_LEFT=72
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (K)
TOUCHPAD_RIGHT=75
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (J)
TOUCHPAD_CENTER=74
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (U)
TOUCHPAD_UP=85
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (N)
TOUCHPAD_DOWN=78
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (Enter)
TOUCHPAD=13

Game ► Uncharted: Drake's Fortune

DS4Emulator 1.6. I will update this to 1.75 later on.

[Keys]

# UNCHARTERED 1

# I just started playing, so I might not know all of the controls yet.

# L1 --- RMB for "Aim Weapon"
L1=2

# R1 --- LMB for "Fire Weapon"
R1=1

# L2 --- Alt for "Zoom In"
L2=18

# R2 --- R for "Reload"
R2=82

# L3 --- YOU MIGHT NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (F)
L3=70

# R3 --- YOU MIGHT NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (Shift)
R3=16

# O ---- C for "Roll, Take Cover, Previous Menu"
CIRCLE=67

# X ---- Space for "Menu Select"
CROSS=32

# △ ---- E for "Collect Ammo"
TRIANGLE=69

# □ ---- Q for "Punch"
SQUARE=81

# ------ YOU MIGHT NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (Tab)
SHARE=9

# ------ O for "Options"
OPTIONS=79

# ------ Up, Down, Left, Right
DPAD_UP=38
DPAD_DOWN=40
DPAD_LEFT=37
DPAD_RIGHT=39

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (9)
TOUCHPAD_SWIPE_LEFT=57
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (0)
TOUCHPAD_SWIPE_RIGHT=48
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (7)
TOUCHPAD_SWIPE_UP=55
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (8)
TOUCHPAD_SWIPE_DOWN=56

# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (H)
TOUCHPAD_LEFT=72
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (K)
TOUCHPAD_RIGHT=75
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (J)
TOUCHPAD_CENTER=74
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (U)
TOUCHPAD_UP=85
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (N)
TOUCHPAD_DOWN=78
# ------ YOU DO NOT NEED THIS BUTTON FOR THIS GAME.  THIS IS JUST A PLACEHOLDER. (Enter)
TOUCHPAD=13

Button Key Codes

This is a commented out section that I added to the bottom of my DS4Emulator config file. It contains a list of all the button key codes. I thought that it would be more convenient to have all of the button key codes in my config file instead of having to use my browser to visit a website https://github.com/r57zone/Half-Life-Alyx-novr/blob/master/BINDINGS.md

I changed the order of the button codes according to my personal preferences. And I changed the order of a few key names. For example, I changed the key names ", <" and ". >" to "< ," and "> ."

Please let me know if I made any mistakes or if any of these key codes quit working in the future.

# THE FOLLOWING IS A LIST OF ALL THE BUTTON CODES.

#    1 - Mouse Left Button
#    2 - Mouse Right Button
#    4 - Mouse Middle Button
#    5 - Mouse Side Button (1)
#    6 - Mouse Side Button (2)

#   16 - Shift
#   17 - Ctrl
#   18 - Alt
#   32 - Space
#    9 - Tab
#   13 - Enter
#   20 - CapsLock
#    8 - Backspace

#   65 - A a
#   66 - B b
#   67 - C c
#   68 - D d
#   69 - E e
#   70 - F f
#   71 - G g
#   72 - H h
#   73 - I i
#   74 - J j
#   75 - K k
#   76 - L l
#   77 - M m
#   78 - N n
#   79 - O o
#   80 - P p
#   81 - Q q
#   82 - R r
#   83 - S s
#   84 - T t
#   85 - U u
#   86 - V v
#   87 - W w
#   88 - X x
#   89 - Y y
#   90 - Z z

#   49 - 1 !
#   50 - 2 @
#   51 - 3 #
#   52 - 4 $
#   53 - 5 %
#   54 - 6 ^
#   55 - 7 &
#   56 - 8 *
#   57 - 9 (
#   48 - 0 )

#  112 - F1
#  113 - F2
#  114 - F3
#  115 - F4
#  116 - F5
#  117 - F6
#  118 - F7
#  119 - F8
#  120 - F9
#  121 - F10
#  122 - F11
#  123 - F12

#  192 - ~
#  189 - -
#  187 - + =
#  219 - {
#  221 - {
#  188 - < ,
#  190 - > .
#  191 - / ?
#  220 - \
#  186 - ; :
#  222 - ' "

#   96 - Numpad 0
#   97 - Numpad 1
#   98 - Numpad 2
#   99 - Numpad 3
#  100 - Numpad 4
#  101 - Numpad 5
#  102 - Numpad 6
#  103 - Numpad 7
#  104 - Numpad 8
#  105 - Numpad 9
#  109 - Numpad - (minus)
#  107 - Numpad + (plus)
#  111 - Numpad / (divide)
#  106 - Numpad * (multiply)
#  110 - Numpad Del

#   27 - Esc
#   45 - Insert
#   33 - PageUp
#   34 - PageDown
#   35 - End
#   36 - Home
#   46 - Delete
#   44 - PrintScreen
#  145 - ScrollLock
#   91 - LWin
#   92 - RWin
#   93 - Menu

#   38 - Up Arrow
#   40 - Down Arrow
#   37 - Left Arrow
#   39 - Right Arrow

UTF-8 vs ANSI Encoding

In my config file, I use symbols like and instead of /\ and []. But if you copy and paste those and symbols into the default config file, it won't let you save the file without losing those symbols. Why? When people who use Windows XP, Vista, 7, or 8.1 create a new Notepad document and then save it, the default encoding will be ANSI which doesn't support these symbols. The DS4Emulator developer is using this ANSI encoding in his config files. This type of ANSI encoding is outdated. In Windows 10, the default encoding for all Notepad documents is UTF-8, and that's great because that means it supports these special symbols. It is very easy to create a Notepad document in Windows XP, Vista, 7, 8.1, and 10 that uses UTF-8 instead of ANSI encoding. Just create a new Notepad document, click 'Save As', and then next to the Save button is a drop down menu where you can change the encoding to UTF-8. Once you save the file, you can rename it to "Config", and then you can copy and paste the contents of your original config file into it. Then change the file extension of the config file to .ini.

Hiding the Mouse Cursor

The DS4Emulator program lets you hide the mouse cursor. In version 1.75, this is accomplished by changing HideCursorAfterStart=0 to HideCursorAfterStart=1. In version 1.76, you will need to set a hotkey to hide the cursor. But this DS4Emulator feature is very flawed. Once the mouse cursor is hidden, you can't get it back until you completely exit the DS4Emulator program. This is very inconvenient to people who switch tabs often and want to be able to see their cursor to move it around and type things.

That is why I am suggesting to use my program instead. Actually, it isn't my program. It is an AutoHotKeys script that someone created ages ago, and I just changed the name of the program and changed the hotkey. The hotkey that I used is Win + C to toggle mouse cursor off and on. Click Win+C Toggles Cursor Visibility to download it. This is the original AutoHotKey script https://autohotkey.com/board/topic/22037-hide-and-show-mouse-cursor-by-macro. Some reasons why my program is good:
1.) It does not take up any taskbar icon space and it does not create any additional command prompt or other program windows on your screen. You will only see the program icon in the system tray.
2.) It's very simple to hide and show the cursor. It doesn't matter what window you are in. Just press Win + C to toggle the mouse visibility off and on. as as many times as you want. You will never have to switch to a command prompt window, close the program, or open up the program again. In fact, you can just create a shortcut of this program and put it in your Startup folder and leave the program running 24/7, 365 days a year.

The DS4Emulator developer also had a program called HideCursorTool that lets you hide the mouse cursor. This is a bad program for a lot of reasons.
1.) It opens up a command prompt window which takes up space on your taskbar. And this window also takes up space on your desktop screen.
2.) If you want to make the mouse cursor visible again, you have to do two tedious things. The first thing that you have to do is Alt + Tab to switch to the command prompt window. Then you have to press 'Enter' which shuts down the HideCursorTool program.
3.) If you want to make the mouse cursor hidden again, then what? You have to find the HideCursorTool exe in your File Explorer (or Desktop, or Start Menu) and then start it up again. That's not fun. It takes up too much time, especially if you are constantly Alt + Tab back and forth between windows and need to see and use your mouse a lot when you are in those other windows.
4.) I tested this program out and discovered that it is glitchy. It made my mouse cursor permanently disappear and I couldn't get it back because the HideCursorTool command prompt window had already been closed. I was forced to 'Sign Out' of my computer and sign back in to restore my mouse cursor.

Hide physical Xbox controller

It would be nice if you were able to hide the Xbox controller when using DS4 Emulator mode.
Because the physical X1-controller and the virtual DS4 are doing the same inputs and it confuses some other games.
Please implement asap.
All in all it's a great free alternative to tools like reWASD.
F 👍

False positive of antiviruses for DS4 Emulator

DS4 Emulator can be falsely recognized by antiviruses as something malicious. Send the archives with DS4 Emulator and a link to the repository to your antivirus company, maybe they will fix it.

Possible reasons for a false alarm may be the addition of a cursor hiding function, or the dynamic loading of the library xinput1_3.dll .

I sent the archives to several antivirus companies, but not all responded (for example, such as microsoft).

If you are having problems starting, you can try the Static version (with static library loading xinput1_3.dll however, the Guide/Xbox button will not emulate the PS button) or add the program to the antivirus exceptions.

Related: #38 #17 #39 #36

Antivirus Status Description
AVG Fixed
MaxSecure Sent
Microsoft Sent 2 times
Cylance Smart Antivirus Sent
McAfee Sent

Virus Total:
https://www.virustotal.com/gui/file/21481917c55b91c04484a2075bee6629d62b926947214b8c9d4443d8a30c1ca3
https://www.virustotal.com/gui/file/af0a85a8ced5686ef683127eabb89885ac224e39ef7db200a2eb2b566fce4f38

Компиляция

Добрый день! Вы не могли бы, пожалуйста, поделиться полными нормальными include-ами, я не могу никак его собрать, даже не смотря на то, что взял Ваш Common.h из этого обсуждения #19 и версию из master-ветки отсюда: https://github.com/ViGEm/ViGEmBus/tree/master/sdk

Would like to use a hotkey to unlock the mouse cursor, or have it unlock when I Alt + Tab to another window.

Hi. I am using the DualShock4 Emulator, which requires ViGEmBus. It works well. It makes it so that I can play games on PlayStation Now using a keyboard and mouse. There is one thing though. It locks the mouse cursor into the center of the screen. I can understand the reasoning behind this. It's probably to keep the mouse cursor from leaving the game window. To prevent it from clicking items on the taskbar or maybe desktop shortcuts. However, sometimes I want to Alt + Tab out of the PlayStation Now window and do something in another window. I can Alt + Tab just fine, but my mouse cursor will still be locked in the center of the screen and I can't move it to do anything. The only way to unlock the mouse cursor is to press the ~ key, which then closes the DS4Emulator program. I have to completely close it before I can use my mouse again. And then because I only need to do something in another window for a short period of time, when I Alt + Tab back to the PlayStation Now window it is inconvenient that I have to start the DS4Emulator again. So what I'd like to be able to do is have a hotkey for unlocking and locking the mouse. That way when I'm playing a game, I can Alt + Tab to another window, press the hotkey to unlock the mouse, do what needs to be done, press the hotkey to lock the mouse again, and then Alt + Tab back to the PlayStation Now window. I don't know which program is responsible for locking the mouse cursor, so I thought that I would ask for help from both GitHubs - DualShock4 Emualtor and ViGEmBus. Thank you for taking my situation under serious consideration.

Gyroscope tutorial?

Can't figure out how to use the app, I've tried following instructions and trying different things but to no avail.
Could someone help setting it up? Thanks.

Bind multiple keyboard buttons to one controller button

In shooter games where square is interact and reload, I would like to bind E and R both to square so my habits of pressing each one depending on what I want to do can work for when I'm using this program instead of having to press one to do both.

Support for the new PlayStation Plus app

(en) Hello!
The emulator worked great with the PlayStation Now app. After merging PlayStation Now and PlayStation Plus together, in the new application, the emulator stopped working with my Xbox 360 wireless controller. In the application menu, the controller seems to work, but there is no reaction in games.
Tell me, please, what can be done?

(ru) Привет!
Эмулятор отлично работал с приложением PlayStation Now. После слияния воедино PlayStation Now и PlayStation Plus, в новом приложении эмулятор перестал работать с моим беспроводным геймпадом Xbox 360. В меню приложения геймпад вроде как работает, но в играх нет реакции.
Подскажите, пожалуйста, что можно сделать?

Steam Deck Neptune Controller support

If this gets support for the Steam Deck controller (on windows), this will be a better alternative than current methods which just emulates XInput controls (no gyro, no touchpad) because the DS4 has gyro and touchpads.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.