Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5d7d4264c0 | ||
|
|
aba934c429 | ||
|
|
3d2f1ca4c9 | ||
|
|
dbcf62dc76 | ||
|
|
41208d2727 | ||
|
|
3a1407eb19 | ||
|
|
da13d7fb1e | ||
|
|
898d1d14d5 | ||
|
|
1a6b9026e3 | ||
|
|
600384297d | ||
|
|
e955f4ae66 | ||
|
|
3c583151a3 | ||
|
|
e514242393 | ||
|
|
8e73f36473 | ||
|
|
526fabf442 | ||
|
|
2d80df041b |
BIN
apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
174
core.js
@@ -38,6 +38,7 @@ var available_langs = {
|
||||
"nl_nl": { "name": "Nederlands", "file": "nl_nl.json", "direction": "ltr"},
|
||||
"pl_pl": { "name": "Polski", "file": "pl_pl.json", "direction": "ltr"},
|
||||
"pt_br": { "name": "Português do Brasil", "file": "pt_br.json", "direction": "ltr"},
|
||||
"rs_rs": { "name": "Srpski", "file": "rs_rs.json", "direction": "ltr"},
|
||||
"ru_ru": { "name": "Русский", "file": "ru_ru.json", "direction": "ltr"},
|
||||
"tr_tr": { "name": "Türkçe", "file": "tr_tr.json", "direction": "ltr"},
|
||||
"ua_ua": { "name": "Українська", "file": "ua_ua.json", "direction": "ltr"},
|
||||
@@ -196,7 +197,19 @@ async function ds5_flash() {
|
||||
|
||||
show_popup(l("Changes saved successfully"));
|
||||
} catch(error) {
|
||||
show_popup(l("Error while saving changes: ") + str(error));
|
||||
show_popup(l("Error while saving changes: ") + toString(error));
|
||||
}
|
||||
}
|
||||
|
||||
async function ds5_edge_flash() {
|
||||
la("ds5_edge_flash");
|
||||
try {
|
||||
await ds5_edge_flash_modules();
|
||||
await ds5_reset();
|
||||
show_popup("<b>" + l("Changes saved successfully") + "</b>.<br><br>" + l("If the calibration is not stored permanently, please double-check the wirings of the hardware mod.") + "<br>" + l("Please disconnect and reconnect the controller."), true);
|
||||
await disconnect();
|
||||
} catch(error) {
|
||||
show_popup(l("Error while saving changes: ") + toString(error));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,7 +224,7 @@ async function ds4_reset() {
|
||||
async function ds5_reset() {
|
||||
la("ds5_reset");
|
||||
try {
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [1,1,0]))
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [1,1]))
|
||||
} catch(error) {
|
||||
}
|
||||
}
|
||||
@@ -440,6 +453,9 @@ async function ds5_nvstatus() {
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [3,3]))
|
||||
data = lf("ds5_nvstatus", await device.receiveFeatureReport(0x81))
|
||||
ret = data.getUint32(1, false);
|
||||
if(ret == 0x15010100) {
|
||||
return 4;
|
||||
}
|
||||
if(ret == 0x03030201) {
|
||||
$("#d-nvstatus").html("<font color='green'>" + l("locked") + "</font>");
|
||||
return 1; // temporary
|
||||
@@ -638,11 +654,30 @@ async function ds5_calibrate_sticks_end() {
|
||||
await device.sendFeatureReport(0x82, alloc_req(0x82, [2,1,1]))
|
||||
|
||||
data = await device.receiveFeatureReport(0x83)
|
||||
if(data.getUint32(0, false) != 0x83010102) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
la("ds5_calibrate_sticks_end_failed", {"d1": d1});
|
||||
show_popup(err + l("Error 3") + " (" + d1 + ").");
|
||||
return false;
|
||||
|
||||
if(mode == 2) {
|
||||
if(data.getUint32(0, false) != 0x83010102) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
la("ds5_calibrate_sticks_failed", {"s": 3, "d1": d1});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 3") + " (" + d1 + ").");
|
||||
}
|
||||
} else if(mode == 3) {
|
||||
if(data.getUint32(0, false) != 0x83010101) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
la("ds5_calibrate_sticks_failed", {"s": 3, "d1": d1});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 4") + " (" + d1 + ").");
|
||||
}
|
||||
|
||||
await device.sendFeatureReport(0x82, alloc_req(0x82, [2,1,1]))
|
||||
data = await device.receiveFeatureReport(0x83)
|
||||
if(data.getUint32(0, false) != 0x83010103 && data.getUint32(0, false) != 0x83010312) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
la("ds5_calibrate_sticks_failed", {"s": 3, "d1": d1});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 5") + " (" + d1 + ").");
|
||||
}
|
||||
}
|
||||
|
||||
update_nvs_changes_status(1);
|
||||
@@ -701,11 +736,31 @@ async function ds5_calibrate_sticks() {
|
||||
await device.sendFeatureReport(0x82, alloc_req(0x82, [2,1,1]))
|
||||
|
||||
data = await device.receiveFeatureReport(0x83)
|
||||
if(data.getUint32(0, false) != 0x83010102) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
la("ds5_calibrate_sticks_failed", {"s": 3, "d1": d1});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 3") + " (" + d1 + ").");
|
||||
|
||||
if(mode == 2) {
|
||||
if(data.getUint32(0, false) != 0x83010102) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
la("ds5_calibrate_sticks_failed", {"s": 3, "d1": d1});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 3") + " (" + d1 + ").");
|
||||
}
|
||||
} else if(mode == 3) {
|
||||
if(data.getUint32(0, false) != 0x83010101) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
la("ds5_calibrate_sticks_failed", {"s": 3, "d1": d1});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 4") + " (" + d1 + ").");
|
||||
}
|
||||
|
||||
await device.sendFeatureReport(0x82, alloc_req(0x82, [2,1,1]))
|
||||
data = await device.receiveFeatureReport(0x83)
|
||||
if(data.getUint32(0, false) != 0x83010103) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
la("ds5_calibrate_sticks_failed", {"s": 3, "d1": d1});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 5") + " (" + d1 + ").");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
set_progress(100);
|
||||
@@ -755,11 +810,30 @@ async function ds5_calibrate_range_end() {
|
||||
|
||||
// Assert
|
||||
data = await device.receiveFeatureReport(0x83)
|
||||
if(data.getUint32(0, false) != 0x83010202) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
la("ds5_calibrate_range_end_failed", {"d1": d1});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 1") + " (" + d1 + ").");
|
||||
|
||||
if(mode == 2) {
|
||||
if(data.getUint32(0, false) != 0x83010202) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
la("ds5_calibrate_range_end_failed", {"d1": d1});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 3") + " (" + d1 + ").");
|
||||
}
|
||||
} else {
|
||||
if(data.getUint32(0, false) != 0x83010201) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
la("ds5_calibrate_range_end_failed", {"d1": d1});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 4") + " (" + d1 + ").");
|
||||
}
|
||||
|
||||
await device.sendFeatureReport(0x82, alloc_req(0x82, [2,1,2]))
|
||||
data = await device.receiveFeatureReport(0x83)
|
||||
if(data.getUint32(0, false) != 0x83010203) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
la("ds5_calibrate_range_end_failed", {"d1": d1});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 5") + " (" + d1 + ").");
|
||||
}
|
||||
}
|
||||
|
||||
update_nvs_changes_status(1);
|
||||
@@ -777,7 +851,7 @@ async function ds5_nvlock() {
|
||||
la("ds5_nvlock");
|
||||
try {
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [3,1]))
|
||||
data = await device.receiveFeatureReport(0x83)
|
||||
data = await device.receiveFeatureReport(0x81)
|
||||
} catch(e) {
|
||||
await new Promise(r => setTimeout(r, 500));
|
||||
close_calibrate_window();
|
||||
@@ -785,11 +859,44 @@ async function ds5_nvlock() {
|
||||
}
|
||||
}
|
||||
|
||||
async function ds5_edge_flash_modules() {
|
||||
la("ds5_edge_flash_modules");
|
||||
var modal = null;
|
||||
try {
|
||||
modal = new bootstrap.Modal(document.getElementById('edgeProgressModal'), {})
|
||||
modal.show();
|
||||
|
||||
if(device != null) {
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 6, 0, 11]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 5, 0]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 6, 1, 11]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 5, 1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
}
|
||||
await new Promise(r => setTimeout(r, 500));
|
||||
if(device != null) {
|
||||
data = await device.receiveFeatureReport(0x81)
|
||||
}
|
||||
await new Promise(r => setTimeout(r, 1000));
|
||||
modal.hide();
|
||||
await ds5_reset();
|
||||
} catch(e) {
|
||||
modal.hide();
|
||||
|
||||
await new Promise(r => setTimeout(r, 500));
|
||||
return show_popup(l("NVS Unlock failed: ") + e);
|
||||
}
|
||||
}
|
||||
|
||||
async function ds5_nvunlock() {
|
||||
la("ds5_nvunlock");
|
||||
try {
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [3,2, 101, 50, 64, 12]))
|
||||
data = await device.receiveFeatureReport(0x83)
|
||||
data = await device.receiveFeatureReport(0x81)
|
||||
} catch(e) {
|
||||
await new Promise(r => setTimeout(r, 500));
|
||||
close_calibrate_window();
|
||||
@@ -1043,6 +1150,9 @@ function ds5_finetune_update(name, plx, ply) {
|
||||
ctx.moveTo(hb, yb);
|
||||
ctx.lineTo(hb+plx*sz, yb+ply*sz);
|
||||
ctx.stroke();
|
||||
|
||||
$("#"+ name + "x-lbl").text(float_to_str(plx));
|
||||
$("#"+ name + "y-lbl").text(float_to_str(ply));
|
||||
}
|
||||
|
||||
function finetune_close() {
|
||||
@@ -1250,7 +1360,7 @@ function refresh_stick_pos() {
|
||||
ofl += Math.pow(ll_data[i] - 1, 2);
|
||||
}
|
||||
for (i=0;i<rr_data.length;i++) {
|
||||
if(ll_data[i] > 0.2) {
|
||||
if(rr_data[i] > 0.2) {
|
||||
rcounter += 1;
|
||||
ofr += Math.pow(rr_data[i] - 1, 2);
|
||||
}
|
||||
@@ -1511,10 +1621,21 @@ async function continue_connection(report) {
|
||||
$("#ds5finetune").hide()
|
||||
if(await ds5_info()) {
|
||||
connected = true;
|
||||
mode = 0;
|
||||
mode = 3;
|
||||
devname = l("Sony DualSense Edge");
|
||||
disable_btn |= 8;
|
||||
}
|
||||
|
||||
n = await ds5_nvstatus();
|
||||
if(n == 4) {
|
||||
// dualsense edge with pending reboot
|
||||
$("#btnconnect").prop("disabled", false);
|
||||
$("#connectspinner").hide();
|
||||
disconnect();
|
||||
show_popup(l("A reboot is needed to continue using this DualSense Edge. Please disconnect and reconnect your controller."));
|
||||
return;
|
||||
}
|
||||
|
||||
device.oninputreport = process_ds_input;
|
||||
} else {
|
||||
$("#btnconnect").prop("disabled", false);
|
||||
$("#connectspinner").hide();
|
||||
@@ -1539,6 +1660,9 @@ async function continue_connection(report) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(mode == 3)
|
||||
show_edge_modal();
|
||||
|
||||
if(disable_btn != 0)
|
||||
update_disable_btn();
|
||||
|
||||
@@ -1569,8 +1693,6 @@ function update_disable_btn() {
|
||||
show_popup(l("The device appears to be a DS4 clone. All functionalities are disabled."));
|
||||
} else if(disable_btn & 2 && !(last_disable_btn & 2)) {
|
||||
show_popup(l("This DualSense controller has outdated firmware.") + "<br>" + l("Please update the firmware and try again."), true);
|
||||
} else if(disable_btn & 8 && !(last_disable_btn & 8)) {
|
||||
show_edge_modal();
|
||||
} else if(disable_btn & 4 && !(last_disable_btn & 4)) {
|
||||
show_popup(l("Please charge controller battery over 30% to use this tool."));
|
||||
}
|
||||
@@ -1636,8 +1758,10 @@ var curModal = null
|
||||
async function multi_flash() {
|
||||
if(mode == 1)
|
||||
ds4_flash();
|
||||
else
|
||||
else if(mode == 2)
|
||||
ds5_flash();
|
||||
else if(mode == 3)
|
||||
ds5_edge_flash();
|
||||
update_nvs_changes_status(0);
|
||||
}
|
||||
|
||||
|
||||
BIN
favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 659 B |
BIN
favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
favicon-96x96.png
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
BIN
favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
3
favicon.svg
Normal file
|
After Width: | Height: | Size: 154 KiB |
94
index.html
@@ -28,6 +28,16 @@
|
||||
<meta http-equiv="Permissions-Policy" content="interest-cohort=()">
|
||||
<script src="core.js"></script>
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/site.webmanifest">
|
||||
|
||||
<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<link rel="shortcut icon" href="/favicon.ico" />
|
||||
<meta name="apple-mobile-web-app-title" content="DS Tools" />
|
||||
|
||||
<style>
|
||||
dl.row dt { font-weight: normal; }
|
||||
dl.row dd { font-family: monospace; }
|
||||
@@ -100,7 +110,7 @@ dl.row dd { font-family: monospace; }
|
||||
</div>
|
||||
|
||||
<div id="offlinebar" class="vstack p-2" style="display: none;">
|
||||
<p class="ds-i18n">Connect a DualShock 4 or a DualSense controller to your computer and press Connect.</p>
|
||||
<p class="ds-i18n">Connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.</p>
|
||||
<button id="btnconnect" type="button" class="btn btn-outline-primary" onclick="connect()">
|
||||
<span class="spinner-border spinner-border-sm" style="display: none;" id="connectspinner" aria-hidden="true"></span>
|
||||
<span class="ds-i18n">Connect</span>
|
||||
@@ -178,12 +188,12 @@ dl.row dd { font-family: monospace; }
|
||||
<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>
|
||||
<span class="ds-i18n">Err L:</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>
|
||||
<span class="ds-i18n">Err R:</span>
|
||||
<pre id="er-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -286,6 +296,21 @@ dl.row dd { font-family: monospace; }
|
||||
<div class="col"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="px-2">
|
||||
<div class="hstack">
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span>LX:</span>
|
||||
<pre id="finetuneStickCanvasLx-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span>LY:</span>
|
||||
<pre id="finetuneStickCanvasLy-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -335,6 +360,21 @@ dl.row dd { font-family: monospace; }
|
||||
<div class="col"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="px-2">
|
||||
<div class="hstack">
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span>RX:</span>
|
||||
<pre id="finetuneStickCanvasRx-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
|
||||
<div class="vstack" style="text-align: center;">
|
||||
<span>RY:</span>
|
||||
<pre id="finetuneStickCanvasRy-lbl" style="min-width: 80px;"></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- col -->
|
||||
@@ -344,7 +384,7 @@ dl.row dd { font-family: monospace; }
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button direction="button" class="btn btn-secondary ds-i18n" onclick="finetune_cancel()">Cancel</button>
|
||||
<button direction="button" class="btn btn-outline-secondary ds-i18n" onclick="finetune_cancel()">Cancel</button>
|
||||
<button type="button" class="btn btn-primary ds-i18n" onclick="finetune_save()">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -514,25 +554,51 @@ dl.row dd { font-family: monospace; }
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Edge in progress Modal -->
|
||||
<div class="modal fade" id="edgeProgressModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="edgeProgressLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5 ds-i18n" id="edgeProgressLabel">Storing calibration</h1>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p class="ds-i18n">Calibration is being stored in the stick modules...</p>
|
||||
<p class="ds-i18n">Please wait.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="edgeModal" tabindex="-1" aria-labelledby="modal-title" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title ds-i18n">Dualsense Edge Compatibility</h5>
|
||||
<h5 class="modal-title ds-i18n">DualSense Edge Calibration (Experimental)</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body p-4" id="donateBody">
|
||||
<p class="ds-i18n">The DualShock Calibration GUI does not currently support the DualSense Edge.</p>
|
||||
<p class="ds-i18n">I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.</p>
|
||||
<p><span class="ds-i18n">If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a</span>
|
||||
<a href="https://paypal.me/alaincarlucci" target="_blank" class="text-body-secondary ds-i18n">donation</a>.</p>
|
||||
<p class="ds-i18n">Thank you for your generosity and support!</p>
|
||||
<p>Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.</p>
|
||||
<p>Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.</p>
|
||||
<p>To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required. This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.</p>
|
||||
<p></p>
|
||||
|
||||
<p>You can do this in two ways:
|
||||
<ul><li><b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP, as shown here</li>
|
||||
|
||||
<li><b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<p><b>This is only for advanced users. If you're not sure what you're doing, please don’t attempt it.</b></p>
|
||||
<p>More details and images <a href="https://github.com/lewy20041/Dualsense_Edge_Modules_Callibration">here</a>.</p>
|
||||
|
||||
<p>We are not responsible for any damage caused by attempting this modification.</p>
|
||||
<p>For more info or help, feel free to reach out on Discord.</p>
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button onclick="window.open('https://paypal.me/alaincarlucci')" type="button" class="btn btn-success" data-bs-dismiss="modal">
|
||||
<svg class="bi" width="18" height="18"><use xlink:href="#paypal"/></svg> <span class="ds-i18n">Support this project</span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-primary ds-i18n" onclick="welcome_accepted();">Understood</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -757,7 +823,7 @@ dl.row dd { font-family: monospace; }
|
||||
<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><a target="_blank" href="https://github.com/dualshock-tools/dualshock-tools.github.io/commits/main/"><span class="ds-i18n">Version</span> 2.0</a> (2025-01-18) - <a href="#" class="ds-i18n" onclick="show_donate_modal();">Support this project</a> <span id="authorMsg"></span></p>
|
||||
<p><a target="_blank" href="https://github.com/dualshock-tools/dualshock-tools.github.io/commits/main/"><span class="ds-i18n">Version</span> 2.3</a> (2025-04-10) - <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>
|
||||
|
||||
118
lang/hu_hu.json
@@ -7,7 +7,7 @@
|
||||
"Connected to:": "Csatlakoztatva:",
|
||||
"Disconnect": "Lecsatlakozás",
|
||||
"Calibrate stick center": "Hüvelykujjkar középállásának újrakalibrálása",
|
||||
"Calibrate stick range": "Hüvelykujjkar tartományának újrakalibrálása",
|
||||
"Calibrate stick range": "Hüvelykujjkar tartományának újrakalibrálása",
|
||||
"Sections below are not useful, just some debug infos or manual commands": "Az alábbi funkciók nem kalibrálásra használatosak, csak néhány hibakeresési információt vagy kézi parancsot alkalmaznak",
|
||||
"NVS Status": "NVS státusz",
|
||||
"Unknown": "Ismeretlen",
|
||||
@@ -141,7 +141,7 @@
|
||||
"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 illeti:",
|
||||
"Please connect the device using a USB cable.": "Kérlek csatlakoztasd az eszközt USB kábel használatával.",
|
||||
"Please connect the device using a USB cable.": "Kérlek csatlakoztasd az eszközt USB kábel használatával.",
|
||||
"This DualSense controller has outdated firmware.": "Ennek a DualSense vezérlőnek elavult a firmware-e.",
|
||||
"Please update the firmware and try again.": "Kérlek frissítsd a firmware-t, és próbáld újra.",
|
||||
"Joystick Info": "Analógkar Információ",
|
||||
@@ -149,68 +149,68 @@
|
||||
"Err L:": "Hibaarány B:",
|
||||
"Check circularity": "Körkörösség ellenőrzése",
|
||||
|
||||
"Can I reset a permanent calibration to previous calibration?": "",
|
||||
"No.": "",
|
||||
"Can you overwrite a permanent calibration?": "",
|
||||
"Yes. Simply do another permanent calibration.": "",
|
||||
"Does this software resolve stickdrift?": "",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "",
|
||||
"This software will not fix stick drift on its own if you already experience that. What it will help with, is ensuring the new joystick(s) will function properly after replacing the old one(s) to work well with.": "",
|
||||
"I have noticed some controllers out of the box have worse factory calibration than if I would recalibrate them. Especially true for circularity of SCUF controllers with a unique shell.": "",
|
||||
"(Dualsense) Will updating the firmware reset calibration?": "",
|
||||
"After range calibration, joysticks always go in corners.": "",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "",
|
||||
"Please read the instructions.": "",
|
||||
"You have to rotate the joysticks before you press \"Done\".": "",
|
||||
"Make sure to touch the edges of the joystick frame and rotate slowly, preferably in each direction - clockwise and anti-clockwise.": "",
|
||||
"Only after you have done that, you click on \"Done\".": "",
|
||||
"Can I reset a permanent calibration to previous calibration?": "Visszaállíthatok egy végleges kalibrációt az előző kalibrációra?",
|
||||
"No.": "Nem",
|
||||
"Can you overwrite a permanent calibration?": "Felülírható egy végleges kalibráció?",
|
||||
"Yes. Simply do another permanent calibration.": "Igen. Egyszerűen végezz el egy újabb végleges kalibrációt.",
|
||||
"Does this software resolve stickdrift?": "Megoldja ez a szoftver a stick drift problémát?",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "A stick driftet fizikai hiba okozza; például szennyeződés, elhasználódott (kopott) potenciométer vagy bizonyos esetekben egy elhasználódott rugó.",
|
||||
"This software will not fix stick drift on its own if you already experience that. What it will help with, is ensuring the new joystick(s) will function properly after replacing the old one(s) to work well with.": "Ez a szoftver önmagában nem fogja megoldani a stick drift problémát, ha már tapasztalható. Amiben segít, az az, hogy biztosítsa az új hüvelykujjkarok megfelelő működését az elhasználódott hüvelykujjkarok cseréje után.",
|
||||
"I have noticed some controllers out of the box have worse factory calibration than if I would recalibrate them. Especially true for circularity of SCUF controllers with a unique shell.": "Észrevettem, hogy néhány kontroller gyárilag rosszabb kalibrációval érkezik, mint amit újrakalibrálva elérhetnék. Ez különösen igaz a SCUF kontrollerekre, amelyek egyedi burkolattal rendelkeznek.",
|
||||
"(Dualsense) Will updating the firmware reset calibration?": "(DualSense) A firmware frissítése visszaállítja a kalibrációt?",
|
||||
"After range calibration, joysticks always go in corners.": "Kalibráció után a hüvelykujjkarok mindig a sarkokba mennek.",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "Ez a probléma azért fordul elő, mert a tartománykalibrálás indítása után azonnal rákattintottál a \"Kész\" gombra.",
|
||||
"Please read the instructions.": "Kérlek, olvasd el az utasításokat!",
|
||||
"You have to rotate the joysticks before you press \"Done\".": "Forgasd el a hüvelykujjkarokat, mielőtt megnyomnád a \"Kész\" gombot.",
|
||||
"Make sure to touch the edges of the joystick frame and rotate slowly, preferably in each direction - clockwise and anti-clockwise.": "Ügyelj arra, hogy a hüvelykujjakrok érjenek el a keret széléig és annak mentén forgasd lassan, lehetőleg mindkét irányban - óramutató járásával megegyezően és ellentétesen is.",
|
||||
"Only after you have done that, you click on \"Done\".": "Csak miután ezt megtetted, azután kattints a \"Kész\" gombra.",
|
||||
|
||||
"Changes saved successfully": "",
|
||||
"Error while saving changes:": "",
|
||||
"Save changes permanently": "",
|
||||
"Reboot controller": "",
|
||||
"Changes saved successfully": "A változások sikeresen mentésre kerültek",
|
||||
"Error while saving changes:": "A változások mentése közben hiba lépett fel",
|
||||
"Save changes permanently": "A változtatások végleges mentése a kontrollerbe",
|
||||
"Reboot controller": "Kontroller újraindítása",
|
||||
|
||||
"Controller Info": "",
|
||||
"Debug Info": "",
|
||||
"Debug buttons": "",
|
||||
"Software": "",
|
||||
"Hardware": "",
|
||||
"Controller Info": "Információk a kontrollerről",
|
||||
"Debug Info": "Hibakeresési infomrációk",
|
||||
"Debug buttons": "Hibakeresési gombok",
|
||||
"Software": "Szoftver",
|
||||
"Hardware": "Hardver",
|
||||
|
||||
"FW Build Date": "",
|
||||
"FW Type": "",
|
||||
"FW Series": "",
|
||||
"FW Version": "",
|
||||
"FW Update": "",
|
||||
"FW Update Info": "",
|
||||
"SBL FW Version": "",
|
||||
"Venom FW Version": "",
|
||||
"Spider FW Version": "",
|
||||
"Touchpad FW Version": "",
|
||||
"FW Build Date": "FW kiadásának dátuma",
|
||||
"FW Type": "FW típusa",
|
||||
"FW Series": "FW széria",
|
||||
"FW Version": "FW verzió",
|
||||
"FW Update": "FW frissítés",
|
||||
"FW Update Info": "FW frissítési információ",
|
||||
"SBL FW Version": "SBL FW verzió",
|
||||
"Venom FW Version": "Venom FW verzió",
|
||||
"Spider FW Version": "Spider FW verzió",
|
||||
"Touchpad FW Version": "Tapipad FW verzió",
|
||||
|
||||
"Serial Number": "",
|
||||
"MCU Unique ID": "",
|
||||
"PCBA ID": "",
|
||||
"Battery Barcode": "",
|
||||
"VCM Left Barcode": "",
|
||||
"VCM Right Barcode": "",
|
||||
"HW Model": "",
|
||||
"Touchpad ID": "",
|
||||
"Bluetooth Address": "",
|
||||
"Show all": "",
|
||||
"Serial Number": "Szériaszám",
|
||||
"MCU Unique ID": "MCU egyedi azonosító",
|
||||
"PCBA ID": "PCBA azonosító",
|
||||
"Battery Barcode": "Akkumulátor vonalkód",
|
||||
"VCM Left Barcode": "Bal VCM vonalkód",
|
||||
"VCM Right Barcode": "Jobb VCM vonalód",
|
||||
"HW Model": "HW modell",
|
||||
"Touchpad ID": "Tapipad azonosító",
|
||||
"Bluetooth Address": "Bluetooth címzés",
|
||||
"Show all": "Mindet megjelenít",
|
||||
|
||||
"Finetune stick calibration": "",
|
||||
"(beta)": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
"Left stick": "",
|
||||
"Right stick": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Save": "",
|
||||
"Cancel": "",
|
||||
"Finetune stick calibration": "Karok finomkalibrálása",
|
||||
"(beta)": "(béta)",
|
||||
"This screen allows to finetune raw calibration data on your controller": "Ez a felület lehetővé teszi a kontroller nyers kalibrációs adatainak finomhangolását.",
|
||||
"Left stick": "Bal kar",
|
||||
"Right stick": "Jobb kar",
|
||||
"Center X": "X középállás",
|
||||
"Center Y": "Y középállás",
|
||||
"Save": "Mentés",
|
||||
"Cancel": "Mégse",
|
||||
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "A DualShock kontroller kalibráló felület jelenleg nem támogatja a DualSense Edge-et.",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Aktívan dolgozom a kompatibilitás hozzáadásán, a legnagyobb kihívást az adatok hüvelykujjkar modulokba történő tárolása jelenti.",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "Ha ez az eszköz hasznos volt számodra, vagy szeretnéd, hogy a DualSense Edge támogatása gyorsabban megérkezzen, kérlek, fontold meg a projekt támogatását",
|
||||
"Thank you for your generosity and support!": "Köszönöm nagylelkűségedet és támogatásodat!",
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -201,19 +201,19 @@
|
||||
"Bluetooth Address": "Adres Bluetooth",
|
||||
"Show all": "Pokaż wszystko",
|
||||
|
||||
"Finetune stick calibration": "",
|
||||
"(beta)": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
"Left stick": "",
|
||||
"Right stick": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Save": "",
|
||||
"Cancel": "",
|
||||
"Finetune stick calibration": "Dokładna kalibracja drążków",
|
||||
"(beta)": "(beta)",
|
||||
"This screen allows to finetune raw calibration data on your controller": "Te okienko pozwala na dokładniejszą zmianę w danych o kalibracji w twoim kontrolerze",
|
||||
"Left stick": "Lewy drążęk",
|
||||
"Right stick": "Prawy drążęk",
|
||||
"Center X": "Punkt X",
|
||||
"Center Y": "Punkt Y",
|
||||
"Save": "Zapisz",
|
||||
"Cancel": "Anuluj",
|
||||
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "Strona DualShock Calibration GUI nie wspiera jeszcze kontrolera Dualsesne Edge",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Aktywnie pracuję nad dodaniem kompatybilności, ale głównym wyzwaniem jest przechowywanie danych w modułach drążków.",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "Jeśli uważasz że to narzędzie było dla ciebie pomocne, lub chcesz aby wsparcie DualSense Edge pojawiło się szybciej, rozważ wsparcie projektu poprzez",
|
||||
"Thank you for your generosity and support!": "Dziękujemy za hojność i wsparcie!",
|
||||
"": ""
|
||||
}
|
||||
|
||||
214
lang/rs_rs.json
Normal file
@@ -0,0 +1,214 @@
|
||||
{
|
||||
".authorMsg": "- Srpski prevod: <a href='https://www.linkedin.com/in/lazar-dimitrijevic/'>Lazar Dimitrijevic</a> - <a href='https://github.com/lazardimi'>GitHub</a>.",
|
||||
"DualShock Calibration GUI": "Interfejs za kalibraciju DualShock",
|
||||
"Unsupported browser. Please use a web browser with WebHID support (e.g. Chrome).": "Nepodržani pretraživač. Molimo koristite veb pretraživač sa WebHID podrškom (npr. Chrome).",
|
||||
"Connect a DualShock 4 or a DualSense controller to your computer and press Connect.": "Povežite DualShock 4 ili DualSense kontroler na vaš računar i pritisnite 'Poveži'.",
|
||||
"Connect": "Poveži",
|
||||
"Connected to:": "Povezano sa:",
|
||||
"Disconnect": "Prekini vezu",
|
||||
"Calibrate stick center": "Kalibrišite centar džojstika",
|
||||
"Calibrate stick range": "Kalibrišite opseg džojstika",
|
||||
"Sections below are not useful, just some debug infos or manual commands": "Sekcije ispod nisu korisne, samo neke informacije za debagovanje ili ručne komande",
|
||||
"NVS Status": "Status NVS",
|
||||
"Unknown": "Nepoznato",
|
||||
"Debug buttons": "Dugmići za debagovanje",
|
||||
"Query NVS status": "Upitaj status NVS",
|
||||
"NVS unlock": "Otključaj NVS",
|
||||
"NVS lock": "Zaključaj NVS",
|
||||
"Fast calibrate stick center (OLD)": "Brza kalibracija centra džojstika (stara metoda)",
|
||||
"Stick center calibration": "Kalibracija centra džojstika",
|
||||
"Welcome": "Dobrodošli",
|
||||
"Step 1": "Korak 1",
|
||||
"Step 2": "Korak 2",
|
||||
"Step 3": "Korak 3",
|
||||
"Step 4": "Korak 4",
|
||||
"Completed": "Završeno",
|
||||
"Welcome to the stick center-calibration wizard!": "Dobrodošli u asistent za kalibraciju centra džojstika!",
|
||||
"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.": "Ovaj alat će vas voditi kroz ponovno centriranje analognih džojstika na vašem kontroleru. Sastoji se od četiri koraka: biće vam zatraženo da pomerate oba džojstika u određenom pravcu i zatim ih otpustite.",
|
||||
"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.": "Molimo vas da imate na umu da <i>jednom kada kalibracija počne, ne može se otkazati</i>. Ne zatvarajte ovu stranicu i ne prekidajte vezu sa kontrolerom dok se proces ne završi.",
|
||||
"Press <b>Start</b> to begin calibration.": "Pritisnite <b>Počni</b> da biste započeli kalibraciju.",
|
||||
"Please move both sticks to the <b>top-left corner</b> and release them.": "Molimo vas da pomerite oba džojstika u <b>gornji levi ugao</b> i zatim ih otpustite.",
|
||||
"When the sticks are back in the center, press <b>Continue</b>.": "Kada se džojstici vrate u centar, pritisnite <b>Nastavi</b>.",
|
||||
"Please move both sticks to the <b>top-right corner</b> and release them.": "Molimo vas da pomerite oba džojstika u <b>gornji desni ugao</b> i zatim ih otpustite.",
|
||||
"Please move both sticks to the <b>bottom-left corner</b> and release them.": "Molimo vas da pomerite oba džojstika u <b>donji levi ugao</b> i zatim ih otpustite.",
|
||||
"Please move both sticks to the <b>bottom-right corner</b> and release them.": "Molimo vas da pomerite oba džojstika u <b>donji desni ugao</b> i zatim ih otpustite.",
|
||||
"Calibration completed successfully!": "Kalibracija je uspešno završena!",
|
||||
"Next": "Sledeće",
|
||||
"Recentering the controller sticks. ": "Ponovno centriranje džojstika kontrolera. ",
|
||||
"Please do not close this window and do not disconnect your controller. ": "Molimo vas da ne zatvarate ovaj prozor i da ne prekidate vezu sa kontrolerom. ",
|
||||
"Range calibration": "Kalibracija opsega džojstika",
|
||||
"<b>The controller is now sampling data!</b>": "<b>Kontroler sada prikuplja podatke!</b>",
|
||||
"Rotate the sticks slowly to cover the whole range. Press \"Done\" when completed.": "Polako rotirajte džojstike kako biste pokrili ceo opseg. Pritisnite \"Završeno\" kada završite.",
|
||||
"Done": "Završeno",
|
||||
"Hi, thank you for using this software.": "Zdravo, hvala vam što koristite ovaj softver.",
|
||||
"If you're finding it helpful and you want to support my efforts, feel free to": "Ako vam je koristan i želite da podržite moj rad, slobodno",
|
||||
"buy me a coffee": "kupite mi kafu",
|
||||
"! :)": "! :)",
|
||||
"Do you have any suggestion or issue? Drop me a message via email or discord.": "Imate li neki predlog ili problem? Pošaljite mi poruku putem e-pošte ili Discord-a.",
|
||||
"Cheers!": "Želimo vam sve najbolje!",
|
||||
"Support this project": "Podržite ovaj projekat",
|
||||
|
||||
"unknown": "nepoznato",
|
||||
"original": "originalno",
|
||||
"clone": "klon",
|
||||
"locked": "zaključano",
|
||||
"unlocked": "otključano",
|
||||
"error": "greška",
|
||||
"Build Date": "Datum izrade",
|
||||
"HW Version": "Verzija hardvera",
|
||||
"SW Version": "Verzija softvera",
|
||||
"Device Type": "Tip uređaja",
|
||||
|
||||
"Range calibration completed": "Kalibracija opsega završena",
|
||||
"Range calibration failed: ": "Kalibracija opsega nije uspela: ",
|
||||
"Cannot unlock NVS": "Nije moguće otključati NVS",
|
||||
"Cannot relock NVS": "Nije moguće zaključati NVS",
|
||||
"Error 1": "Greška 1",
|
||||
"Error 2": "Greška 2",
|
||||
"Error 3": "Greška 3",
|
||||
"Stick calibration failed: ": "Kalibracija džojstika nije uspela: ",
|
||||
"Stick calibration completed": "Kalibracija džojstika završena",
|
||||
"NVS Lock failed: ": "Zaključavanje NVS nije uspelo: ",
|
||||
"NVS Unlock failed: ": "Otključavanje NVS nije uspelo: ",
|
||||
"Please connect only one controller at time.": "Molimo vas da povežete samo jedan kontroler istovremeno.",
|
||||
"Sony DualShock 4 V1": "Sony DualShock 4 V1",
|
||||
"Sony DualShock 4 V2": "Sony DualShock 4 V2",
|
||||
"Sony DualSense": "Sony DualSense",
|
||||
"Sony DualSense Edge": "Sony DualSense Edge",
|
||||
"Connected invalid device: ": "Povezan je nevažeći uređaj: ",
|
||||
"Calibration of the DualSense Edge is not currently supported.": "Kalibracija DualSense Edge trenutno nije podržana.",
|
||||
"The device appears to be a DS4 clone. All functionalities are disabled.": "Uređaj izgleda da je klon DS4. Sve funkcionalnosti su onemogućene.",
|
||||
"Error: ": "Greška: ",
|
||||
"My handle on discord is: the_al": "Moj Discord ID je: the_al",
|
||||
"Initializing...": "Inicijalizacija...",
|
||||
"Storing calibration...": "Čuvanje kalibracije...",
|
||||
"Sampling...": "Uzorak...",
|
||||
"Calibration in progress": "Kalibracija u toku",
|
||||
"Start": "Počni",
|
||||
"Continue": "Nastavi",
|
||||
"You can check the calibration with the": "Možete proveriti kalibraciju sa:",
|
||||
"Have a nice day :)": "Želimo vam prijatan dan :)",
|
||||
"Welcome to the Calibration GUI": "Dobrodošli u interfejs za kalibraciju",
|
||||
"Just few things to know before you can start:": "Samo nekoliko stvari koje treba da znate pre nego što počnete:",
|
||||
"This website is not affiliated with Sony, PlayStation & co.": "Ovaj sajt nije povezan sa Sony, PlayStation & ko.",
|
||||
"This service is provided without warranty. Use at your own risk.": "Ovaj servis se pruža bez garancije. Koristite na sopstveni rizik.",
|
||||
"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.": "Držite internu bateriju kontrolera povezanu i obezbedite da je dobro napunjena. Ako se baterija isprazni tokom operacije, kontroler će biti oštećen i postaće neupotrebljiv.",
|
||||
"Before doing the permanent calibration, try the temporary one to ensure that everything is working well.": "Pre nego što izvršite trajnu kalibraciju, probajte privremenu kako biste obezbedili da sve radi kako treba.",
|
||||
"Understood": "Razumem",
|
||||
"Version": "Verzija",
|
||||
"Frequently Asked Questions": "Često postavljana pitanja",
|
||||
"Close": "Zatvori",
|
||||
"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!": "Dobrodošli u sekciju ČPP! Ispod ćete naći odgovore na neka od najčešće postavljanih pitanja o ovom sajtu. Ako imate još pitanja ili vam je potrebna dodatna pomoć, slobodno me kontaktirajte direktno. Vaši komentari i pitanja su uvek dobrodošli!",
|
||||
"How does it work?": "Kako to radi?",
|
||||
"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.": "Iza kulisa, ovaj sajt je rezultat godinu dana posvećenog rada na reverznom inženjeringu DualShock kontrolera iz zadovoljstva/hobija od strane slučajnog čoveka na internetu.",
|
||||
"Through": "Kroz",
|
||||
"this research": "ovo istraživanje",
|
||||
", 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.": ", otkriveno je da postoje neke nedokumentovane komande na DualShock kontrolerima koje se mogu poslati preko USB-a i koriste se tokom procesa fabričkog sklapanja. Ako se ove komande pošalju, kontroler započinje ponovnu kalibraciju analognih džojstika.",
|
||||
"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.": "Iako primarni fokus ovog istraživanja nije bio na kalibraciji, postalo je očigledno da servis koji nudi ovu mogućnost može biti od velike koristi mnogim pojedincima. I evo nas.",
|
||||
"Does the calibration remain effective during gameplay on PS4/PS5?": "Da li kalibracija ostaje efektivna tokom igre na 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.": "Da, ako označite polje \"Zapiši promene trajno u kontroler\". U tom slučaju, kalibracija se upisuje direktno u firmware kontrolera. To obezbeđuje da ostane na mestu bez obzira na konzolu na koju je povezana.",
|
||||
"Is this an officially endorsed service?": "Da li je ovo zvanično odobren servis?",
|
||||
"No, this service is simply a creation by a DualShock enthusiast.": "Ne, ovaj servis je jednostavno kreacija entuzijaste za DualShock.",
|
||||
"Does this website detects if a controller is a clone?": "Da li ovaj sajt detektuje da li je kontroler klon?",
|
||||
"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.": "Da, trenutno samo DualShock4. Ovo se dogodilo jer sam slučajno kupio nekoliko klonova, proveo vreme identifikujući razlike i dodao ovu funkcionalnost da bih sprečio buduće obmane.",
|
||||
"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.": "Nažalost, klonovi se ne mogu kalibrisati, jer oni samo kopiraju ponašanje DualShock4 tokom normalne igre, a ne sve nedokumentovane funkcionalnosti.",
|
||||
"If you want to extend this detection functionality to DualSense, please ship me a fake DualSense and you'll see it in few weeks.": "Ako želite da proširite ovu funkcionalnost detekcije na DualSense, molimo vas da mi pošaljete lažnu DualSense i videćete je za nekoliko nedelja.",
|
||||
"What development is in plan?": "Koji razvoj je u planu?",
|
||||
"I maintain two separate to-do lists for this project, although the priority has yet to be established.": "Držim dve odvojene liste zadataka za ovaj projekat, iako prioritet još nije utvrđen.",
|
||||
"The first list is about enhancing support for DualShock4 and DualSense controllers:": "Prva lista se odnosi na poboljšanje podrške za DualShock4 i DualSense kontrolere:",
|
||||
"Implement calibration of L2/R2 triggers.": "Implementiraj kalibraciju L2/R2 okidača.",
|
||||
"Improve detection of clones, particularly beneficial for those seeking to purchase used controllers with assurance of authenticity.": "Poboljšaj detekciju klonova, što je posebno korisno za one koji žele da kupe polovne kontrolere sa obezbeđenjem autentičnosti.",
|
||||
"Enhance user interface (e.g. provide additional controller information)": "Poboljšaj korisnički interfejs (npr. obezbedi dodatne informacije o kontroleru)",
|
||||
"Add support for recalibrating IMUs.": "Dodaj podršku za ponovnu kalibraciju IMU.",
|
||||
"Additionally, explore the possibility of reviving non-functioning DualShock controllers (further discussion available on Discord for interested parties).": "Dodatno, istraži mogućnost oživljavanja nefunkcionalnih DualShock kontrolera (dodatna rasprava dostupna na Discord-u za zainteresovane).",
|
||||
"The second list contains new controllers I aim to support:": "Druga lista sadrži nove kontrolere koje ciljam da podržim:",
|
||||
"DualSense Edge": "DualSense Edge",
|
||||
"DualShock 3": "DualShock 3",
|
||||
"XBox Controllers": "XBox kontroleri",
|
||||
"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.": "Svaka od ovih zadataka predstavlja ogroman interes i značajnu investiciju vremena. Da bih dao kontekst, podrška za novi kontroler obično zahteva 6-12 meseci punog radnog vremena istraživanja, uz malo sreće.",
|
||||
"I love this service, it helped me! How can I contribute?": "Volim ovaj servis, pomogao mi je! Kako mogu da doprinesem?",
|
||||
"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:": "Drago mi je da ste našli ovo korisnim! Ako ste zainteresovani da doprinesete, evo nekoliko načina na koje možete da mi pomognete:",
|
||||
"Consider making a": "Razmislite o tome da napravite",
|
||||
"donation": "donaciju",
|
||||
"to support my late-night caffeine-fueled reverse-engineering efforts.": "da podržite moje napore reverznog inženjeringa kasno u noć podstaknute kofeinom.",
|
||||
"Ship me a controller you would love to add (send me an email for organization).": "Pošaljite mi kontroler koji biste voleli da dodate (pošaljite mi e-mail za organizaciju).",
|
||||
"Translate this website in your language": "Prevedite ovaj sajt na svoj jezik",
|
||||
", to help more people like you!": ", da biste pomogli više ljudi poput vas!",
|
||||
"This website uses analytics to improve the service.": "Ovaj sajt koristi analitiku za poboljšanje servisa.",
|
||||
"Board Model": "Model ploče",
|
||||
"This feature is experimental.": "Ova funkcionalnost je eksperimentalna.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Molimo vas da mi javite ako model ploče vašeg kontrolera nije tačno detektovan.",
|
||||
"Board model detection thanks to": "Detekcija modela ploče zahvaljujući",
|
||||
"Please connect the device using a USB cable.": "Molimo vas da povežete uređaj koristeći USB kabl.",
|
||||
"This DualSense controller has outdated firmware.": "Ovaj DualSense kontroler ima zastareli firmware.",
|
||||
"Please update the firmware and try again.": "Molimo vas da ažurirate firmware i pokušate ponovo.",
|
||||
"Joystick Info": "Informacije o džojstiku",
|
||||
"Err R:": "Greška D:",
|
||||
"Err L:": "Greška L:",
|
||||
"Check circularity": "Proveri kružnost",
|
||||
|
||||
"Can I reset a permanent calibration to previous calibration?": "Mogu li da resetujem trajnu kalibraciju na prethodnu kalibraciju?",
|
||||
"No.": "Ne.",
|
||||
"Can you overwrite a permanent calibration?": "Možete li da prepišete trajnu kalibraciju?",
|
||||
"Yes. Simply do another permanent calibration.": "Da. Jednostavno izvršite još jednu trajnu kalibraciju.",
|
||||
"Does this software resolve stickdrift?": "Da li ovaj softver rešava stickdrift?",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "Stickdrift je uzrokovan fizičkim defektom; naime, prljavštinom, istrošenim potenciometrom ili u nekim slučajevima istrošenom oprugom.",
|
||||
"This software will not fix stick drift on its own if you already experience that. What it will help with, is ensuring the new joystick(s) will function properly after replacing the old one(s) to work well with.": "Ovaj softver neće sam popraviti stickdrift ako ga već osećate. Ono što će pomoći jeste obezbeđivanje da novi džojstik(i) pravilno funkcionišu nakon zamene starih.",
|
||||
"I have noticed some controllers out of the box have worse factory calibration than if I would recalibrate them. Especially true for circularity of SCUF controllers with a unique shell.": "Primetio sam da neki kontroleri iz kutije imaju lošiju fabričku kalibraciju nego da sam ih ponovo kalibrisao. Posebno važi za kružnost SCUF kontrolera sa jedinstvenim omotačem.",
|
||||
"(Dualsense) Will updating the firmware reset calibration?": "(Dualsense) Da li ažuriranje firmvera resetuje kalibraciju?",
|
||||
"After range calibration, joysticks always go in corners.": "Nakon kalibracije opsega, džojstici uvek idu u uglove.",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "Ovaj problem se dešava jer ste pritisnuli \"Završeno\" odmah nakon pokretanja kalibracije opsega.",
|
||||
"Please read the instructions.": "Molimo vas da pročitate uputstva.",
|
||||
"You have to rotate the joysticks before you press \"Done\".": "Morate rotirati džojstike pre nego što pritisnete \"Završeno\".",
|
||||
"Make sure to touch the edges of the joystick frame and rotate slowly, preferably in each direction - clockwise and anti-clockwise.": "Obavezno dodirnite ivice okvira džojstika i rotirajte polako, po mogućstvu u oba pravca - u smeru kazaljke na satu i suprotno.",
|
||||
"Only after you have done that, you click on \"Done\".": "Tek nakon što to uradite, kliknite na \"Završeno\".",
|
||||
|
||||
"Changes saved successfully": "Promene uspešno sačuvane",
|
||||
"Error while saving changes:": "Greška prilikom čuvanja promena:",
|
||||
"Save changes permanently": "Sačuvaj promene trajno",
|
||||
"Reboot controller": "Ponovo pokreni kontroler",
|
||||
|
||||
"Controller Info": "Informacije o kontroleru",
|
||||
"Debug Info": "Informacije za debagovanje",
|
||||
"Debug buttons": "Dugmići za debagovanje",
|
||||
"Software": "Softver",
|
||||
"Hardware": "Hardver",
|
||||
|
||||
"FW Build Date": "Datum izrade firmvera",
|
||||
"FW Type": "Tip firmvera",
|
||||
"FW Series": "Serija firmvera",
|
||||
"FW Version": "Verzija firmvera",
|
||||
"FW Update": "Ažuriranje firmvera",
|
||||
"FW Update Info": "Informacije o ažuriranju firmvera",
|
||||
"SBL FW Version": "SBL verzija firmvera",
|
||||
"Venom FW Version": "Venom verzija firmvera",
|
||||
"Spider FW Version": "Spider verzija firmvera",
|
||||
"Touchpad FW Version": "Verzija firmvera za touchpad",
|
||||
|
||||
"Serial Number": "Serijski broj",
|
||||
"MCU Unique ID": "Jedinstveni ID MCU",
|
||||
"PCBA ID": "PCBA ID",
|
||||
"Battery Barcode": "Barkod baterije",
|
||||
"VCM Left Barcode": "VCM levi barkod",
|
||||
"VCM Right Barcode": "VCM desni barkod",
|
||||
"HW Model": "Model hardvera",
|
||||
"Touchpad ID": "ID touchpada",
|
||||
"Bluetooth Address": "Bluetooth adresa",
|
||||
"Show all": "Prikaži sve",
|
||||
|
||||
"Finetune stick calibration": "Fino podešavanje kalibracije džojstika",
|
||||
"(beta)": "(beta)",
|
||||
"This screen allows to finetune raw calibration data on your controller": "Ovaj ekran omogućava fino podešavanje sirovih podataka kalibracije na vašem kontroleru",
|
||||
"Left stick": "Levi džojstik",
|
||||
"Right stick": "Desni džojstik",
|
||||
"Center X": "Centar X",
|
||||
"Center Y": "Centar Y",
|
||||
"Save": "Sačuvaj",
|
||||
"Cancel": "Otkaži",
|
||||
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "DualShock Calibration GUI trenutno ne podržava DualSense Edge.",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Aktivno radim na dodavanju kompatibilnosti, glavni izazov je u čuvanju podataka u modulima džojstika.",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "Ako vam je ovaj alat bio koristan ili želite da podrška za DualSense Edge stigne brže, razmislite o podršci projekta sa",
|
||||
"Thank you for your generosity and support!": "Hvala vam na velikodušnosti i podršci!",
|
||||
"": ""
|
||||
}
|
||||
@@ -200,19 +200,19 @@
|
||||
"Bluetooth Address": "蓝牙地址",
|
||||
"Show all": "显示全部信息",
|
||||
|
||||
"Finetune stick calibration": "",
|
||||
"(beta)": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
"Left stick": "",
|
||||
"Right stick": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Save": "",
|
||||
"Cancel": "",
|
||||
"Finetune stick calibration": "微调摇杆校准",
|
||||
"(beta)": "测试版本",
|
||||
"This screen allows to finetune raw calibration data on your controller": "此界面允许微调手柄上的原始校准数据",
|
||||
"Left stick": "左摇杆电压(mV)",
|
||||
"Right stick": "右摇杆电压(mV)",
|
||||
"Center X": "X轴中心",
|
||||
"Center Y": "Y轴中心",
|
||||
"Save": "保存",
|
||||
"Cancel": "取消",
|
||||
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "DualShock校准GUI目前不支持DualSense Edge。",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "我正在积极致力于兼容,主要研究将数据存储到摇杆模块中。",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "如果这个工具对你有所帮助,或者你希望看到对于DualSense Edge的支持更快到来,请考虑支持这个项目。",
|
||||
"Thank you for your generosity and support!": "感谢您的慷慨和支持!",
|
||||
"": ""
|
||||
}
|
||||
|
||||
21
site.webmanifest
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "Dualshock Calibration GUI",
|
||||
"short_name": "DS Tools",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/web-app-manifest-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
},
|
||||
{
|
||||
"src": "/web-app-manifest-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "maskable"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"display": "standalone"
|
||||
}
|
||||
BIN
web-app-manifest-192x192.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
web-app-manifest-512x512.png
Normal file
|
After Width: | Height: | Size: 91 KiB |