diff --git a/.vscode/settings.json b/.vscode/settings.json index 6be5dc4..e9ff8fc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,6 +6,15 @@ "iosfwd": "c", "queue": "c", "sdl.h": "c", - "context.h": "c" + "context.h": "c", + "array": "c", + "deque": "c", + "list": "c", + "vector": "c", + "xhash": "c", + "xstring": "c", + "xutility": "c", + "string_view": "c", + "type_traits": "c" } } \ No newline at end of file diff --git a/SkyNX-Streamer/NxStreamingService/main.js b/SkyNX-Streamer/NxStreamingService/main.js index e89982a..ac3e011 100644 --- a/SkyNX-Streamer/NxStreamingService/main.js +++ b/SkyNX-Streamer/NxStreamingService/main.js @@ -346,9 +346,9 @@ function smoothGyroMouse(gyro) { } else { gyroHistory.shift(); gyroHistory.push(gyro); - gyro.x = (gyroHistory[0].x + gyroHistory[1].x + gyroHistory[2].x) / 3; - gyro.y = (gyroHistory[0].y + gyroHistory[1].y + gyroHistory[2].y) / 3; - gyro.z = (gyroHistory[0].z + gyroHistory[1].z + gyroHistory[2].z) / 3; + gyro.x = ((gyroHistory[0].x * 1) + (gyroHistory[1].x * 3) + (gyroHistory[2].x * 5)) / 9; + gyro.y = ((gyroHistory[0].y * 1) + (gyroHistory[1].y * 3) + (gyroHistory[2].y * 5)) / 9; + gyro.z = ((gyroHistory[0].z * 1) + (gyroHistory[1].z * 3) + (gyroHistory[2].z * 5)) / 9; if (gyro.x < 0.01 && gyro.x > 0) { gyro.x = 0; } else if (gyro.x > -0.01 && gyro.x < 0) { @@ -465,6 +465,7 @@ function handleTouchInput(hid) { } } function handleGyroAndAccel(hid) { + var gyro = { x: hid.get("gyroX"), y: hid.get("gyroY"), z: hid.get("gyroZ") } var accel = { x: hid.get("accelX"), y: hid.get("accelY"), z: hid.get("accelZ") } for (axis in gyro) { @@ -475,6 +476,7 @@ function handleGyroAndAccel(hid) { } hidStreamClient.on('data', function (data) { + console.log("dataLength: " + data.length) switchHidBuffer = new Buffer.from(data); var hid = parseInputStruct(switchHidBuffer) var controllerCount = hid.get("controllerCount"); diff --git a/SkyNX/source/input.c b/SkyNX/source/input.c index 18f3dec..4933e04 100644 --- a/SkyNX/source/input.c +++ b/SkyNX/source/input.c @@ -11,7 +11,7 @@ void gamePadSend(JoyConSocket *connection) JoyPkg pkg; /* Recieve switch input and generate the package */ hidScanInput(); - unsigned int controllersConnected = 0; + u32 controllersConnected = 0; HidControllerID player1Id; if (hidGetHandheldMode()) { @@ -31,86 +31,89 @@ void gamePadSend(JoyConSocket *connection) } pkg.frameRate = frameRate; pkg.controllerCount = controllersConnected; - pkg.heldKeys1 = (u32)hidKeysHeld(player1Id); + + pkg.heldKeys1 = !(u32)hidKeysHeld(player1Id) ? 0 : (u32)hidKeysHeld(player1Id); hidJoystickRead(&lJoy, player1Id, JOYSTICK_LEFT); hidJoystickRead(&rJoy, player1Id, JOYSTICK_RIGHT); - pkg.lJoyX1 = lJoy.dx; - pkg.lJoyY1 = lJoy.dy; - pkg.rJoyX1 = rJoy.dx; - pkg.rJoyY1 = rJoy.dy; + pkg.lJoyX1 = !lJoy.dx ? 0 : lJoy.dx; + pkg.lJoyY1 = !lJoy.dy ? 0 : lJoy.dy; + pkg.rJoyX1 = !rJoy.dx ? 0 : rJoy.dx; + pkg.rJoyY1 = !rJoy.dy ? 0 : rJoy.dy; - pkg.heldKeys2 = (u32)hidKeysHeld(CONTROLLER_PLAYER_2); + pkg.heldKeys2 = !(u32)hidKeysHeld(CONTROLLER_PLAYER_2) ? 0 : (u32)hidKeysHeld(CONTROLLER_PLAYER_2); hidJoystickRead(&lJoy, CONTROLLER_PLAYER_2, JOYSTICK_LEFT); hidJoystickRead(&rJoy, CONTROLLER_PLAYER_2, JOYSTICK_RIGHT); - pkg.lJoyX2 = lJoy.dx; - pkg.lJoyY2 = lJoy.dy; - pkg.rJoyX2 = rJoy.dx; - pkg.rJoyY2 = rJoy.dy; + pkg.lJoyX2 = !lJoy.dx ? 0 : lJoy.dx; + pkg.lJoyY2 = !lJoy.dy ? 0 : lJoy.dy; + pkg.rJoyX2 = !rJoy.dx ? 0 : rJoy.dx; + pkg.rJoyY2 = !rJoy.dy ? 0 : rJoy.dy; - pkg.heldKeys3 = (u32)hidKeysHeld(CONTROLLER_PLAYER_3); + pkg.heldKeys3 = !(u32)hidKeysHeld(CONTROLLER_PLAYER_3) ? 0 : (u32)hidKeysHeld(CONTROLLER_PLAYER_3); hidJoystickRead(&lJoy, CONTROLLER_PLAYER_3, JOYSTICK_LEFT); hidJoystickRead(&rJoy, CONTROLLER_PLAYER_3, JOYSTICK_RIGHT); - pkg.lJoyX3 = lJoy.dx; - pkg.lJoyY3 = lJoy.dy; - pkg.rJoyX3 = rJoy.dx; - pkg.rJoyY3 = rJoy.dy; + pkg.lJoyX3 = !lJoy.dx ? 0 : lJoy.dx; + pkg.lJoyY3 = !lJoy.dy ? 0 : lJoy.dy; + pkg.rJoyX3 = !rJoy.dx ? 0 : rJoy.dx; + pkg.rJoyY3 = !rJoy.dy ? 0 : rJoy.dy; - pkg.heldKeys4 = (u32)hidKeysHeld(CONTROLLER_PLAYER_4); + pkg.heldKeys4 = !(u32)hidKeysHeld(CONTROLLER_PLAYER_4) ? 0 : (u32)hidKeysHeld(CONTROLLER_PLAYER_4); hidJoystickRead(&lJoy, CONTROLLER_PLAYER_4, JOYSTICK_LEFT); hidJoystickRead(&rJoy, CONTROLLER_PLAYER_4, JOYSTICK_RIGHT); - pkg.lJoyX4 = lJoy.dx; - pkg.lJoyY4 = lJoy.dy; - pkg.rJoyX4 = rJoy.dx; - pkg.rJoyY4 = rJoy.dy; + pkg.lJoyX4 = !lJoy.dx ? 0 : lJoy.dx; + pkg.lJoyY4 = !lJoy.dy ? 0 : lJoy.dy; + pkg.rJoyX4 = !rJoy.dx ? 0 : rJoy.dx; + pkg.rJoyY4 = !rJoy.dy ? 0 : rJoy.dy; - pkg.heldKeys5 = (u32)hidKeysHeld(CONTROLLER_PLAYER_5); + pkg.heldKeys5 = !(u32)hidKeysHeld(CONTROLLER_PLAYER_5) ? 0 : (u32)hidKeysHeld(CONTROLLER_PLAYER_5); hidJoystickRead(&lJoy, CONTROLLER_PLAYER_5, JOYSTICK_LEFT); hidJoystickRead(&rJoy, CONTROLLER_PLAYER_5, JOYSTICK_RIGHT); - pkg.lJoyX5 = lJoy.dx; - pkg.lJoyY5 = lJoy.dy; - pkg.rJoyX5 = rJoy.dx; - pkg.rJoyY5 = rJoy.dy; - pkg.heldKeys6 = (u32)hidKeysHeld(CONTROLLER_PLAYER_6); + pkg.lJoyX5 = !lJoy.dx ? 0 : lJoy.dx; + pkg.lJoyY5 = !lJoy.dy ? 0 : lJoy.dy; + pkg.rJoyX5 = !rJoy.dx ? 0 : rJoy.dx; + pkg.rJoyY5 = !rJoy.dy ? 0 : rJoy.dy; + + pkg.heldKeys6 = !(u32)hidKeysHeld(CONTROLLER_PLAYER_6) ? 0 : (u32)hidKeysHeld(CONTROLLER_PLAYER_6); hidJoystickRead(&lJoy, CONTROLLER_PLAYER_6, JOYSTICK_LEFT); hidJoystickRead(&rJoy, CONTROLLER_PLAYER_6, JOYSTICK_RIGHT); - pkg.lJoyX6 = lJoy.dx; - pkg.lJoyY6 = lJoy.dy; - pkg.rJoyX6 = rJoy.dx; - pkg.rJoyY6 = rJoy.dy; + pkg.lJoyX6 = !lJoy.dx ? 0 : lJoy.dx; + pkg.lJoyY6 = !lJoy.dy ? 0 : lJoy.dy; + pkg.rJoyX6 = !rJoy.dx ? 0 : rJoy.dx; + pkg.rJoyY6 = !rJoy.dy ? 0 : rJoy.dy; - pkg.heldKeys7 = (u32)hidKeysHeld(CONTROLLER_PLAYER_7); + pkg.heldKeys7 = !(u32)hidKeysHeld(CONTROLLER_PLAYER_7) ? 0 : (u32)hidKeysHeld(CONTROLLER_PLAYER_7); hidJoystickRead(&lJoy, CONTROLLER_PLAYER_7, JOYSTICK_LEFT); hidJoystickRead(&rJoy, CONTROLLER_PLAYER_7, JOYSTICK_RIGHT); - pkg.lJoyX7 = lJoy.dx; - pkg.lJoyY7 = lJoy.dy; - pkg.rJoyX7 = rJoy.dx; - pkg.rJoyY7 = rJoy.dy; + pkg.lJoyX7 = !lJoy.dx ? 0 : lJoy.dx; + pkg.lJoyY7 = !lJoy.dy ? 0 : lJoy.dy; + pkg.rJoyX7 = !rJoy.dx ? 0 : rJoy.dx; + pkg.rJoyY7 = !rJoy.dy ? 0 : rJoy.dy; - pkg.heldKeys8 = (u32)hidKeysHeld(CONTROLLER_PLAYER_8); + pkg.heldKeys8 = !(u32)hidKeysHeld(CONTROLLER_PLAYER_8) ? 0 : (u32)hidKeysHeld(CONTROLLER_PLAYER_8); hidJoystickRead(&lJoy, CONTROLLER_PLAYER_8, JOYSTICK_LEFT); hidJoystickRead(&rJoy, CONTROLLER_PLAYER_8, JOYSTICK_RIGHT); - pkg.lJoyX8 = lJoy.dx; - pkg.lJoyY8 = lJoy.dy; - pkg.rJoyX8 = rJoy.dx; - pkg.rJoyY8 = rJoy.dy; + pkg.lJoyX8 = !lJoy.dx ? 0 : lJoy.dx; + pkg.lJoyY8 = !lJoy.dy ? 0 : lJoy.dy; + pkg.rJoyX8 = !rJoy.dx ? 0 : rJoy.dx; + pkg.rJoyY8 = !rJoy.dy ? 0 : rJoy.dy; + touchPosition touch; hidTouchRead(&touch, 0); - pkg.touchX1 = touch.px; - pkg.touchY1 = touch.py; + pkg.touchX1 = !touch.px ? 0 : touch.px; + pkg.touchY1 = !touch.py ? 0 : touch.py; hidTouchRead(&touch, 1); - pkg.touchX2 = touch.px; - pkg.touchY2 = touch.py; + pkg.touchX2 = !touch.px ? 0 : touch.px; + pkg.touchY2 = !touch.py ? 0 : touch.py; SixAxisSensorValues sixaxis; // You can read back up to 17 successive values at once hidSixAxisSensorValuesRead(&sixaxis, player1Id, 1); - pkg.accelX = sixaxis.accelerometer.x; - pkg.accelY = sixaxis.accelerometer.y; - pkg.accelZ = sixaxis.accelerometer.z; - pkg.gyroX = sixaxis.gyroscope.x; - pkg.gyroY = sixaxis.gyroscope.y; - pkg.gyroZ = sixaxis.gyroscope.z; + pkg.accelX = !sixaxis.accelerometer.x ? 0 : sixaxis.accelerometer.x; + pkg.accelY = !sixaxis.accelerometer.y ? 0 : sixaxis.accelerometer.y; + pkg.accelZ = !sixaxis.accelerometer.z ? 0 : sixaxis.accelerometer.z; + pkg.gyroX = !sixaxis.gyroscope.x ? 0 : sixaxis.gyroscope.x; + pkg.gyroY = !sixaxis.gyroscope.y ? 0 : sixaxis.gyroscope.y; + pkg.gyroZ = !sixaxis.gyroscope.z ? 0 : sixaxis.gyroscope.z; sendJoyConInput(connection, &pkg); } diff --git a/SkyNX/source/main.c b/SkyNX/source/main.c index 7e3b5db..0945531 100644 --- a/SkyNX/source/main.c +++ b/SkyNX/source/main.c @@ -52,7 +52,7 @@ static const SocketInitConfig socketInitConf = { .tcp_rx_buf_max_size = 0x400000, .udp_tx_buf_size = 0x1400, - .udp_rx_buf_size = 0x2500, + .udp_rx_buf_size = 0x3500, .sb_efficiency = 2, }; @@ -123,8 +123,7 @@ void init() /* Init all switch required systems */ switchInit(); pcvSetClockRate(PcvModule_CpuBus, 1785000000); //Overclock CPU - pcvSetClockRate(PcvModule_GPU, 921000000); //Overclock GPU - pcvSetClockRate(PcvModule_EMC, 1600000000); //OC memory to docked frequency + renderContext = createRenderer(); videoContext = createVideoContext(); videoContext->renderContext = renderContext; @@ -139,8 +138,6 @@ void unInit() freeVideoContext(videoContext); unInitGyro(); pcvSetClockRate(PcvModule_CpuBus, 1020000000); //Reset CPU clock to default - pcvSetClockRate(PcvModule_GPU, 768000000); //Reset GPU clock to docked frequency - // pcvSetClockRate(PcvModule_EMC, 1600000000); //Leave memory in docked frequency } int main(int argc, char **argv) { diff --git a/SkyNX/source/network.h b/SkyNX/source/network.h index 502c5bb..8d7bd28 100644 --- a/SkyNX/source/network.h +++ b/SkyNX/source/network.h @@ -10,58 +10,58 @@ /* Data to send to server */ typedef struct { - u32 heldKeys1; - s32 lJoyX1; - s32 lJoyY1; - s32 rJoyX1; - s32 rJoyY1; - u32 heldKeys2; - s32 lJoyX2; - s32 lJoyY2; - s32 rJoyX2; - s32 rJoyY2; - u32 heldKeys3; - s32 lJoyX3; - s32 lJoyY3; - s32 rJoyX3; - s32 rJoyY3; - u32 heldKeys4; - s32 lJoyX4; - s32 lJoyY4; - s32 rJoyX4; - s32 rJoyY4; - u32 heldKeys5; - s32 lJoyX5; - s32 lJoyY5; - s32 rJoyX5; - s32 rJoyY5; - u32 heldKeys6; - s32 lJoyX6; - s32 lJoyY6; - s32 rJoyX6; - s32 rJoyY6; - u32 heldKeys7; - s32 lJoyX7; - s32 lJoyY7; - s32 rJoyX7; - s32 rJoyY7; - u32 heldKeys8; - s32 lJoyX8; - s32 lJoyY8; - s32 rJoyX8; - s32 rJoyY8; - u32 touchX1; - u32 touchY1; - u32 touchX2; - u32 touchY2; - float accelX; - float accelY; - float accelZ; - float gyroX; - float gyroY; - float gyroZ; - unsigned int controllerCount; - unsigned int frameRate; + uint32_t heldKeys1; + int32_t lJoyX1; + int32_t lJoyY1; + int32_t rJoyX1; + int32_t rJoyY1; + uint32_t heldKeys2; + int32_t lJoyX2; + int32_t lJoyY2; + int32_t rJoyX2; + int32_t rJoyY2; + uint32_t heldKeys3; + int32_t lJoyX3; + int32_t lJoyY3; + int32_t rJoyX3; + int32_t rJoyY3; + uint32_t heldKeys4; + int32_t lJoyX4; + int32_t lJoyY4; + int32_t rJoyX4; + int32_t rJoyY4; + uint32_t heldKeys5; + int32_t lJoyX5; + int32_t lJoyY5; + int32_t rJoyX5; + int32_t rJoyY5; + uint32_t heldKeys6; + int32_t lJoyX6; + int32_t lJoyY6; + int32_t rJoyX6; + int32_t rJoyY6; + uint32_t heldKeys7; + int32_t lJoyX7; + int32_t lJoyY7; + int32_t rJoyX7; + int32_t rJoyY7; + uint32_t heldKeys8; + int32_t lJoyX8; + int32_t lJoyY8; + int32_t rJoyX8; + int32_t rJoyY8; + uint32_t touchX1; + uint32_t touchY1; + uint32_t touchX2; + uint32_t touchY2; + float_t accelX; + float_t accelY; + float_t accelZ; + float_t gyroX; + float_t gyroY; + float_t gyroZ; + uint32_t controllerCount; + uint32_t frameRate; } JoyPkg; /* Init nx network and av network */ diff --git a/SkyNX/source/renderer.c b/SkyNX/source/renderer.c index fd784dc..735d0c7 100644 --- a/SkyNX/source/renderer.c +++ b/SkyNX/source/renderer.c @@ -9,7 +9,7 @@ float timeThen = 0; float timeNow = 1; float delta = 1; -unsigned int frameRate = 0; +u32 frameRate = 0; void initDelta() { timeThen = svcGetSystemTick(); @@ -489,7 +489,7 @@ void handleFrame(RenderContext *renderContext, VideoContext *videoContext) if (++videoContext->video_frame_count % 60 == 0) { new_time = svcGetSystemTick(); - frameRate = (unsigned int)(60.0 / ((new_time - old_time) / 19200000.0)); + frameRate = (u32)(60.0 / ((new_time - old_time) / 19200000.0)); old_time = new_time; } } diff --git a/SkyNX/source/renderer.h b/SkyNX/source/renderer.h index 6a284c0..db434fd 100644 --- a/SkyNX/source/renderer.h +++ b/SkyNX/source/renderer.h @@ -5,7 +5,7 @@ #include #include "context.h" -unsigned int frameRate; +u32 frameRate; /* Allocates a render context */ RenderContext *createRenderer(void);