From 02314548aa88e4228017a26d95f94117d87c1cc9 Mon Sep 17 00:00:00 2001 From: Lorenzooone Date: Mon, 10 Nov 2025 12:00:50 +0100 Subject: [PATCH] Fix issue with Optimize Old 3DS keys --- .../Optimize_3DS/cypress_optimize_3ds_communications.cpp | 4 ++-- source/utils.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/CaptureDeviceSpecific/Optimize_3DS/cypress_optimize_3ds_communications.cpp b/source/CaptureDeviceSpecific/Optimize_3DS/cypress_optimize_3ds_communications.cpp index 4faa702..1c90ab1 100644 --- a/source/CaptureDeviceSpecific/Optimize_3DS/cypress_optimize_3ds_communications.cpp +++ b/source/CaptureDeviceSpecific/Optimize_3DS/cypress_optimize_3ds_communications.cpp @@ -736,9 +736,9 @@ static void populate_capture_setup_key_buffer(const cyop_device_usb_device* devi setup_key_buffer[13] = key_bytes[10]; return; } - setup_key_buffer[11] |= key_bytes[10] & 0xF0; + setup_key_buffer[11] |= (key_bytes[11] & 0xF) << 4; setup_key_buffer[13] = ((key_bytes[10] & 0xF) << 4) | (key_bytes[11] >> 4); - setup_key_buffer[15] = key_bytes[11] & 0xF; + setup_key_buffer[15] = key_bytes[10] >> 4; } int StartCaptureDma(cy_device_device_handlers* handlers, const cyop_device_usb_device* device, bool is_rgb888, bool is_3d, std::string key) { diff --git a/source/utils.cpp b/source/utils.cpp index 5b34796..aa80de2 100755 --- a/source/utils.cpp +++ b/source/utils.cpp @@ -150,12 +150,12 @@ uint32_t read_be32(const uint8_t* data, size_t count, size_t multiplier) { uint64_t read_le64(const uint8_t* data, size_t count, size_t multiplier) { data += count * multiplier; - return data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24) | (((uint64_t)data[4]) << 32) | (((uint64_t)data[5]) << 40) | (((uint64_t)data[6]) << 48) | (((uint64_t)data[7]) << 56); + return ((uint64_t)data[0]) | (((uint64_t)data[1]) << 8) | (((uint64_t)data[2]) << 16) | (((uint64_t)data[3]) << 24) | (((uint64_t)data[4]) << 32) | (((uint64_t)data[5]) << 40) | (((uint64_t)data[6]) << 48) | (((uint64_t)data[7]) << 56); } uint64_t read_be64(const uint8_t* data, size_t count, size_t multiplier) { data += count * multiplier; - return data[7] | (data[6] << 8) | (data[5] << 16) | (data[4] << 24) | (((uint64_t)data[3]) << 32) | (((uint64_t)data[2]) << 40) | (((uint64_t)data[1]) << 48) | (((uint64_t)data[0]) << 56); + return ((uint64_t)data[7]) | (((uint64_t)data[6]) << 8) | (((uint64_t)data[5]) << 16) | (((uint64_t)data[4]) << 24) | (((uint64_t)data[3]) << 32) | (((uint64_t)data[2]) << 40) | (((uint64_t)data[1]) << 48) | (((uint64_t)data[0]) << 56); } void write_le16(uint8_t* data, uint16_t value, size_t count, size_t multiplier) {