mirror of
https://github.com/dualshock-tools/dualshock-tools.github.io.git
synced 2026-07-18 05:34:06 +03:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7b13ccdd18 | ||
|
|
d67e5003df | ||
|
|
f57e1dc4ec | ||
|
|
cbd6237ddd |
399
core.js
399
core.js
@@ -469,46 +469,59 @@ async function ds4_nvunlock() {
|
||||
}
|
||||
|
||||
async function ds5_info() {
|
||||
const view = lf("ds5_info", await device.receiveFeatureReport(0x20));
|
||||
try {
|
||||
const view = lf("ds5_info", await device.receiveFeatureReport(0x20));
|
||||
|
||||
var cmd = view.getUint8(0, true);
|
||||
if(cmd != 0x20 || view.buffer.byteLength != 64)
|
||||
var cmd = view.getUint8(0, true);
|
||||
if(cmd != 0x20 || view.buffer.byteLength != 64)
|
||||
return false;
|
||||
|
||||
var build_date = new TextDecoder().decode(view.buffer.slice(1, 1+11));
|
||||
var build_time = new TextDecoder().decode(view.buffer.slice(12, 20));
|
||||
|
||||
var fwtype = view.getUint16(20, true);
|
||||
var swseries = view.getUint16(22, true);
|
||||
var hwinfo = view.getUint32(24, true);
|
||||
var fwversion = view.getUint32(28, true);
|
||||
|
||||
var deviceinfo = new TextDecoder().decode(view.buffer.slice(32, 32+12));
|
||||
var updversion = view.getUint16(44, true);
|
||||
var unk = view.getUint16(46, true);
|
||||
|
||||
var fwversion1 = view.getUint32(50, true);
|
||||
var fwversion2 = view.getUint32(54, true);
|
||||
var fwversion3 = view.getUint32(58, true);
|
||||
|
||||
clear_info();
|
||||
|
||||
append_info(l("Build Date:"), build_date + " " + build_time);
|
||||
append_info(l("Firmware Type:"), "0x" + dec2hex(fwtype));
|
||||
append_info(l("SW Series:"), "0x" + dec2hex(swseries));
|
||||
append_info(l("HW Info:"), "0x" + dec2hex32(hwinfo));
|
||||
append_info(l("SW Version:"), "0x" + dec2hex32(fwversion));
|
||||
append_info(l("UPD Version:"), "0x" + dec2hex(updversion));
|
||||
append_info(l("FW Version1:"), "0x" + dec2hex32(fwversion1));
|
||||
append_info(l("FW Version2:"), "0x" + dec2hex32(fwversion2));
|
||||
append_info(l("FW Version3:"), "0x" + dec2hex32(fwversion3));
|
||||
|
||||
b_info = ' <a class="link-body-emphasis" href="#" onclick="board_model_info()">' +
|
||||
'<svg class="bi" width="1.3em" height="1.3em"><use xlink:href="#info"/></svg></a>';
|
||||
append_info(l("Board Model:"), ds5_hw_to_bm(hwinfo) + b_info);
|
||||
|
||||
old_controller = build_date.search(/ 2020| 2021/);
|
||||
if(old_controller != -1) {
|
||||
la("ds5_info_error", {"r": "old"})
|
||||
disable_btn = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
await ds5_nvstatus();
|
||||
await ds5_getbdaddr();
|
||||
} catch(e) {
|
||||
la("ds5_info_error", {"r": e})
|
||||
show_popup(l("Cannot read controller information"));
|
||||
return false;
|
||||
|
||||
var build_date = new TextDecoder().decode(view.buffer.slice(1, 1+11));
|
||||
var build_time = new TextDecoder().decode(view.buffer.slice(12, 20));
|
||||
|
||||
var fwtype = view.getUint16(20, true);
|
||||
var swseries = view.getUint16(22, true);
|
||||
var hwinfo = view.getUint32(24, true);
|
||||
var fwversion = view.getUint32(28, true);
|
||||
|
||||
var deviceinfo = new TextDecoder().decode(view.buffer.slice(32, 32+12));
|
||||
var updversion = view.getUint16(44, true);
|
||||
var unk = view.getUint16(46, true);
|
||||
|
||||
var fwversion1 = view.getUint32(50, true);
|
||||
var fwversion2 = view.getUint32(54, true);
|
||||
var fwversion3 = view.getUint32(58, true);
|
||||
|
||||
clear_info();
|
||||
|
||||
append_info(l("Build Date:"), build_date + " " + build_time);
|
||||
append_info(l("Firmware Type:"), "0x" + dec2hex(fwtype));
|
||||
append_info(l("SW Series:"), "0x" + dec2hex(swseries));
|
||||
append_info(l("HW Info:"), "0x" + dec2hex32(hwinfo));
|
||||
append_info(l("SW Version:"), "0x" + dec2hex32(fwversion));
|
||||
append_info(l("UPD Version:"), "0x" + dec2hex(updversion));
|
||||
append_info(l("FW Version1:"), "0x" + dec2hex32(fwversion1));
|
||||
append_info(l("FW Version2:"), "0x" + dec2hex32(fwversion2));
|
||||
append_info(l("FW Version3:"), "0x" + dec2hex32(fwversion3));
|
||||
|
||||
b_info = ' <a class="link-body-emphasis" href="#" onclick="board_model_info()">' +
|
||||
'<svg class="bi" width="1.3em" height="1.3em"><use xlink:href="#info"/></svg></a>';
|
||||
append_info(l("Board Model:"), ds5_hw_to_bm(hwinfo) + b_info);
|
||||
|
||||
await ds5_nvstatus();
|
||||
await ds5_getbdaddr();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -767,7 +780,7 @@ async function disconnect() {
|
||||
device.close();
|
||||
device = null;
|
||||
disable_btn = false;
|
||||
|
||||
reset_circularity();
|
||||
$("#offlinebar").show();
|
||||
$("#onlinebar").hide();
|
||||
$("#mainmenu").hide();
|
||||
@@ -832,6 +845,8 @@ function gboot() {
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
lang_init();
|
||||
welcome_modal();
|
||||
$("#checkCircularity").on('change', on_circ_check_change);
|
||||
on_circ_check_change();
|
||||
});
|
||||
|
||||
if (!("hid" in navigator)) {
|
||||
@@ -860,6 +875,286 @@ function alloc_req(id, data=[]) {
|
||||
return out;
|
||||
}
|
||||
|
||||
var last_lx = 0, last_ly = 0, last_rx = 0, last_ry = 0;
|
||||
var ll_updated = false;
|
||||
|
||||
var ll_data=new Array(48);
|
||||
var rr_data=new Array(48);
|
||||
var enable_circ_test = false;
|
||||
|
||||
function reset_circularity() {
|
||||
for(i=0;i<ll_data.length;i++) ll_data[i] = 0;
|
||||
for(i=0;i<rr_data.length;i++) rr_data[i] = 0;
|
||||
enable_circ_test = false;
|
||||
ll_updated = false;
|
||||
$("#checkCircularity").prop('checked', false);
|
||||
refresh_stick_pos();
|
||||
}
|
||||
|
||||
function refresh_stick_pos() {
|
||||
var c = document.getElementById("stickCanvas");
|
||||
var ctx = c.getContext("2d");
|
||||
var sz = 60;
|
||||
var hb = 20 + sz;
|
||||
var yb = 15 + sz;
|
||||
var w = c.width;
|
||||
ctx.clearRect(0, 0, c.width, c.height);
|
||||
ctx.lineWidth = 1;
|
||||
ctx.fillStyle = '#ffffff';
|
||||
ctx.strokeStyle = '#000000';
|
||||
|
||||
// Left circle
|
||||
ctx.beginPath();
|
||||
ctx.arc(hb, yb, sz, 0, 2 * Math.PI);
|
||||
ctx.closePath();
|
||||
ctx.fill();
|
||||
ctx.stroke();
|
||||
|
||||
// Right circle
|
||||
ctx.beginPath();
|
||||
ctx.arc(w - hb, yb, sz, 0, 2 * Math.PI);
|
||||
ctx.closePath();
|
||||
ctx.fill();
|
||||
ctx.stroke();
|
||||
|
||||
function cc_to_color(cc) {
|
||||
var dd = Math.sqrt(Math.pow((1.0 - cc), 2));
|
||||
if(cc <= 1.0)
|
||||
hh = 220 - 220 * Math.min(1.0, Math.max(0, (dd - 0.05)) / 0.1);
|
||||
else
|
||||
hh = (245 + (360-245) * Math.min(1.0, Math.max(0, (dd - 0.05)) / 0.15)) % 360;
|
||||
return hh;
|
||||
}
|
||||
|
||||
if(enable_circ_test) {
|
||||
var MAX_N = ll_data.length;
|
||||
|
||||
for(i=0;i<MAX_N;i++) {
|
||||
var kd = ll_data[i];
|
||||
var kd1 = ll_data[(i+1) % ll_data.length];
|
||||
if (kd === undefined || kd1 === undefined) continue;
|
||||
var ka = i * Math.PI * 2 / MAX_N;
|
||||
var ka1 = ((i+1)%MAX_N) * 2 * Math.PI / MAX_N;
|
||||
|
||||
var kx = Math.cos(ka) * kd;
|
||||
var ky = Math.sin(ka) * kd;
|
||||
var kx1 = Math.cos(ka1) * kd1;
|
||||
var ky1 = Math.sin(ka1) * kd1;
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(hb, yb);
|
||||
ctx.lineTo(hb+kx*sz, yb+ky*sz);
|
||||
ctx.lineTo(hb+kx1*sz, yb+ky1*sz);
|
||||
ctx.lineTo(hb, yb);
|
||||
ctx.closePath();
|
||||
|
||||
var cc = (kd + kd1) / 2;
|
||||
var hh = cc_to_color(cc);
|
||||
ctx.fillStyle = 'hsla(' + parseInt(hh) + ', 100%, 50%, 0.5)';
|
||||
ctx.fill();
|
||||
}
|
||||
|
||||
for(i=0;i<MAX_N;i++) {
|
||||
var kd = rr_data[i];
|
||||
var kd1 = rr_data[(i+1) % rr_data.length];
|
||||
if (kd === undefined || kd1 === undefined) continue;
|
||||
var ka = i * Math.PI * 2 / MAX_N;
|
||||
var ka1 = ((i+1)%MAX_N) * 2 * Math.PI / MAX_N;
|
||||
|
||||
var kx = Math.cos(ka) * kd;
|
||||
var ky = Math.sin(ka) * kd;
|
||||
var kx1 = Math.cos(ka1) * kd1;
|
||||
var ky1 = Math.sin(ka1) * kd1;
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(w-hb, yb);
|
||||
ctx.lineTo(w-hb+kx*sz, yb+ky*sz);
|
||||
ctx.lineTo(w-hb+kx1*sz, yb+ky1*sz);
|
||||
ctx.lineTo(w-hb, yb);
|
||||
ctx.closePath();
|
||||
|
||||
var cc = (kd + kd1) / 2;
|
||||
var hh = cc_to_color(cc);
|
||||
ctx.fillStyle = 'hsla(' + parseInt(hh) + ', 100%, 50%, 0.5)';
|
||||
ctx.fill();
|
||||
}
|
||||
}
|
||||
|
||||
ctx.strokeStyle = '#aaaaaa';
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(hb-sz, yb);
|
||||
ctx.lineTo(hb+sz, yb);
|
||||
ctx.closePath();
|
||||
ctx.stroke();
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(w-hb-sz, yb);
|
||||
ctx.lineTo(w-hb+sz, yb);
|
||||
ctx.closePath();
|
||||
ctx.stroke();
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(hb, yb-sz);
|
||||
ctx.lineTo(hb, yb+sz);
|
||||
ctx.closePath();
|
||||
ctx.stroke();
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(w-hb, yb-sz);
|
||||
ctx.lineTo(w-hb, yb+sz);
|
||||
ctx.closePath();
|
||||
ctx.stroke();
|
||||
|
||||
var plx = last_lx;
|
||||
var ply = last_ly;
|
||||
var prx = last_rx;
|
||||
var pry = last_ry;
|
||||
|
||||
if(enable_circ_test) {
|
||||
var pld = Math.sqrt(plx*plx + ply*ply);
|
||||
var pla = (parseInt(Math.round(Math.atan2(ply, plx) * MAX_N / 2.0 / Math.PI)) + MAX_N) % MAX_N;
|
||||
var old = ll_data[pla];
|
||||
if(old === undefined) old = 0;
|
||||
ll_data[pla] = Math.max(old, pld);
|
||||
|
||||
var prd = Math.sqrt(prx*prx + pry*pry);
|
||||
var pra = (parseInt(Math.round(Math.atan2(pry, prx) * MAX_N / 2.0 / Math.PI)) + MAX_N) % MAX_N;
|
||||
var old = rr_data[pra];
|
||||
if(old === undefined) old = 0;
|
||||
rr_data[pra] = Math.max(old, prd);
|
||||
}
|
||||
|
||||
ctx.fillStyle = '#000000';
|
||||
ctx.strokeStyle = '#000000';
|
||||
ctx.beginPath();
|
||||
ctx.arc(hb+plx*sz,yb+ply*sz,4, 0, 2*Math.PI);
|
||||
ctx.fill();
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(hb, yb);
|
||||
ctx.lineTo(hb+plx*sz, yb+ply*sz);
|
||||
ctx.stroke();
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.arc(w-hb+prx*sz, yb+pry*sz,4, 0, 2*Math.PI);
|
||||
ctx.fill();
|
||||
|
||||
ctx.beginPath();
|
||||
ctx.moveTo(w-hb, yb);
|
||||
ctx.lineTo(w-hb+prx*sz, yb+pry*sz);
|
||||
ctx.stroke();
|
||||
|
||||
var lbl = "", lbx = "";
|
||||
$("#lx-lbl").text(float_to_str(plx));
|
||||
$("#ly-lbl").text(float_to_str(ply));
|
||||
$("#rx-lbl").text(float_to_str(prx));
|
||||
$("#ry-lbl").text(float_to_str(pry));
|
||||
|
||||
if(enable_circ_test) {
|
||||
var ofl = 0, ofr = 0, lcounter = 0, rcounter = 0;
|
||||
ofl = 0; ofr = 0;
|
||||
for (i=0;i<ll_data.length;i++)
|
||||
if(ll_data[i] > 0.2) {
|
||||
lcounter += 1;
|
||||
ofl += Math.pow(ll_data[i] - 1, 2);
|
||||
}
|
||||
for (i=0;i<rr_data.length;i++) {
|
||||
if(ll_data[i] > 0.2) {
|
||||
rcounter += 1;
|
||||
ofr += Math.pow(rr_data[i] - 1, 2);
|
||||
}
|
||||
}
|
||||
if(lcounter > 0)
|
||||
ofl = Math.sqrt(ofl / lcounter) * 100;
|
||||
if(rcounter > 0)
|
||||
ofr = Math.sqrt(ofr / rcounter) * 100;
|
||||
|
||||
el = ofl.toFixed(2) + "%";
|
||||
er = ofr.toFixed(2) + "%";
|
||||
$("#el-lbl").text(el);
|
||||
$("#er-lbl").text(er);
|
||||
}
|
||||
}
|
||||
|
||||
function circ_checked() { return $("#checkCircularity").is(':checked') }
|
||||
|
||||
function on_circ_check_change() {
|
||||
enable_circ_test = circ_checked();
|
||||
for(i=0;i<ll_data.length;i++) ll_data[i] = 0;
|
||||
for(i=0;i<rr_data.length;i++) rr_data[i] = 0;
|
||||
|
||||
if(enable_circ_test) {
|
||||
$("#circ-data").show();
|
||||
} else {
|
||||
$("#circ-data").hide();
|
||||
}
|
||||
refresh_stick_pos();
|
||||
}
|
||||
|
||||
function float_to_str(f) {
|
||||
if(f < 0.004 && f >= -0.004) return "+0.00";
|
||||
return (f<0?"":"+") + f.toFixed(2);
|
||||
}
|
||||
|
||||
var on_delay = false;
|
||||
|
||||
function timeout_ok() {
|
||||
on_delay = false;
|
||||
if(ll_updated)
|
||||
refresh_stick_pos();
|
||||
}
|
||||
|
||||
function refresh_sticks() {
|
||||
if(on_delay)
|
||||
return;
|
||||
|
||||
refresh_stick_pos();
|
||||
on_delay = true;
|
||||
setTimeout(timeout_ok, 20);
|
||||
}
|
||||
|
||||
function process_ds4_input(data) {
|
||||
var lx = data.data.getUint8(0);
|
||||
var ly = data.data.getUint8(1);
|
||||
var rx = data.data.getUint8(2);
|
||||
var ry = data.data.getUint8(3);
|
||||
|
||||
var new_lx = Math.round((lx - 127.5) / 128 * 100) / 100;
|
||||
var new_ly = Math.round((ly - 127.5) / 128 * 100) / 100;
|
||||
var new_rx = Math.round((rx - 127.5) / 128 * 100) / 100;
|
||||
var new_ry = Math.round((ry - 127.5) / 128 * 100) / 100;
|
||||
|
||||
if(last_lx != new_lx || last_ly != new_ly || last_rx != new_rx || last_ry != new_ry) {
|
||||
last_lx = new_lx;
|
||||
last_ly = new_ly;
|
||||
last_rx = new_rx;
|
||||
last_ry = new_ry;
|
||||
ll_updated = true;
|
||||
refresh_sticks();
|
||||
}
|
||||
}
|
||||
|
||||
function process_ds_input(data) {
|
||||
var lx = data.data.getUint8(0);
|
||||
var ly = data.data.getUint8(1);
|
||||
var rx = data.data.getUint8(2);
|
||||
var ry = data.data.getUint8(3);
|
||||
|
||||
var new_lx = Math.round((lx - 127.5) / 128 * 100) / 100;
|
||||
var new_ly = Math.round((ly - 127.5) / 128 * 100) / 100;
|
||||
var new_rx = Math.round((rx - 127.5) / 128 * 100) / 100;
|
||||
var new_ry = Math.round((ry - 127.5) / 128 * 100) / 100;
|
||||
|
||||
if(last_lx != new_lx || last_ly != new_ly || last_rx != new_rx || last_ry != new_ry) {
|
||||
last_lx = new_lx;
|
||||
last_ly = new_ly;
|
||||
last_rx = new_rx;
|
||||
last_ry = new_ry;
|
||||
ll_updated = true;
|
||||
refresh_sticks();
|
||||
}
|
||||
}
|
||||
|
||||
async function continue_connection(report) {
|
||||
try {
|
||||
device.oninputreport = null;
|
||||
@@ -871,8 +1166,8 @@ async function continue_connection(report) {
|
||||
if(reportLen != 63) {
|
||||
$("#btnconnect").prop("disabled", false);
|
||||
$("#connectspinner").hide();
|
||||
show_popup(l("Please connect the device using a USB cable."))
|
||||
disconnect();
|
||||
show_popup(l("Please connect the device using a USB cable."))
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -881,18 +1176,21 @@ async function continue_connection(report) {
|
||||
connected = true;
|
||||
mode = 1;
|
||||
devname = l("Sony DualShock 4 V1");
|
||||
device.oninputreport = process_ds4_input;
|
||||
}
|
||||
} else if(device.productId == 0x09cc) {
|
||||
if(await ds4_info()) {
|
||||
connected = true;
|
||||
mode = 1;
|
||||
devname = l("Sony DualShock 4 V2");
|
||||
device.oninputreport = process_ds4_input;
|
||||
}
|
||||
} else if(device.productId == 0x0ce6) {
|
||||
if(await ds5_info()) {
|
||||
connected = true;
|
||||
mode = 2;
|
||||
devname = l("Sony DualSense");
|
||||
device.oninputreport = process_ds_input;
|
||||
}
|
||||
} else if(device.productId == 0x0df2) {
|
||||
if(await ds5_info()) {
|
||||
@@ -917,10 +1215,18 @@ async function continue_connection(report) {
|
||||
$("#resetBtn").show();
|
||||
$("#d-nvstatus").text = l("Unknown");
|
||||
$("#d-bdaddr").text = l("Unknown");
|
||||
} else {
|
||||
show_popup(l("Connected invalid device: ") + l("Error 1"));
|
||||
$("#btnconnect").prop("disabled", false);
|
||||
$("#connectspinner").hide();
|
||||
disconnect();
|
||||
return;
|
||||
}
|
||||
|
||||
if(disable_btn) {
|
||||
if(device.productId == 0x0df2) {
|
||||
if(device.productId == 0x0ce6) {
|
||||
show_popup(l("This DualSense controller has outdated firmware.") + "<br>" + l("Please update the firmware and try again."), true);
|
||||
} else if(device.productId == 0x0df2) {
|
||||
show_popup(l("Calibration of the DualSense Edge is not currently supported."));
|
||||
} else {
|
||||
show_popup(l("The device appears to be a DS4 clone. All functionalities are disabled."));
|
||||
@@ -941,6 +1247,7 @@ async function continue_connection(report) {
|
||||
|
||||
async function connect() {
|
||||
gj = crypto.randomUUID();
|
||||
reset_circularity();
|
||||
la("begin");
|
||||
try {
|
||||
$("#btnconnect").prop("disabled", true);
|
||||
@@ -1038,9 +1345,10 @@ async function multi_calib_sticks_begin(pc) {
|
||||
|
||||
async function multi_calib_sticks_end(pc) {
|
||||
if(mode == 1)
|
||||
return ds4_calibrate_sticks_end(pc);
|
||||
await ds4_calibrate_sticks_end(pc);
|
||||
else
|
||||
return ds5_calibrate_sticks_end(pc);
|
||||
await ds5_calibrate_sticks_end(pc);
|
||||
on_circ_check_change();
|
||||
}
|
||||
|
||||
async function multi_calib_sticks_sample() {
|
||||
@@ -1071,9 +1379,10 @@ async function multi_calibrate_range(perm_ch) {
|
||||
|
||||
async function multi_calibrate_range_on_close() {
|
||||
if(mode == 1)
|
||||
ds4_calibrate_range_end(last_perm_ch);
|
||||
await ds4_calibrate_range_end(last_perm_ch);
|
||||
else
|
||||
ds5_calibrate_range_end(last_perm_ch);
|
||||
await ds5_calibrate_range_end(last_perm_ch);
|
||||
on_circ_check_change();
|
||||
}
|
||||
|
||||
|
||||
|
||||
57
index.html
57
index.html
@@ -112,16 +112,67 @@
|
||||
<br>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<div class="col-md-6 col-sm-12" style="min-width: 330px;">
|
||||
<div class="vstack gap-2 p-2">
|
||||
<button id="btnmcs2" type="button" class="btn btn-primary ds-btn ds-i18n" onclick="calib_open()">Calibrate stick center</button>
|
||||
<div class="hstack gap-2">
|
||||
<button type="button" class="btn btn-primary ds-btn ds-i18n" onclick="multi_calibrate_range(true)">Calibrate stick range (permanent)</button>
|
||||
<button type="button" class="btn btn-primary ds-btn ds-i18n" onclick="multi_calibrate_range(false)">Calibrate stick range (temporary)</button>
|
||||
<button type="button" class="ms-auto btn btn-primary ds-btn ds-i18n" onclick="multi_calibrate_range(false)">Calibrate stick range (temporary)</button>
|
||||
</div>
|
||||
<button type="button" class="btn btn-danger ds-btn ds-i18n" onclick="multi_reset()" id="resetBtn">Reset controller</button>
|
||||
|
||||
<div class="card text-bg-light" >
|
||||
<div class="card-header ds-i18n">Joystick Info</div>
|
||||
<div class="vstack px-2">
|
||||
<center>
|
||||
<canvas id="stickCanvas" width="300" height="150"></canvas>
|
||||
</center>
|
||||
</div>
|
||||
<div class="px-2">
|
||||
<div class="hstack">
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span>LX:</span>
|
||||
<pre id="lx-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span>LY:</span>
|
||||
<pre id="ly-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span>RX:</span>
|
||||
<pre id="rx-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span>RY:</span>
|
||||
<pre id="ry-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-2">
|
||||
<center>
|
||||
<input class="form-check-input" type="checkbox" value="" id="checkCircularity">
|
||||
<label class="form-check-label ds-i18n" for="checkCircularity">Check circularity</label>
|
||||
<div class="hstack" id="circ-data">
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span class="ds-i18n">Err R:</span>
|
||||
<pre id="el-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span class="ds-i18n">Err L:</span>
|
||||
<pre id="er-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
</div>
|
||||
</center>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
@@ -457,7 +508,7 @@
|
||||
<div class="container">
|
||||
<footer>
|
||||
<div class="d-flex flex-column flex-sm-row justify-content-between py-4 my-4 border-top" id="footbody">
|
||||
<p><span class="ds-i18n">Version</span> 1.0 (2024-05-30) - <a href="#" class="ds-i18n" onclick="show_donate_modal();">Support this project</a> <span id="authorMsg"></span></p>
|
||||
<p><span class="ds-i18n">Version</span> 1.2 (2024-06-18) - <a href="#" class="ds-i18n" onclick="show_donate_modal();">Support this project</a> <span id="authorMsg"></span></p>
|
||||
|
||||
<ul class="list-unstyled d-flex">
|
||||
<li class="ms-3"><a class="link-body-emphasis" href="mailto:ds4@the.al" target="_blank"><svg class="bi" width="24" height="24"><use xlink:href="#mail"/></svg></a></li>
|
||||
|
||||
@@ -155,12 +155,17 @@
|
||||
"Translate this website in your language": "Преведете този уебсайт на ваш език",
|
||||
", to help more people like you!": ", за да помогнете на повече хора като вас!",
|
||||
"This website uses analytics to improve the service.": "Този уебсайт използва анализи за подобряване на услугата.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"Board Model:": "Модел на платката:",
|
||||
"This feature is experimental.": "Тази функция е експериментална.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Моля, уведомете ме, ако моделът на платката на вашия контролер не е разпознат правилно.",
|
||||
"Board model detection thanks to": "Разпознаване на модела на платката благодарение на",
|
||||
"Please connect the device using a USB cable.": "Моля, свържете устройството с USB кабел.",
|
||||
"This DualSense controller has outdated firmware.": "Този контролер DualSense има остарял фърмуер.",
|
||||
"Please update the firmware and try again.": "Моля, актуализирайте фърмуера и опитайте отново.",
|
||||
"Joystick Info": "Информация за джойстика",
|
||||
"Err R:": "Грешка Д:",
|
||||
"Err L:": "Грешка Л:",
|
||||
"Check circularity": "Проверка на кръговостта",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -155,12 +155,17 @@
|
||||
"Translate this website in your language": "Übersetzen Sie diese Website in Ihre Sprache",
|
||||
", to help more people like you!": ", um mehr Menschen wie Sie zu helfen!",
|
||||
"This website uses analytics to improve the service.": "Diese Website verwendet Analytics, um den Service zu verbessern.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"Board Model:": "Platinentyp:",
|
||||
"This feature is experimental.": "Diese Funktion ist experimentell.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Bitte lassen Sie mich wissen, wenn das Platinentyp Ihres Controllers nicht korrekt erkannt wird.",
|
||||
"Board model detection thanks to": "Platinentyp-Erkennung dank",
|
||||
"Please connect the device using a USB cable.": "Bitte verbinden Sie das Gerät mit einem USB-Kabel.",
|
||||
"This DualSense controller has outdated firmware.": "Dieser DualSense-Controller hat eine veraltete Firmware.",
|
||||
"Please update the firmware and try again.": "Bitte aktualisieren Sie die Firmware und versuchen Sie es erneut.",
|
||||
"Joystick Info": "Joystick-Informationen",
|
||||
"Err R:": "Fehler R:",
|
||||
"Err L:": "Fehler L:",
|
||||
"Check circularity": "Kreisförmigkeit prüfen",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -155,12 +155,17 @@
|
||||
"Translate this website in your language": "Traduz esta web en tu idioma",
|
||||
", to help more people like you!": ", para que ayude mas personas como tu!",
|
||||
"This website uses analytics to improve the service.": "Este sitio web utiliza análisis para mejorar el servicio.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"Board Model:": "Modelo de la placa:",
|
||||
"This feature is experimental.": "Esta función es experimental.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Por favor, avísame si el modelo de la placa de tu controlador no se detecta correctamente.",
|
||||
"Board model detection thanks to": "Detección del modelo de la placa gracias a",
|
||||
"Please connect the device using a USB cable.": "Por favor, conecta el dispositivo usando un cable USB.",
|
||||
"This DualSense controller has outdated firmware.": "Este controlador DualSense tiene un firmware desactualizado.",
|
||||
"Please update the firmware and try again.": "Por favor, actualiza el firmware y vuelve a intentarlo.",
|
||||
"Joystick Info": "Información del joystick",
|
||||
"Err R:": "Error D:",
|
||||
"Err L:": "Error I:",
|
||||
"Check circularity": "Comprobar circularidad",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -114,53 +114,55 @@
|
||||
"Before doing the permanent calibration, try the temporary one to ensure that everything is working well.": "Avant de procéder à un calibrage permanent, essayez de manière temporaire afin de vous assurer que tout fonctionne bien.",
|
||||
"Understood": "Compris",
|
||||
"Version": "Version",
|
||||
|
||||
"Frequently Asked Questions": "",
|
||||
"Close": "",
|
||||
"Welcome to the F.A.Q. section! Below, you'll find answers to some of the most commonly asked questions about this website. If you have any other inquiries or need further assistance, feel free to reach out to me directly. Your feedback and questions are always welcome!": "",
|
||||
"How does it work?": "",
|
||||
"Behind the scenes, this website is the culmination of one year of dedicated effort in reverse-engineering DualShock controllers for fun/hobby from a random guy on the internet.": "",
|
||||
"Through": "",
|
||||
"this research": "",
|
||||
", it was discovered that there exist some undocumented commands on DualShock controllers that can be sent via USB and are used during factory assembly process. If these commands are sent, the controller starts the recalibration of analog sticks.": "",
|
||||
"While the primary focus of this research wasn't initially centered on recalibration, it became apparent that a service offering this capability could greatly benefit numerous individuals. And thus, here we are.": "",
|
||||
"Does the calibration remain effective during gameplay on PS4/PS5?": "",
|
||||
"Yes, if you tick the checkbox \"Write changes permanently in the controller\". In that case, the calibration is flashed directly in the controller firmware. This ensures that it remains in place regardless of the console it's connected to.": "",
|
||||
"Is this an officially endorsed service?": "",
|
||||
"No, this service is simply a creation by a DualShock enthusiast.": "",
|
||||
"Does this website detects if a controller is a clone?": "",
|
||||
"Yes, only DualShock4 at the moment. This happened because I accidentally purchased some clones, spent time identifying the differences and added this functionality to prevent future deception.": "",
|
||||
"Unfortunately, the clones cannot be calibrated anyway, because they only clone the behavior of a DualShock4 during a normal gameplay, not all the undocumented functionalities.": "",
|
||||
"If you want to extend this detection functionality to DualSense, please ship me a fake DualSense and you'll see it in few weeks.": "",
|
||||
"What development is in plan?": "",
|
||||
|
||||
"I maintain two separate to-do lists for this project, although the priority has yet to be established.": "",
|
||||
"The first list is about enhancing support for DualShock4 and DualSense controllers:": "",
|
||||
"Implement calibration of L2/R2 triggers.": "",
|
||||
"Improve detection of clones, particularly beneficial for those seeking to purchase used controllers with assurance of authenticity.": "",
|
||||
"Enhance user interface (e.g. provide additional controller information)": "",
|
||||
"Add support for recalibrating IMUs.": "",
|
||||
"Additionally, explore the possibility of reviving non-functioning DualShock controllers (further discussion available on Discord for interested parties).": "",
|
||||
"The second list contains new controllers I aim to support:": "",
|
||||
"DualSense Edge": "",
|
||||
"DualShock 3": "",
|
||||
"XBox Controllers": "",
|
||||
"Each of these tasks presents both immense interest and significant time investment. To provide context, supporting a new controller typically demands 6-12 months of full-time research, alongside a stroke of good fortune.": "",
|
||||
"I love this service, it helped me! How can I contribute?": "",
|
||||
"I'm glad to hear that you found this helpful! If you're interested in contributing, here are a few ways you can help me:": "",
|
||||
"Consider making a": "",
|
||||
"donation": "",
|
||||
"to support my late-night caffeine-fueled reverse-engineering efforts.": "",
|
||||
"Ship me a controller you would love to add (send me an email for organization).": "",
|
||||
"Translate this website in your language": "",
|
||||
", to help more people like you!": "",
|
||||
"Frequently Asked Questions": "Foire Aux Questions",
|
||||
"Close": "Fermer",
|
||||
"Welcome to the F.A.Q. section! Below, you'll find answers to some of the most commonly asked questions about this website. If you have any other inquiries or need further assistance, feel free to reach out to me directly. Your feedback and questions are always welcome!": "Bienvenue dans la section FAQ ! Vous trouverez ci-dessous les réponses aux questions les plus fréquemment posées sur ce site. Si vous avez d'autres questions ou besoin d'aide, n'hésitez pas à me contacter directement. Vos commentaires et questions sont toujours les bienvenus !",
|
||||
"How does it work?": "Comment ça fonctionne ?",
|
||||
"Behind the scenes, this website is the culmination of one year of dedicated effort in reverse-engineering DualShock controllers for fun/hobby from a random guy on the internet.": "En coulisses, ce site est le fruit d'une année d'efforts dédiés au rétro-engineering des manettes DualShock par un passionné anonyme sur Internet.",
|
||||
"Through": "Grâce à",
|
||||
"this research": "cette recherche",
|
||||
", it was discovered that there exist some undocumented commands on DualShock controllers that can be sent via USB and are used during factory assembly process. If these commands are sent, the controller starts the recalibration of analog sticks.": ", il a été découvert qu'il existe des commandes non documentées sur les manettes DualShock qui peuvent être envoyées via USB et utilisées lors du processus d'assemblage en usine. Si ces commandes sont envoyées, la manette commence la recalibration des sticks analogiques.",
|
||||
"While the primary focus of this research wasn't initially centered on recalibration, it became apparent that a service offering this capability could greatly benefit numerous individuals. And thus, here we are.": "Bien que le but principal de cette recherche n'était pas initialement axé sur la recalibration, il est devenu évident qu'un service offrant cette capacité pourrait grandement bénéficier à de nombreuses personnes. Et nous y voilà.",
|
||||
"Does the calibration remain effective during gameplay on PS4/PS5?": "La calibration reste-t-elle efficace pendant le jeu sur PS4/PS5 ?",
|
||||
"Yes, if you tick the checkbox \"Write changes permanently in the controller\". In that case, the calibration is flashed directly in the controller firmware. This ensures that it remains in place regardless of the console it's connected to.": "Oui, si vous cochez la case \"Écrire les modifications de manière permanente dans la manette\". Dans ce cas, la calibration est directement enregistrée dans le firmware de la manette. Cela garantit qu'elle reste en place, quelle que soit la console à laquelle elle est connectée.",
|
||||
"Is this an officially endorsed service?": "S'agit-il d'un service officiellement approuvé ?",
|
||||
"No, this service is simply a creation by a DualShock enthusiast.": "Non, ce service est simplement une création d'un passionné de DualShock.",
|
||||
"Does this website detects if a controller is a clone?": "Ce site détecte-t-il si une manette est un clone ?",
|
||||
"Yes, only DualShock4 at the moment. This happened because I accidentally purchased some clones, spent time identifying the differences and added this functionality to prevent future deception.": "Oui, uniquement la DualShock4 pour le moment. Cela est arrivé parce que j'ai accidentellement acheté des clones, j'ai passé du temps à identifier les différences et j'ai ajouté cette fonctionnalité pour éviter les futures déceptions.",
|
||||
"Unfortunately, the clones cannot be calibrated anyway, because they only clone the behavior of a DualShock4 during a normal gameplay, not all the undocumented functionalities.": "Malheureusement, les clones ne peuvent pas être calibrés de toute façon, car ils ne copient que le comportement d'une DualShock4 pendant un jeu normal, pas toutes les fonctionnalités non documentées.",
|
||||
"If you want to extend this detection functionality to DualSense, please ship me a fake DualSense and you'll see it in few weeks.": "Si vous souhaitez étendre cette fonctionnalité de détection à la DualSense, veuillez m'envoyer une fausse DualSense et vous la verrez dans quelques semaines.",
|
||||
"What development is in plan?": "Quels développements sont prévus?",
|
||||
"I maintain two separate to-do lists for this project, although the priority has yet to be established.": "Je maintiens deux listes de tâches séparées pour ce projet, bien que la priorité n'ait pas encore été établie.",
|
||||
"The first list is about enhancing support for DualShock4 and DualSense controllers:": "La première liste concerne l'amélioration du support pour les manettes DualShock4 et DualSense :",
|
||||
"Implement calibration of L2/R2 triggers.": "Mettre en œuvre la calibration des gâchettes L2/R2.",
|
||||
"Improve detection of clones, particularly beneficial for those seeking to purchase used controllers with assurance of authenticity.": "Améliorer la détection des clones, particulièrement bénéfique pour ceux qui cherchent à acheter des manettes d'occasion avec une assurance d'authenticité.",
|
||||
"Enhance user interface (e.g. provide additional controller information)": "Améliorer l'interface utilisateur (par exemple, fournir des informations supplémentaires sur la manette)",
|
||||
"Add support for recalibrating IMUs.": "Ajouter le support pour recalibrer les IMU.",
|
||||
"Additionally, explore the possibility of reviving non-functioning DualShock controllers (further discussion available on Discord for interested parties).": "De plus, explorer la possibilité de réanimer les manettes DualShock non fonctionnelles (discussion supplémentaire disponible sur Discord pour les parties intéressées).",
|
||||
"The second list contains new controllers I aim to support:": "La deuxième liste contient les nouvelles manettes que je vise à supporter:",
|
||||
"DualSense Edge": "DualSense Edge",
|
||||
"DualShock 3": "DualShock 3",
|
||||
"XBox Controllers": "Manettes XBox",
|
||||
"Each of these tasks presents both immense interest and significant time investment. To provide context, supporting a new controller typically demands 6-12 months of full-time research, alongside a stroke of good fortune.": "Chacune de ces tâches présente un immense intérêt et un investissement de temps significatif. Pour donner un contexte, supporter une nouvelle manette nécessite généralement 6 à 12 mois de recherche à plein temps, avec un peu de chance.",
|
||||
"I love this service, it helped me! How can I contribute?": "J'adore ce service, il m'a aidé! Comment puis-je contribuer?",
|
||||
"I'm glad to hear that you found this helpful! If you're interested in contributing, here are a few ways you can help me:": "Je suis ravi d'apprendre que vous avez trouvé cela utile ! Si vous êtes intéressé à contribuer, voici quelques façons dont vous pouvez m'aider:",
|
||||
"Consider making a": "Envisagez de faire un",
|
||||
"donation": "don",
|
||||
"to support my late-night caffeine-fueled reverse-engineering efforts.": "pour soutenir mes efforts de rétro-engineering alimentés par la caféine tard dans la nuit.",
|
||||
"Ship me a controller you would love to add (send me an email for organization).": "Envoyez-moi une manette que vous aimeriez ajouter (envoyez-moi un e-mail pour l'organisation).",
|
||||
"Translate this website in your language": "Traduisez ce site dans votre langue",
|
||||
", to help more people like you!": ", pour aider plus de gens comme vous !",
|
||||
"This website uses analytics to improve the service.": "Ce site utilise des analyses pour améliorer le service.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
|
||||
"Board Model:": "Modèle de carte:",
|
||||
"This feature is experimental.": "Cette fonctionnalité est expérimentale.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Veuillez me faire savoir si le modèle de la carte de votre manette n'est pas détecté correctement.",
|
||||
"Board model detection thanks to": "Détection du modèle de la carte grâce à",
|
||||
"Please connect the device using a USB cable.": "Veuillez connecter l'appareil à l'aide d'un câble USB.",
|
||||
"This DualSense controller has outdated firmware.": "Cette manette DualSense a un firmware obsolète.",
|
||||
"Please update the firmware and try again.": "Veuillez mettre à jour le firmware et réessayer.",
|
||||
"Joystick Info": "Infos Joystick",
|
||||
"Err R:": "Err D:",
|
||||
"Err L:": "Err G:",
|
||||
"Check circularity": "Vérifier la circularité",
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -155,12 +155,16 @@
|
||||
"Translate this website in your language": "Fordítsd le ezt a webhelyet a saját nyelvedre",
|
||||
", to help more people like you!": ", hogy több hozzád hasonló embernek segítsen!",
|
||||
"This website uses analytics to improve the service.": "Ez a weboldal analitikát használ a szolgáltatás javításához.",
|
||||
|
||||
"Board Model:": "Alaplap verzió",
|
||||
"This feature is experimental.": "Ez egy kisérleti funkció",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Kérlek értesítsd a fejlesztőt, ha az alaplap verziója nem egyezik meg a felimert verzióval!",
|
||||
"Board model detection thanks to": "Az alaplapfelismerési funkciőért köszönet neki:",
|
||||
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"Please connect the device using a USB cable.": "Kérjük, csatlakoztassa az eszközt USB-kábellel.",
|
||||
"This DualSense controller has outdated firmware.": "Ennek a DualSense vezérlőnek elavult a firmware-e.",
|
||||
"Please update the firmware and try again.": "Kérjük, frissítse a firmware-t, és próbálja újra.",
|
||||
"Joystick Info": "Joystick Információ",
|
||||
"Err R:": "Hiba J:",
|
||||
"Err L:": "Hiba B:",
|
||||
"Check circularity": "Ellenőrizze a körkörösséget",
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -155,12 +155,17 @@
|
||||
"Translate this website in your language": "Traduci questo sito web nella tua lingua",
|
||||
", to help more people like you!": ", per aiutare più persone come te!",
|
||||
"This website uses analytics to improve the service.": "Questo sito web utilizza analytics per migliorare il servizio.",
|
||||
|
||||
"Board Model:": "Modello scheda:",
|
||||
"This feature is experimental.": "Questa funzionalità è sperimentale.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Scrivimi se il modello della scheda del tuo controller non viene riconosciuto correttamente.",
|
||||
"Board model detection thanks to": "Rilevamento del modello della scheda grazie a",
|
||||
"Please connect the device using a USB cable.": "Connetti il controller usando un cavo USB.",
|
||||
"This DualSense controller has outdated firmware.": "Questo controller DualSense ha un firmware non aggiornato.",
|
||||
"Please update the firmware and try again.": "Aggiorna il firmware e riprova.",
|
||||
"Joystick Info": "Informazioni sui Joystick",
|
||||
"Err R:": "Err Dx:",
|
||||
"Err L:": "Err Sx:",
|
||||
"Check circularity": "Controlla circolarità",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -156,11 +156,17 @@
|
||||
", to help more people like you!": "、あなたのような多くの人々を助けるために!",
|
||||
"This website uses analytics to improve the service.": "このウェブサイトはサービスを向上させるためにアナリティクスを使用しています。",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"Board Model:": "基板モデル:",
|
||||
"This feature is experimental.": "この機能は実験的です。",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "コントローラーの基板モデルが正しく検出されない場合はお知らせください。",
|
||||
"Board model detection thanks to": "基板モデルの検出には感謝します",
|
||||
"Please connect the device using a USB cable.": "デバイスをUSBケーブルで接続してください。",
|
||||
"This DualSense controller has outdated firmware.": "このDualSenseコントローラーのファームウェアは古くなっています。",
|
||||
"Please update the firmware and try again.": "ファームウェアを更新してから再試行してください。",
|
||||
"Joystick Info": "ジョイスティック情報",
|
||||
"Err R:": "エラー 右:",
|
||||
"Err L:": "エラー 左:",
|
||||
"Check circularity": "円形を確認",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
"DualShock Calibration GUI": "DualShock Calibration GUI",
|
||||
"Unsupported browser. Please use a web browser with WebHID support (e.g. Chrome).": "Nie wspierana przeglądarka! Proszę użyć przeglądarki internetowej wpierającą WebHID (np. Chrome).",
|
||||
"Connect a DualShock 4 or a DualSense controller to your computer and press Connect.": "Podłącz swój kontroler Dualshock 4, lub Dualsense do komputera, i wciśnij przycisk Połącz.",
|
||||
"Connect": "Połączono",
|
||||
"Connected to:": "Połączono do:",
|
||||
"Disconnect": "Rozłączono",
|
||||
"Connect": "Połącz",
|
||||
"Connected to:": "Połączono z:",
|
||||
"Disconnect": "Rozłącz",
|
||||
"Firmware Info": "Informacje o Firmware",
|
||||
"Calibrate stick center": "Skalibruj centralny punkt drążka",
|
||||
"Calibrate stick range (permanent)": "Skalibruj maksymalny zasięg drążka (na stałe)",
|
||||
"Calibrate stick range (temporary)": "Skalibruj maksymalny zasięg drążka (chwilowo)",
|
||||
"Calibrate stick center": "Skalibruj centralny punkt drążków",
|
||||
"Calibrate stick range (permanent)": "Skalibruj maksymalny zasięg drążków (na stałe)",
|
||||
"Calibrate stick range (temporary)": "Skalibruj maksymalny zasięg drążków (chwilowo)",
|
||||
"Reset controller": "Zresetuj kontroler",
|
||||
"Sections below are not useful, just some debug infos or manual commands": "Poniższe sekcje nie są przydatne, zawierają jedynie informacje dotyczące debugowania lub ręcznych poleceń",
|
||||
"NVS Status": "Status NVS",
|
||||
@@ -20,35 +20,35 @@
|
||||
"NVS unlock": "Odblokuj NVS",
|
||||
"NVS lock": "Zablokuj NVS",
|
||||
"Get BDAddr": "Zdobądź BDAddr",
|
||||
"Fast calibrate stick center (OLD)": "Szybka kalibracja punktu drążka (stare)",
|
||||
"Stick center calibration": "Kalibracja centralna drążka",
|
||||
"Fast calibrate stick center (OLD)": "Szybka kalibracja punktu drążków (stara wersja)",
|
||||
"Stick center calibration": "Kalibracja centralna drążków",
|
||||
"Welcome": "Witamy",
|
||||
"Step 1": "Krok 1",
|
||||
"Step 2": "Krok 2",
|
||||
"Step 3": "Krok 3",
|
||||
"Step 4": "Krok 4",
|
||||
"Completed": "Zakończono",
|
||||
"Welcome to the stick center-calibration wizard!": "Witamy w narzędziu kalibracyjnym centralnego-punktu drążka!",
|
||||
"Welcome to the stick center-calibration wizard!": "Witamy w narzędziu kalibracyjnym centralnego punktu drążków!",
|
||||
"This tool will guide you in re-centering the analog sticks of your controller. It consists in four steps: you will be asked to move both sticks in a direction and release them.": "To narzędzie pomoże Ci w ponownym wycentrowaniu drążków kontrolera. Składa się z czterech kroków: zostaniesz poproszony o przesunięcie obu drążków w określonych kierunkach, a następnie w ich puszczeniu.",
|
||||
"Please be aware that, <i>once the calibration is running, it cannot be canceled</i>. Do not close this page or disconnect your controller until is completed.": "Prosimy pamiętać, żeby po rozpoczęciu kalibracji nie anulować całej procedury. Nie zamykaj tej strony ani nie odłączaj kontrolera do czasu zakończenia.",
|
||||
"Calibration storage": "Magazyn kalibracji",
|
||||
"By default the calibration is only saved in a volatile storage, so that if you (or this tool) mess something up, a reset of the controller is enough to make it work again.": "Domyślnie kalibracja zapisana jest jedynie w pamięci tymczasowej, więc w przypadku awarii (lub spowodowanej przez to narzędzie) wystarczy zresetować sterownik, aby ponownie zaczął działać.",
|
||||
"If you wish to store the calibration permanently in the controller, tick the checkbox below:": "Jeżeli chcesz trwale zapisać kalibrację w sterowniku zaznacz pole poniżej:",
|
||||
"Write changes permanently in the controller": "Zapisz zmiany na stałe w kontrolerze",
|
||||
"<small>Warning: <font color=\"red\">Do not store the calibration permanently if the controller battery is low or disconnected. It will damage your controller.</font></small>": "<small>Uwaga: <font color=\"red\">Nie zapisuj trwale kalibracji, jeśli bateria kontrolera jest słaba lub została odłączona. W przeciwnym razie przyczyni się do uszkodzenia kontrolera.</font></small>",
|
||||
"<small>Warning: <font color=\"red\">Do not store the calibration permanently if the controller battery is low or disconnected. It will damage your controller.</font></small>": "<small>Uwaga: <font color=\"red\">Nie zapisuj trwale kalibracji, jeśli bateria kontrolera jest słaba lub została odłączona. W przeciwnym wypadku kontroler ulegnie całkowitemu uszkodzeniu.</font></small>",
|
||||
"Press <b>Start</b> to begin calibration.": "Naciśnij <b>Start</b>, żeby rozpocząć kalibrację.",
|
||||
"Please move both sticks to the <b>top-left corner</b> and release them.": "Proszę przesuń oba drążki do <b>Lewy górny róg</b> a następnie je puść.",
|
||||
"Please move both sticks to the <b>top-left corner</b> and release them.": "Proszę przesuń oba drążki maksymalnie do <b>Lewego górnego rogu</b> a następnie je puść.",
|
||||
"When the sticks are back in the center, press <b>Continue</b>.": "Gdy drążki znajdą się z powrotem na środku, naciśnij <b>Kontynuuj</b>.",
|
||||
"Please move both sticks to the <b>top-right corner</b> and release them.": "Proszę przesuń oba drążki do <b>Prawy górny róg</b> a następnie je puść.",
|
||||
"Please move both sticks to the <b>bottom-left corner</b> and release them.": "Proszę przesuń oba drążki do <b>Lewy dolny róg</b> a następnie je puść.",
|
||||
"Please move both sticks to the <b>bottom-right corner</b> and release them.": "Proszę przesuń oba drążki do <b>Prawy dolny róg</b> a następnie je puść.",
|
||||
"Calibration completed successfully!": "Kalibracja wykonana pomyślnie!",
|
||||
"Please move both sticks to the <b>top-right corner</b> and release them.": "Proszę przesuń oba drążki maksymalnie do <b>Prawego górnego rogu</b> a następnie je puść.",
|
||||
"Please move both sticks to the <b>bottom-left corner</b> and release them.": "Proszę przesuń oba drążki maksymalnie do <b>Lewego dolnego rogu</b> a następnie je puść.",
|
||||
"Please move both sticks to the <b>bottom-right corner</b> and release them.": "Proszę przesuń oba drążki maksymalnie do <b>Prawego dolnego rogu</b> a następnie je puść.",
|
||||
"Calibration completed successfully!": "Kalibracja została wykonana pomyślnie!",
|
||||
"Next": "Dalej",
|
||||
"Recentering the controller sticks. ": "Ponowne centrowanie drążków kontrolera. ",
|
||||
"Please do not close this window and do not disconnect your controller. ": "Proszę nie zamykaj tego okna, ani nie odłączaj swojego kontrolera. ",
|
||||
"Range calibration": "Zasięg kalibracji",
|
||||
"Range calibration": "Kalibracja maksymalnego zasięgu drążków",
|
||||
"<b>The controller is now sampling data!</b>": "<b>Kontroler zbiera teraz dane!</b>",
|
||||
"Rotate the sticks slowly to cover the whole range. Press \"Done\" when completed.": "Obracaj powoli drążkami w ich maksymalnym obrębie zasięgu. Naciśnij \"Gotowe\", jeżeli zakończyłeś.",
|
||||
"Rotate the sticks slowly to cover the whole range. Press \"Done\" when completed.": "Obracaj powoli drążkami w ich maksymalnym możliwym zasięgu, a następnie je puść. Naciśnij \"Gotowe\", jeżeli skończyłeś.",
|
||||
"Done": "Gotowe",
|
||||
"Hi, thank you for using this software.": "Cześć, dzięki ci za użycie tego oprogramowania.",
|
||||
"If you're finding it helpful and you want to support my efforts, feel free to": "Jeżeli uznałeś to narzędzie za pomocne, i chcesz wesprzeć mój wysiłek, nie krępuj się",
|
||||
@@ -70,22 +70,22 @@
|
||||
"Device Type:": "Rodzaj urządzenia:",
|
||||
"Firmware Type:": "Rodzaj Firmware'u:",
|
||||
"SW Series:": "Seria SW:",
|
||||
"HW Info:": "Info HW:",
|
||||
"HW Info:": "Informacje o HW:",
|
||||
"SW Version:": "Wersja SW:",
|
||||
"UPD Version:": "Wersja UTD:",
|
||||
"FW Version1:": "FW Wersja 1:",
|
||||
"FW Version2:": "FW Wersja 2:",
|
||||
"FW Version3:": "FW Wersja 3:",
|
||||
|
||||
"Range calibration completed": "Zasięg kalibracji zakończony",
|
||||
"Range calibration failed: ": "Zasięg kalibracji nieuadany: ",
|
||||
"Range calibration completed": "Kalibracja maksymalnego zasięgu drążków została zakończona pomyślnie",
|
||||
"Range calibration failed: ": "Kalibracja maksymalnego zasięgu drążków została nieuadana: ",
|
||||
"Cannot unlock NVS": "Nie można odblokować NVS",
|
||||
"Cannot relock NVS": "Nie można ponownie zablokować NVS",
|
||||
"Error 1": "Błąd 1",
|
||||
"Error 2": "Błąd 2",
|
||||
"Error 3": "Błąd 3",
|
||||
"Stick calibration failed: ": "Kalibracja drążka nie powiodła się: ",
|
||||
"Stick calibration completed": "Kalibracja drążka powiodła się",
|
||||
"Stick calibration failed: ": "Kalibracja drążków nie powiodła się: ",
|
||||
"Stick calibration completed": "Kalibracja drążków powiodła się",
|
||||
"NVS Lock failed: ": "Blokada NVS nie powiodła się: ",
|
||||
"NVS Unlock failed: ": "Odblokowanie NVS nie powiodło się: ",
|
||||
"Please connect only one controller at time.": "Proszę podłączyć tylko jeden kontoler.",
|
||||
@@ -109,15 +109,15 @@
|
||||
"Welcome to the Calibration GUI": "Witamy w Calibration GUI",
|
||||
"Just few things to know before you can start:": "O to kilka rzeczy o których musisz wiedzieć przed rozpoczęciem",
|
||||
"This website is not affiliated with Sony, PlayStation & co.": "Ta strona nie jest w żaden sposób spowiązana z Sony, PlayStation & co.",
|
||||
"This service is provided without warranty. Use at your own risk.": "Ta usługa jest świadczona bez żadnej gwarancji. Robisz to na własne ryzyko.",
|
||||
"Keep the internal battery of the controller connected and ensure it is well charged. If the battery dies during operations, the controller will be damaged and rendered unusable.": "Podtrzymuj wewnętrzą baterię kontrolera tak żeby w czasie pracy była ona dobrze naładowana. W przeciwnym razie gdy bateria się rozładuje, to wewnętrzny sterownik kontrolera może ulec całkowitemu uszkodzeniu",
|
||||
"This service is provided without warranty. Use at your own risk.": "Ta usługa nie świadczy, ani nie podlega żadnej gwarancji. Robisz to wszystko to na własne ryzyko.",
|
||||
"Keep the internal battery of the controller connected and ensure it is well charged. If the battery dies during operations, the controller will be damaged and rendered unusable.": "Upewnij się przed procesem kalibracji, czy twoja bateria w kontrolerze jest dobrze naładowana. W przeciwnym razie gdy bateria się rozładuje, to wewnętrzny sterownik kontrolera może ulec całkowitemu uszkodzeniu",
|
||||
"Before doing the permanent calibration, try the temporary one to ensure that everything is working well.": "Przed wykonaniem kalibracji stałej wypróbuj kalibrację tymczasową, aby upewnić się, że wszystko działa dobrze.",
|
||||
"Understood": "Zrozumiano",
|
||||
"Version": "Wersja",
|
||||
|
||||
"Frequently Asked Questions": "Często zadawane pytania",
|
||||
"Close": "Zamknij",
|
||||
"Welcome to the F.A.Q. section! Below, you'll find answers to some of the most commonly asked questions about this website. If you have any other inquiries or need further assistance, feel free to reach out to me directly. Your feedback and questions are always welcome!": "Witamy w sekcji FAQ! Poniżej znajdziesz odpowiedzi na niektóre z najczęściej zadawanych pytań dotyczących tej witryny. Jeśli masz inne pytania lub potrzebujesz dalszej pomocy, skontaktuj się ze mną bezpośrednio. Twoje opinie i pytania są zawsze mile widziane!",
|
||||
"Welcome to the F.A.Q. section! Below, you'll find answers to some of the most commonly asked questions about this website. If you have any other inquiries or need further assistance, feel free to reach out to me directly. Your feedback and questions are always welcome!": "Witaj w sekcji FAQ! Poniżej znajdziesz odpowiedzi na niektóre z najczęściej zadawanych pytań dotyczących tej witryny. Jeśli masz inne pytania lub potrzebujesz dalszej pomocy, skontaktuj się ze mną bezpośrednio. Twoje opinie i pytania są zawsze mile widziane!",
|
||||
"How does it work?": "Jak to działa?",
|
||||
"Behind the scenes, this website is the culmination of one year of dedicated effort in reverse-engineering DualShock controllers for fun/hobby from a random guy on the internet.": "Za kulisami ta witryna internetowa jest wynikiem całorocznych wysiłków związanych z inżynierią wsteczną kontrolerów DualShock dla zabawy/hobby jakiegoś przypadkowego faceta w Internecie.",
|
||||
"Through": "Poprzez",
|
||||
@@ -132,15 +132,15 @@
|
||||
"Yes, only DualShock4 at the moment. This happened because I accidentally purchased some clones, spent time identifying the differences and added this functionality to prevent future deception.": "Tak, obecnie tylko DualShock 4. Stało się tak, ponieważ przez przypadek kupiłem kilka klonów, spędziłem czas na identyfikowaniu różnic i dodałem tę funkcję, aby zapobiec przyszłym oszustwom.",
|
||||
"Unfortunately, the clones cannot be calibrated anyway, because they only clone the behavior of a DualShock4 during a normal gameplay, not all the undocumented functionalities.": "Niestety klonów i tak nie da się skalibrować, ponieważ klonują jedynie zachowanie DualShocka 4 podczas normalnej rozgrywki, a nie wszystkie nieudokumentowane funkcje.",
|
||||
"If you want to extend this detection functionality to DualSense, please ship me a fake DualSense and you'll see it in few weeks.": "Jeśli chcesz rozszerzyć tę funkcję wykrywania na DualSense, prześlij mi fałszywy DualSense, a zobaczysz go za kilka tygodni.",
|
||||
"What development is in plan?": "Jaki rozwój jest planowany?",
|
||||
"What development is in plan?": "Jakie masz dalsze plany na rozwój?",
|
||||
|
||||
"I maintain two separate to-do lists for this project, although the priority has yet to be established.": "Prowadzę dwie osobne listy rzeczy do zrobienia dla tego projektu, chociaż priorytet nie został jeszcze ustalony.",
|
||||
"The first list is about enhancing support for DualShock4 and DualSense controllers:": "Pierwsza lista dotyczy ulepszenia obsługi kontrolerów DualShock 4 i DualSense:",
|
||||
"Implement calibration of L2/R2 triggers.": "Zastosuj kalibrację przycisków L2/R2.",
|
||||
"Improve detection of clones, particularly beneficial for those seeking to purchase used controllers with assurance of authenticity.": "Usprawnij wykrywanie klonów, co jest szczególnie korzystne dla osób chcących kupić używane kontrolery z gwarancją autentyczności.",
|
||||
"Enhance user interface (e.g. provide additional controller information)": "Ulepsz interfejs użytkownika (np. podaj dodatkowe informacje o kontrolerze)",
|
||||
"Add support for recalibrating IMUs.": "Dodaj obsługę ponownej kalibracji IMU.",
|
||||
"Additionally, explore the possibility of reviving non-functioning DualShock controllers (further discussion available on Discord for interested parties).": "Dodatkowo zbadaj możliwość ożywienia niedziałających kontrolerów DualShock (dalsza dyskusja dostępna na Discordzie dla zainteresowanych).",
|
||||
"Implement calibration of L2/R2 triggers.": "Implementacja funkcji kalibracji przycisków L2/R2.",
|
||||
"Improve detection of clones, particularly beneficial for those seeking to purchase used controllers with assurance of authenticity.": "Usprawnienie do wykrywania klonów, co jest szczególnie korzystne dla osób chcących kupić używane kontrolery z gwarancją autentyczności.",
|
||||
"Enhance user interface (e.g. provide additional controller information)": "Ulepszenie interfejsu użytkownika (np. dodatkowe informacje o kontrolerze)",
|
||||
"Add support for recalibrating IMUs.": "Dodanie obsługi ponownej kalibracji IMU.",
|
||||
"Additionally, explore the possibility of reviving non-functioning DualShock controllers (further discussion available on Discord for interested parties).": "Możliwość zbadania niedziałających kontrolerów DualShock w celu możliwości ich ożywienia (dalsza dyskusja dostępna na Discordzie dla zainteresowanych).",
|
||||
"The second list contains new controllers I aim to support:": "Druga lista zawiera nowe kontrolery, które chcę wspierać:",
|
||||
"DualSense Edge": "DualSense Edge",
|
||||
"DualShock 3": "DualShock 3",
|
||||
@@ -161,6 +161,13 @@
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Proszę daj mi znać jaki model płytki kontrolera nie został wykryty poprawnie",
|
||||
"Board model detection thanks to": "Podziękowania dla osoby która wykryła model płytki",
|
||||
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"Please connect the device using a USB cable.": "Proszę podłącz urządzenie przy pomocy kabla USB.",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
"Joystick Info": "",
|
||||
"Err R:": "",
|
||||
"Err L:": "",
|
||||
"Check circularity": "",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -156,11 +156,17 @@
|
||||
", to help more people like you!": ", para ajudar mais pessoas como você!",
|
||||
"This website uses analytics to improve the service.": "Este site utiliza análises para melhorar o serviço.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"Board Model:": "Modelo da Placa:",
|
||||
"This feature is experimental.": "Esta funcionalidade é experimental.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Por favor, avise-me se o modelo da placa do seu controle não for detectado corretamente.",
|
||||
"Board model detection thanks to": "Detecção do modelo da placa graças a",
|
||||
"Please connect the device using a USB cable.": "Por favor, conecte o dispositivo usando um cabo USB.",
|
||||
"This DualSense controller has outdated firmware.": "Este controle DualSense possui um firmware desatualizado.",
|
||||
"Please update the firmware and try again.": "Por favor, atualize o firmware e tente novamente.",
|
||||
"Joystick Info": "Informações do Joystick",
|
||||
"Err R:": "Erro D:",
|
||||
"Err L:": "Erro E:",
|
||||
"Check circularity": "Verificar circularidade",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -156,11 +156,17 @@
|
||||
", to help more people like you!": ", чтобы помочь большему числу людей, подобных вам!",
|
||||
"This website uses analytics to improve the service.": "Этот сайт использует аналитику для улучшения сервиса.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"Board Model:": "Модель платы:",
|
||||
"This feature is experimental.": "Эта функция экспериментальная.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Пожалуйста, дайте знать, если модель платы вашего контроллера определена неправильно.",
|
||||
"Board model detection thanks to": "Определение модели платы благодаря",
|
||||
"Please connect the device using a USB cable.": "Пожалуйста, подключите устройство с помощью USB-кабеля.",
|
||||
"This DualSense controller has outdated firmware.": "Прошивка этого контроллера DualSense устарела.",
|
||||
"Please update the firmware and try again.": "Пожалуйста, обновите прошивку и попробуйте снова.",
|
||||
"Joystick Info": "Информация о джойстике",
|
||||
"Err R:": "Ошибка П:",
|
||||
"Err L:": "Ошибка Л:",
|
||||
"Check circularity": "Проверить округлость",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -156,11 +156,17 @@
|
||||
", to help more people like you!": ", sizin gibi daha fazla insanın faydalanması için!",
|
||||
"This website uses analytics to improve the service.": "Bu web sitesi hizmeti iyileştirmek için analiz kullanıyor.",
|
||||
|
||||
"Board Model:": "",
|
||||
"This feature is experimental.": "",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "",
|
||||
"Board model detection thanks to": "",
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"Board Model:": "Kart Modeli:",
|
||||
"This feature is experimental.": "Bu özellik deneysel.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Denetleyicinizin kart modeli doğru tespit edilmezse lütfen bana bildirin.",
|
||||
"Board model detection thanks to": "Kart modeli tespiti sayesinde",
|
||||
"Please connect the device using a USB cable.": "Lütfen cihazı bir USB kablosu kullanarak bağlayın.",
|
||||
"This DualSense controller has outdated firmware.": "Bu DualSense denetleyicisinin yazılımı güncel değil.",
|
||||
"Please update the firmware and try again.": "Lütfen yazılımı güncelleyin ve tekrar deneyin.",
|
||||
"Joystick Info": "Joystick Bilgisi",
|
||||
"Err R:": "Hata D:",
|
||||
"Err L:": "Hata S:",
|
||||
"Check circularity": "Daireselliği kontrol et",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -162,5 +162,12 @@
|
||||
"Board model detection thanks to": "主板型号检测功能需要感谢",
|
||||
|
||||
"Please connect the device using a USB cable.": "",
|
||||
"This DualSense controller has outdated firmware.": "",
|
||||
"Please update the firmware and try again.": "",
|
||||
"Joystick Info": "",
|
||||
"Err R:": "",
|
||||
"Err L:": "",
|
||||
"Check circularity": "",
|
||||
|
||||
"": ""
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user