From 5a30e5755eb9829259338ebf79a4636ed1f5dd00 Mon Sep 17 00:00:00 2001 From: 57Ricardo <92279766+57Ricardo@users.noreply.github.com> Date: Sun, 13 Apr 2025 22:24:24 +0100 Subject: [PATCH 001/210] PT_PT Updated Corrections --- lang/pt_pt.json | 128 ++++++++++++++++++++++++------------------------ 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/lang/pt_pt.json b/lang/pt_pt.json index ed9a5fa..12af638 100644 --- a/lang/pt_pt.json +++ b/lang/pt_pt.json @@ -1,48 +1,48 @@ { ".authorMsg": "- Tradução para o Português de Portugal realizada por ricardo_57 :)", - "DualShock Calibration GUI": "GUI de Calibração DualShock", + "DualShock Calibration GUI": "GUI Calibração de DualShock", "Unsupported browser. Please use a web browser with WebHID support (e.g. Chrome).": "Navegador não suportado. Por favor, use um navegador de web com suporte ao WebHID (por exemplo, Chrome).", "Connect": "Conectar", "Connected to:": "Conectado a:", "Disconnect": "Desconectar", - "Calibrate stick center": "Calibrar centro do Analogico", - "Calibrate stick range": "Calibrar o alcançe do Analogico", + "Calibrate stick center": "Calibrar o centro do joystick", + "Calibrate stick range": "Calibrar o alcançe do joystick", "Sections below are not useful, just some debug infos or manual commands": "As seções abaixo não são úteis, apenas algumas informações de depuração ou comandos manuais", "NVS Status": "Status NVS", "Unknown": "Desconhecido", "Query NVS status": "Consultar status NVS", "NVS unlock": "Desbloquear NVS", "NVS lock": "Bloquear NVS", - "Fast calibrate stick center (OLD)": "Calibrar rapidamente o centro do Analogico (ANTIGO)", - "Stick center calibration": "Calibração do centro do Analogico", + "Fast calibrate stick center (OLD)": "Calibrar rapidamente o centro dos joysticks (ANTIGO)", + "Stick center calibration": "Calibração do centro do joystick", "Welcome": "Bem-vindo", "Step 1": "Passo 1", "Step 2": "Passo 2", "Step 3": "Passo 3", "Step 4": "Passo 4", "Completed": "Cocluído", - "Welcome to the stick center-calibration wizard!": "Bem-vindo ao assistente de calibração de centro dos analógicos!", - "This tool will guide you in re-centering the analog sticks of your controller. It consists of four steps: you will be asked to move both sticks in a direction and release them.": "Esta ferramenta irá guiá-lo na centragem dos analógicos de controlador. Consiste em quatro etapas: será solicitado que mova ambos os joysticks numa direção e que os solte.", - "Please be aware that, once the calibration is running, it cannot be canceled. Do not close this page or disconnect your controller until it is completed.": "Esteja ciente de que, uma vez que a calibração estiver a ser executada, não pode ser cancelada. Não feche esta página ou desconecte o controlador, até que a calibração esteja concluída.", + "Welcome to the stick center-calibration wizard!": "Bem-vindo ao assistente de calibração de centro dos joysticks!", + "This tool will guide you in re-centering the analog sticks of your controller. It consists of four steps: you will be asked to move both sticks in a direction and release them.": "Esta ferramenta irá guiá-lo para recentrar os joysticks do controlador. Consiste em quatro etapas: onde será solicitado que mova ambos os joysticks numa direção e que os solte.", + "Please be aware that, once the calibration is running, it cannot be canceled. Do not close this page or disconnect your controller until it is completed.": "Esteja ciente de que, quando a calibração iniciar, não poderá ser cancelada. Não feche esta página ou desconecte o controlador, até que a calibração estar concluída.", "Press Start to begin calibration.": "Pressione Iniciar para começar a calibração.", - "Please move both sticks to the top-left corner and release them.": "Mova ambos os analógicos para o canto superior esquerdo e solte-os.", - "When the sticks are back in the center, press Continue.": "Quando os analógicos voltarem ao centro, pressione Continuar.", - "Please move both sticks to the top-right corner and release them.": "Mova ambos os analógicos para o canto superior direito e solte-os.", - "Please move both sticks to the bottom-left corner and release them.": "Mova ambos os analógicos para o canto inferior esquerdo e solte-os.", - "Please move both sticks to the bottom-right corner and release them.": "Mova ambos os analógicos para o canto inferior direito e solte-os.", + "Please move both sticks to the top-left corner and release them.": "Mova ambos os joysticks para o canto superior esquerdo e solte-os.", + "When the sticks are back in the center, press Continue.": "Quando os joysticks voltarem ao centro, pressione Continuar.", + "Please move both sticks to the top-right corner and release them.": "Mova ambos os joysticks para o canto superior direito e solte-os.", + "Please move both sticks to the bottom-left corner and release them.": "Mova ambos os joysticks para o canto inferior esquerdo e solte-os.", + "Please move both sticks to the bottom-right corner and release them.": "Mova ambos os joysticks para o canto inferior direito e solte-os.", "Calibration completed successfully!": "Calibração concluída com sucesso!", "Next": "Próximo", - "Recentering the controller sticks. ": "Recentrando os analógicos do controlador. ", + "Recentering the controller sticks. ": "A recentrar os manípulos do controlador", "Please do not close this window and do not disconnect your controller. ": "Por favor, não feche esta janela e não desconecte o seu controlador. ", "Range calibration": "Calibração de alcançe", "The controller is now sampling data!": "O controlador está agora a recolher dados!", "Rotate the sticks slowly to cover the whole range. Press \"Done\" when completed.": "Rode os joysticks lentamente para cobrir todo o alcance. Pressione \"Concluído\" quando terminar.", "Done": "Concluído", "Hi, thank you for using this software.": "Olá, obrigado por usar este software.", - "If you're finding it helpful and you want to support my efforts, feel free to": "Se esta a achar útil e quiser suportar os meus esforços, sinta-se à vontade para", - "buy me a coffee": "me comprar um café", + "If you're finding it helpful and you want to support my efforts, feel free to": "Se está a achar útil e quiser suportar-me os esforços, sinta-se à vontade para", + "buy me a coffee": "comprar-me um café", "! :)": "! :)", - "Do you have any suggestion or issue? Drop me a message via email or discord.": "Tem alguma sugestão ou problema? Envie-me uma mensagem por e-mail ou discord.", + "Do you have any suggestion or issue? Drop me a message via email or discord.": "Tem alguma sugestão ou problema? Envie-me mensagem por e-mail ou discord.", "Cheers!": "Saúde!", "Support this project": "Apoie este projeto", "unknown": "desconhecido", @@ -62,70 +62,70 @@ "Error 1": "Erro 1", "Error 2": "Erro 2", "Error 3": "Erro 3", - "Stick calibration failed: ": "Calibração de analógico falhou: ", - "Stick calibration completed": "Calibração de analógico completa", + "Stick calibration failed: ": "Calibração do joystick falhou: ", + "Stick calibration completed": "Calibração do joystick completa", "NVS Lock failed: ": "Bloqueio de NVS falhou: ", "NVS Unlock failed: ": "Desbloqueio de NVS falhou: ", - "Please connect only one controller at time.": "Por favor, conecte apenas um controlador de cada vez.", + "Please connect only one controller at time.": "Por favor, ligue apenas um controlador de cada vez.", "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: ": "Dispositivo conectado inválido: ", + "Connected invalid device: ": "Dispositivo inválido ligado: ", "The device appears to be a DS4 clone. All functionalities are disabled.": "O dispositivo parece ser um clone do DS4. Todas as funcionalidades estão desabilitadas.", "Error: ": "Erro: ", "My handle on discord is: the_al": "Meu nome de utilizador no Discord é: the_al", "Initializing...": "Iniciando...", - "Storing calibration...": "Salvando calibração...", + "Storing calibration...": "Armazenando a calibração...", "Sampling...": "Amostragem...", "Calibration in progress": "Calibração em progresso", "Start": "Inicio", "Continue": "Continuar", - "You can check the calibration with the": "Pode conferir a calibração com", + "You can check the calibration with the": "Pode verificar a calibração com o", "Have a nice day :)": "Tenha um bom dia :)", - "Welcome to the Calibration GUI": "Bem vindo a interface de calibração", - "Just few things to know before you can start:": "Algumas coisas para saber antes de começar:", - "This website is not affiliated with Sony, PlayStation & co.": "Este site não está afiliado com a Sony, PlayStation & co.", - "This service is provided without warranty. Use at your own risk.": "Este serviço não oferece proporciona garantia. Use-o a sua conta e risco.", - "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.": "Mantenha a bateria interna do controlador conectada e assegure que esteja bem carregada. Se a bateria terminar durante as operações, o controlador será danificado e ficará inutilizável.", - "Before doing the permanent calibration, try the temporary one to ensure that everything is working well.": "Antes de fazer a calibração permanente, teste a temporária para garantir que está tudo a funcionar corretamente.", + "Welcome to the Calibration GUI": "Bem-vindo à GUI de Calibração", + "Just few things to know before you can start:": "Algumas coisas que precisa de saber antes de começar:", + "This website is not affiliated with Sony, PlayStation & co.": "Este website não é afiliado à Sony, PlayStation & co.", + "This service is provided without warranty. Use at your own risk.": "Este serviço não oferece garantia. Utilize por sua conta e risco.", + "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.": "Mantenha a bateria interna do controlador conectada e certefique-se que esteja bem carregada. Se a bateria se esgotar durante as operações, o controlador será danificado e ficará inutilizável.", + "Before doing the permanent calibration, try the temporary one to ensure that everything is working well.": "Antes de fazer a calibração permanente, experimente a temporária para garantir que está tudo a funcionar corretamente.", "Understood": "Entendido", "Version": "Versão", "Frequently Asked Questions": "Perguntas Frequentes", "Close": "Fechar", - "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!": "Bem-vindo à seção de Perguntas Frequentes! Abaixo, encontrará as respostas para algumas das perguntas mais comuns sobre este site. Se tiver outras dúvidas ou precisar de mais assistência, sinta-se à vontade para entrar em contato diretamente comigo. Seus comentários e perguntas são sempre bem-vindos!", + "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!": "Bem-vindo à seção de Perguntas Frequentes (F.A.Q.)! Abaixo, encontrará as respostas para algumas das perguntas mais comuns sobre este site. Caso tenha alguma outra dúvida ou necessite de mais assistência, sinta-se à vontade para entrar em contato diretamente comigo. O seu feedback e perguntas são sempre bem-vindos!!", "How does it work?": "Como funciona?", - "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.": "Nos bastidores, este site é o resultado de um ano de esforço dedicado à engenharia reversa nos controladores DualShock por diversão/hobby de um rapaz aleatorio na internet.", + "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.": "Nos bastidores, este site é o resultado de um ano de esforço dedicado à engenharia inversa nos controladores DualShock por diversão/hobby de um tipo aleatório na internet.", "Through": "Através", - "this research": "desta pesquisa", - ", 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.": ", foi descoberto que existem alguns comandos não documentados nos controladores DualShock que podem ser enviados via USB e são usados durante o processo de montagem na fábrica. Se esses comandos forem enviados, o controlador inicia a recalibração dos joysticks analógicos.", - "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.": "Embora o foco principal desta pesquisa não fosse inicialmente centrado na recalibração, ficou evidente que um serviço a oferecer esta capacidade poderia beneficiar bastante várias pessoas. E assim, aqui estamos.", + "this research": "esta pesquisa", + ", 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.": ", descobriu-se que existem alguns comandos não documentados nos controladores DualShock que podem ser enviados via USB e são utilizados durante o processo de montagem de fábrica. Se estes comandos forem enviados, o controlador inicia a recalibração dos joysticks.", + "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.": "Embora o foco principal desta pesquisa não fosse inicialmente centrado na recalibração, tornou-se evidente que um serviço que oferecesse esta capacidade poderia beneficiar imenso inúmeras pessoas. E, portanto, aqui estamos.", "Does the calibration remain effective during gameplay on PS4/PS5?": "A calibração permanece eficaz durante o jogo no 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.": "Sim, se marcar a caixa de seleção \"Gravar mudanças permanentemente no controlador\". Nesse caso, a calibração é gravada diretamente no firmware do controlador. Isso garante que ela permaneça no lugar, independentemente da consola ao qual se conecta.", + "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.": "Sim, se marcar a caixa de seleção \"Gravar mudanças permanentemente no controlador\". Nesse caso, a calibração é gravada diretamente no firmware do controlador. Isso garante que ela permaneça no lugar, independentemente da consola à qual está ligado.", "Is this an officially endorsed service?": "Este é um serviço oficialmente aprovado?", "No, this service is simply a creation by a DualShock enthusiast.": "Não, este serviço é apenas uma criação de um entusiasta do DualShock.", "Does this website detect if a controller is a clone?": "Este site detecta se um controlador é um 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.": "Sim, apenas DualShock4 no momento. Isso aconteceu porque comprei alguns clones por acidente, passei tempo identificando as diferenças e adicionei essa funcionalidade para evitar futuras decepções.", - "Unfortunately, the clones cannot be calibrated anyway, because they only clone the behavior of a DualShock4 during normal gameplay, not all the undocumented functionalities.": "Infelizmente, os clones não podem ser calibrados de qualquer maneira, porque eles apenas clonam o comportamento do DualShock4 durante o jogo normal, não todas as funcionalidades documentadas.", - "If you want to extend this detection functionality to DualSense, please ship me a fake DualSense and you'll see it in few weeks.": "Se você quiser estender esta funcionalidade de detecção ao DualSense, por favor, envie-me um DualSense falso e você verá isso em algumas semanas.", + "Unfortunately, the clones cannot be calibrated anyway, because they only clone the behavior of a DualShock4 during normal gameplay, not all the undocumented functionalities.": "Infelizmente, os clones não podem ser calibrados de qualquer forma, porque apenas clonam o comportamento do DualShock4 durante o jogo normal, não todas as funcionalidades não documentadas.", + "If you want to extend this detection functionality to DualSense, please ship me a fake DualSense and you'll see it in few weeks.": "Se você quiser estender esta funcionalidade de detecção ao DualSense, por favor, envie-me um DualSense falso e verá isso em algumas semanas.", "What development is in plan?": "Quais são os planos de desenvolvimento?", "I maintain two separate to-do lists for this project, although the priority has yet to be established.": "Mantenho duas listas de tarefas separadas para este projeto, embora a prioridade ainda não tenha sido estabelecida.", "The first list is about enhancing support for DualShock4 and DualSense controllers:": "A primeira lista é sobre aprimorar o suporte para os controladores DualShock4 e DualSense:", "Implement calibration of L2/R2 triggers.": "Implementar a calibração dos gatilhos L2/R2.", "Improve detection of clones, particularly beneficial for those seeking to purchase used controllers with assurance of authenticity.": "Melhorar a detecção de clones, especialmente benéfico para aqueles que procuram comprar controladores usados com garantia de autenticidade.", - "Enhance user interface (e.g. provide additional controller information)": "Melhorar a interface do usuário (por exemplo, fornecer informações adicionais do controlador)", + "Enhance user interface (e.g. provide additional controller information)": "Melhorar a interface do utilizador (por exemplo, fornecer informações adicionais do controlador)", "Add support for recalibrating IMUs.": "Adicionar suporte para recalibrar IMUs.", "Additionally, explore the possibility of reviving non-functioning DualShock controllers (further discussion available on Discord for interested parties).": "Adicionalmente, explore a possibilidade de reviver controladores DualShock que não estão funcionando (mais discussão disponível no Discord para partes interessadas).", - "The second list contains new controllers I aim to support:": "A segunda lista contém novos controladores que pretendo vir a suportar:", + "The second list contains new controllers I aim to support:": "A segunda lista contém novos controladores que pretendo suportar:", "DualSense Edge": "DualSense Edge", "DualShock 3": "DualShock 3", "XBox Controllers": "Controladores 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.": "Cada uma dessas tarefas apresenta um imenso interesse e um investimento significativo de tempo. Para contextualizar, dar suporte a um novo controlador geralmente exige de 6 a 12 meses de pesquisa em tempo integral, além de um golpe de sorte.", - "I love this service, it helped me! How can I contribute?": "Adoro este serviço, ele ajudou-me! Como posso contribuir?", - "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:": "Fico feliz em saber que você achou isso útil! Se estiver interessado em contribuir, aqui estão algumas formas de me ajudar:", + "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.": "Cada uma dessas tarefas apresenta um imenso interesse e um investimento de tempo significativo. Para contextualizar, dar suporte a um novo controlador geralmente exige de 6 a 12 meses de pesquisa a tempo inteiro, além de um golpe de sorte.", + "I love this service, it helped me! How can I contribute?": "Adorei este serviço, ajudou-me! Como posso contribuir?", + "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:": "Fico feliz por saber que isto foi útil para si! Se estiver interessado em contribuir, estão aqui algumas formas de me ajudar:", "Consider making a": "Considere fazer uma ", "donation": "doação", - "to support my late-night caffeine-fueled reverse-engineering efforts.": "para apoiar os meus esforços de engenharia reversa impulsionados pelo meu combustivel de cafeina noturna.", + "to support my late-night caffeine-fueled reverse-engineering efforts.": "para apoiar os meus esforços de engenharia inversa impulsionados pelo meu combustivel de cafeina noturna.", "Ship me a controller you would love to add (send me an email for organization).": "Envie-me um controlador que você adoraria adicionar (envie-me um e-mail para organização).", "Translate this website in your language": "Traduza este site para o seu idioma", ", to help more people like you!": ", para ajudar mais pessoas como você!", @@ -141,28 +141,28 @@ "Err R:": "Erro D:", "Err L:": "Erro E:", "Check circularity": "Verificar circularidade", - "Can I reset a permanent calibration to previous calibration?": "Posso fazer reset na calibração permanente para a calibração anterior?", + "Can I reset a permanent calibration to previous calibration?": "Posso repor uma calibração permanente para uma calibração anterior?", "No.": "Não.", "Can you overwrite a permanent calibration?": "É possível substituir uma calibração permanente?", - "Yes. Simply do another permanent calibration.": "Sim. É simples, apenas realize outra calibração permanente", - "Does this software resolve stickdrift?": "Esse software resolve o drift do analogico?", - "Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "O drift nos analógicos é causado por um defeito físico, podendo ser sujidades, potenciômetro gasto ou em alguns casos, uma mola gasta.", - "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.": "Este software não resolve o drift por si só, se você já tiver com o problema. O que irá ajudar é a garantir que o(s) novo(s) joystick(s) funcione(m) corretamente, após a substituição do(s) antigo(s).", - "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.": "Notei que alguns controladores novos têm calibração de fábrica pior do que se eu a recalibrasse. Especialmente para a circularidade dos controladores SCUF com carcaça unica.", - "(Dualsense) Will updating the firmware reset calibration?": "(Dualsense) A atualização do firmware redefinirá a calibração?", + "Yes. Simply do another permanent calibration.": "Sim. Basta fazer outra calibração permanente", + "Does this software resolve stickdrift?": "Esse software resolve o drift do joystick?", + "Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "O drift nos joysticks é causado por um defeito físico; nomeadamente, sujidades, potenciômetro desgastado ou, em alguns casos, uma mola desgastada.", + "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.": "Este software não resolve o drift por si só, se já tiver com o problema. O que irá ajudar é a garantir que o(s) novo(s) joystick(s) funcione(m) corretamente, após a substituição do(s) antigo(s).", + "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.": "Notei que alguns controladores prontos a usar têm uma calibração de fábrica pior do que se os recalibrasse. Especialmente verdade para a circularidade dos controladores SCUF com um invólucro único.", + "(Dualsense) Will updating the firmware reset calibration?": "(Dualsense) A atualização do firmware irá repor a calibração?", "After range calibration, joysticks always go in corners.": "Após a calibração do alcance, os joysticks vão sempre para os cantos.", - "This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "Este problema acontece porque você clicou \"Concluído\" logo após iniciar a calibração de alcance.", + "This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "Este problema ocorre porque clicou em \"Concluído\" imediatamente após iniciar uma calibração de alcance.", "Please read the instructions.": "Por favor, leia as instruções.", - "You have to rotate the joysticks before you press \"Done\".": "Você precisa rodar os analógicos antes de clicar \"Concluído\"", - "Make sure to touch the edges of the joystick frame and rotate slowly, preferably in each direction - clockwise and anti-clockwise.": "Certifique-se que toca nos limites do Joystick e rode lentamente, prefrerencialmente em cada direção - relógio e contra-relógio.", - "Only after you have done that, you click on \"Done\".": "Somente depois de fazer isto, clique em \"Concluído\"", + "You have to rotate the joysticks before you press \"Done\".": "Tem de rodar os joysticks antes de clicar \"Concluído\"", + "Make sure to touch the edges of the joystick frame and rotate slowly, preferably in each direction - clockwise and anti-clockwise.": "Certifique-se que toca nas extremidades da estrutura do Joystick e gire lentamente, de prefrerencia em ambas as direções - no sentido dos ponteiros do relógio e no sentido contrário.", + "Only after you have done that, you click on \"Done\".": "So depois de o fazer, clique em \"Concluído\".", "Changes saved successfully": "Alterações salvas com sucesso", "Error while saving changes:": "Erro ao salvar as alterações.", "Save changes permanently": "Salvar alterações permanentemente.", "Reboot controller": "Reiniciar controlador", "(beta)": "(beta)", "Externally: by applying +1.8V directly to the visible test point without opening the controller": "Externamente: aplicando +1,8 V diretamente ao ponto de teste visível sem abrir o controlador", - "Internally: by soldering a wire from a +1.8V source to the write-protect TP.": "Internamente: soldando um fio duma fonte de +1,8 V ao TP de proteção contra gravação.", + "Internally: by soldering a wire from a +1.8V source to the write-protect TP.": "Internamente: soldadura de um fio de uma fonte de +1,8 V ao TP de proteção contra a escrita.", "Battery Barcode": "Código de barras da bateria", "Bluetooth Address": "Endereço Bluetooth", "Calibration is being stored in the stick modules.": " A calibration esta a ser gravada nos modulos dos joysticks.", @@ -183,14 +183,14 @@ "For more info or help, feel free to reach out on Discord.": "Para mais informações ou ajuda, sinta-se a vontade para me contactar no Discord.", "HW Model": "Modelo de HW", "Hardware": "Hardware", - "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Estou a trabalhar ativamente para adicionar compatibilidade. O principal desafio está no armazenamento de dados nos módulos dos Joysticks.", - "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": "Se esta ferramenta foi útil para si ou deseja que o suporte ao DualSense Edge chegue mais rápido, considere apoiar o projeto com um", + "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Estou a trabalhar ativamente para adicionar compatibilidade. O principal desafio está no armazenamento de dados nos módulos Joysticks.", + "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": "Se esta ferramenta lhe foi útil ou pretende que o suporte do DualSense Edge chegue mais rapidamente, considere apoiar o projeto com um", "Left stick": "Joystick esquerdo", "MCU Unique ID": "ID Unico da MCU", "More details and images": "Mais detalhes e imagens", "PCBA ID": "", - "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "Conecte um controlador DualShock 4, DualSense ou DualSense Edge ao seu computador e pressione Conectar.", - "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "Observação: os módulos do DS Edge não podem ser calibrados somente por software. Para armazenar uma calibração personalizada na memória interna do stick, é necessária uma modificação de hardware.", + "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "Ligue um comando DualShock 4, DualSense ou DualSense Edge ao seu computador e prima conectar.", + "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "Nota: os módulos do DS Edge não podem ser calibrados apenas por software. Para armazenar uma calibração personalizada na memória interna do joystick, é necessária uma modificação de hardware.", "Right stick": "joystick direito", "SBL FW Version": "Versão de FW SBL", "Save": "Gravar", @@ -200,16 +200,16 @@ "Spider FW Version": "Versão Spider FW", "Support for calibrating DualSense Edge stick modules is now available as an experimental feature.": "O suporte para calibração dos módulos DualSense Edge está agora disponível como recurso experimental.", "Thank you for your generosity and support!": "Obrigado pela sua generosidade e apoio!", - "The DualShock Calibration GUI does not currently support the DualSense Edge.": "A interface de calibração GUI do DualShock não oferece suporte ao DualSense Edge no momento.", - "This involves temporarily disabling write protection by applying +1.8V to a specific test point on each module.": "Isto envolve desabilitar temporariamente a proteção contra gravação aplicando +1,8 V a um ponto de teste específico em cada módulo.", - "This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "Isto é apenas para usuários avançados. Se não tiver certeza do que está a fazer, por favor, não tente.", - "This screen allows to finetune raw calibration data on your controller": "Esta tela permite ajustar os dados de calibração brutos no seu controlador", + "The DualShock Calibration GUI does not currently support the DualSense Edge.": "A (GUI) de calibração do DualShock atualmente não suporta o DualSense Edge.", + "This involves temporarily disabling write protection by applying +1.8V to a specific test point on each module.": "Isto envolve desativar temporariamente a proteção contra gravação aplicando +1,8 V para um ponto de teste específico em cada módulo", + "This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "Isto é apenas para utilizadores avançados. Se não tem a certeza do que está a fazer, por favor, não tente.", + "This screen allows to finetune raw calibration data on your controller": "Este ecrã permite ajustar os dados de calibração brutos no seu controlador", "Touchpad FW Version": "Versão FW do Touchpad", "Touchpad ID": "Touchpad ID", "VCM Left Barcode": "Codigo de barras VCM Esquerda", "VCM Right Barcode": "Codigo de barras VCM Direita", "Venom FW Version": "Versão de FW Venom", - "We are not responsible for any damage caused by attempting this modification.": "Não nos responsabilizamos por quaisquer dano causado ​​pela tentativa desta modificação.", + "We are not responsible for any damage caused by attempting this modification.": "Não nos responsabilizamos por quaisquer dano causado ​​ao tentar usar esta modificação.", "You can do this in two ways:": "Pode fazer isto de duas formas", "here": "Aqui", "": "" From 2365585964e92499b9c5c552fac5400c68203316 Mon Sep 17 00:00:00 2001 From: NotYourAverageGamer <104248676+NotYourAverageGamer@users.noreply.github.com> Date: Fri, 18 Apr 2025 16:55:31 +1000 Subject: [PATCH 002/210] fix: dualsense battery status - fixes battery charge level percentage: previously it would show "100%" and charging for dualsense controllers that were not 100%. - this would also fix the battery safety check if implemented (doesn't look like `can_use_tool` is being used?) --- core.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core.js b/core.js index 45c9804..9fa493b 100644 --- a/core.js +++ b/core.js @@ -1462,7 +1462,7 @@ function update_nvs_changes_status(new_value) { function update_battery_status(bat_capacity, cable_connected, is_charging, is_error) { var bat_txt = bat_percent_to_text(bat_capacity, is_charging); - var can_use_tool = (bat_capacity >= 30 && cable_connected && !is_error); + var can_use_tool = (bat_capacity >= 30 && cable_connected && !is_error); // is this even being used? if(bat_txt != last_bat_txt) { $("#d-bat").html(bat_txt); @@ -1561,7 +1561,7 @@ function process_ds_input(data) { if(bat_status == 0) { bat_capacity = Math.min(bat_charge * 10 + 5, 100); } else if(bat_status == 1) { - bat_capacity = Math.max(bat_charge * 10 + 5, 100); + bat_capacity = Math.min(bat_charge * 10 + 5, 100); is_charging = true; cable_connected = true; } else if(bat_status == 2) { From 9c2d1b45ed9c36d807548155236c5e08573c76cb Mon Sep 17 00:00:00 2001 From: dualshock-tools Date: Thu, 24 Apr 2025 12:21:56 +0200 Subject: [PATCH 003/210] Improved DS4 hw mapping --- core.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core.js b/core.js index 9fa493b..f5207b9 100644 --- a/core.js +++ b/core.js @@ -92,7 +92,7 @@ function ds4_hw_to_bm(hw_ver) { return "JDM-040"; } else if((a > 0x80 && a < 0x84) || a == 0x93) { return "JDM-020"; - } else if(a == 0xa4 || a == 0x90) { + } else if(a == 0xa4 || a == 0x90 || a == 0xa0) { return "JDM-050"; } else if(a == 0xb0) { return "JDM-055 (Scuf?)"; @@ -108,7 +108,7 @@ function ds4_hw_to_bm(hw_ver) { function is_rare(hw_ver) { a = hw_ver >> 8; b = a >> 4; - return ((b == 7 && a > 0x74) || (b == 9 && a != 0x93 && a != 0x90) || a == 0xa0); + return ((b == 7 && a > 0x74) || (b == 9 && a != 0x93 && a != 0x90)); } async function ds4_info() { From 92b48f281cc7751eb1b17ff6315d1413ba019ab8 Mon Sep 17 00:00:00 2001 From: 57Ricardo <92279766+57Ricardo@users.noreply.github.com> Date: Sun, 27 Apr 2025 16:10:42 +0100 Subject: [PATCH 004/210] Part with no translation Previously this segment was not been translated ! --- lang/pt_pt.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lang/pt_pt.json b/lang/pt_pt.json index 12af638..cd04044 100644 --- a/lang/pt_pt.json +++ b/lang/pt_pt.json @@ -20,10 +20,10 @@ "Step 2": "Passo 2", "Step 3": "Passo 3", "Step 4": "Passo 4", - "Completed": "Cocluído", + "Completed": "Concluído", "Welcome to the stick center-calibration wizard!": "Bem-vindo ao assistente de calibração de centro dos joysticks!", - "This tool will guide you in re-centering the analog sticks of your controller. It consists of four steps: you will be asked to move both sticks in a direction and release them.": "Esta ferramenta irá guiá-lo para recentrar os joysticks do controlador. Consiste em quatro etapas: onde será solicitado que mova ambos os joysticks numa direção e que os solte.", - "Please be aware that, once the calibration is running, it cannot be canceled. Do not close this page or disconnect your controller until it is completed.": "Esteja ciente de que, quando a calibração iniciar, não poderá ser cancelada. Não feche esta página ou desconecte o controlador, até que a calibração estar concluída.", + "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.": "Esta ferramenta irá guiá-lo para recentrar os joysticks do controlador. Consiste em quatro etapas: onde será solicitado que mova ambos os joysticks numa direção e que os solte.", + "Please be aware that, once the calibration is running, it cannot be canceled. Do not close this page or disconnect your controller until is completed.": "Esteja ciente de que, quando a calibração iniciar, não poderá ser cancelada. Não feche esta página ou desconecte o controlador, até que a calibração estar concluída.", "Press Start to begin calibration.": "Pressione Iniciar para começar a calibração.", "Please move both sticks to the top-left corner and release them.": "Mova ambos os joysticks para o canto superior esquerdo e solte-os.", "When the sticks are back in the center, press Continue.": "Quando os joysticks voltarem ao centro, pressione Continuar.", From 96b48019ef3c97d56a6b1b72d68fd2f1a76383e2 Mon Sep 17 00:00:00 2001 From: dualshock-tools Date: Fri, 2 May 2025 11:14:34 +0200 Subject: [PATCH 005/210] Fix ds4 calibration check --- core.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core.js b/core.js index f5207b9..1863300 100644 --- a/core.js +++ b/core.js @@ -342,7 +342,10 @@ async function ds4_calibrate_sticks_end() { try { // Write await device.sendFeatureReport(0x90, alloc_req(0x90, [2,1,1])) - if(data.getUint32(0, false) != 0x91010101 || data2.getUint32(0, false) != 0x920101FF) { + + data = await device.receiveFeatureReport(0x91); + data2 = await device.receiveFeatureReport(0x92); + if(data.getUint32(0, false) != 0x91010102 || data2.getUint32(0, false) != 0x92010101) { d1 = dec2hex32(data.getUint32(0, false)); d2 = dec2hex32(data2.getUint32(0, false)); la("ds4_calibrate_sticks_end_failed", {"d1": d1, "d2": d2}); From 8cce06308dcb0589f80c3c3408bb1e3763b841e0 Mon Sep 17 00:00:00 2001 From: dualshock-tools Date: Fri, 2 May 2025 11:15:22 +0200 Subject: [PATCH 006/210] Bump to version 2.4 --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 8d7e970..cb08f30 100644 --- a/index.html +++ b/index.html @@ -824,7 +824,7 @@ dl.row dd { font-family: monospace; }
-

Version 2.3 (2025-04-10) - Support this project 

+

Version 2.4 (2025-05-02) - Support this project 

  • From c65f5bb9c034a51ed4b4c3a6d031f1c1d865ac51 Mon Sep 17 00:00:00 2001 From: cxd000000675 <45525626+cxd000000675@users.noreply.github.com> Date: Mon, 12 May 2025 16:27:08 +0800 Subject: [PATCH 007/210] Add files via upload --- lang/zh_cn.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lang/zh_cn.json b/lang/zh_cn.json index 0882f46..357865e 100644 --- a/lang/zh_cn.json +++ b/lang/zh_cn.json @@ -1,5 +1,5 @@ { - ".authorMsg": "- 中文翻译由 Eythavon 坩埚钳特大号 提供(请不要相信镜像网站上的任何广告!)", + ".authorMsg": "- 中文翻译由 Eythavon 坩埚钳特大号 修手柄的小丁 提供", "DualShock Calibration GUI": "手柄校准界面", "Unsupported browser. Please use a web browser with WebHID support (e.g. Chrome).": "浏览器不支持。请使用支持 WebHID 的浏览器 (例如 Chrome)。", "Connect": "连接", @@ -198,19 +198,22 @@ "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!": "感谢您的慷慨和支持!", - "Externally: by applying +1.8V directly to the visible test point without opening the controller": "外部: 无需打开手柄,直接对可见的测试点施加+1.8V", + "Externally: by applying +1.8V directly to the visible test point without opening the controller.": "外部:无需打开手柄,直接对可见的测试点施加+1.8V", "Internally: by soldering a wire from a +1.8V source to the write-protect TP.": "内部:将+1.8V电源与写保护测试点飞线连接。", "Calibration is being stored in the stick modules.": "校准数据正在存储于摇杆模块中。", "DualSense Edge Calibration": "DualSense Edge校准", "For more info or help, feel free to reach out on Discord.": "需要更多信息或帮助,请随时在Discord上联系。", "More details and images": "更多细节和图像", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "请将DualShock 4、DualSense 或 DualSense Edge 手柄连接到您的电脑,然后按下“连接”。", - "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "请注意:DS Edge上的摇杆模块无法仅通过软件进行校准。要在摇杆的内部存储器上存储自定义校准,需要进行硬件修改。", + "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.": "请注意:DS Edge上的摇杆模块无法仅通过软件进行校准。", + "To store a custom calibration on the stick's internal memory, a hardware modification is required.": "要在摇杆的内部存储器上存储自定义校准,需要进行硬件修改。", "Support for calibrating DualSense Edge stick modules is now available as an experimental feature.": "现已提供校准 DualSense Edge 摇杆模块的支持,此功能为实验性功能。", "This involves temporarily disabling write protection by applying +1.8V to a specific test point on each module.": "这涉及到通过对每个模块上的特定测试点施加+1.8V电压来暂时禁用写保护。", "This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "这仅适用于高级用户。如果您不确定自己在做什么,请不要尝试。", "We are not responsible for any damage caused by attempting this modification.": "我们不对因尝试此修改而造成的任何损坏负责。", "You can do this in two ways:": "你可以用两种方式来做", "here": "这里", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "如果校准没有永久生效,请检查硬件模块的接线。", + "Please disconnect and reconnect the controller.": "请断开并重新连接手柄。", "": "" } From 5816ef960b2024cd9485a62bd4f1e3f5f8be0249 Mon Sep 17 00:00:00 2001 From: cxd000000675 <45525626+cxd000000675@users.noreply.github.com> Date: Mon, 12 May 2025 16:35:45 +0800 Subject: [PATCH 008/210] Add files via upload --- lang/zh_tw.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lang/zh_tw.json b/lang/zh_tw.json index 07e586c..99ecd63 100644 --- a/lang/zh_tw.json +++ b/lang/zh_tw.json @@ -1,5 +1,5 @@ { - ".authorMsg": "- 中文(繁體)翻譯由 JEFF 提供", + ".authorMsg": "- 中文(繁體)翻譯由 JEFF 修手柄的小丁 提供", "DualShock Calibration GUI": "手把校準界面", "Unsupported browser. Please use a web browser with WebHID support (e.g. Chrome).": "不支持的瀏覽器。請使用支持 WebHID 的瀏覽器 (例如 Chrome)。", "Connect": "連結", @@ -161,7 +161,7 @@ "Save changes permanently": "永久保存更改", "Reboot controller": "重啟手把", "(beta)": "測試版本", - "Externally: by applying +1.8V directly to the visible test point without opening the controller": "外部方式:直接將 +1.8V 電壓施加到可見的測試點,無需打開手把", + "Externally: by applying +1.8V directly to the visible test point without opening the controller.": "外部方式:直接將 +1.8V 電壓施加到可見的測試點,無需打開手把", "Internally: by soldering a wire from a +1.8V source to the write-protect TP.": "內部方式:從 +1.8V 電源點焊接一條導線至寫入保護測試點(TP)", "Battery Barcode": "", "Bluetooth Address": "", @@ -190,7 +190,8 @@ "More details and images": "更多詳情與圖片", "PCBA ID": "PCBA ID", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "請將 DualShock 4、DualSense 或 DualSense Edge 手把連接到您的電腦,然後按下「連接」。", - "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "請注意:DS Edge 的搖桿模組無法僅透過軟體進行校正。若要將自訂校正資料儲存到搖桿的內部記憶體中,則需要進行硬體修改。", + "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.": "請註意:DS Edge上的搖桿模塊無法僅通過軟件進行校準。", + "To store a custom calibration on the stick's internal memory, a hardware modification is required.": "要在搖桿的內部存儲器上存儲自定義校準,需要進行硬件修改。", "Right stick": "右搖桿電壓(mV)", "SBL FW Version": "SBL韌體版本", "Save": "儲存", @@ -211,6 +212,8 @@ "Venom FW Version": "", "We are not responsible for any damage caused by attempting this modification.": "我們不對嘗試此修改所造成的任何損壞負責。", "You can do this in two ways:": "您可以透過兩種方式來完成這項操作:", - "here": "", + "here": "這裏", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "如果校準沒有永久生效,請檢查硬件模塊的接線。", + "Please disconnect and reconnect the controller.": "請斷開並重新連接手把。", "": "" } \ No newline at end of file From 0212e3baaab3523363bb60e22c1a19b04589cd58 Mon Sep 17 00:00:00 2001 From: dualshock-tools Date: Sat, 17 May 2025 08:59:59 +0200 Subject: [PATCH 009/210] add missing translation entries --- lang/ar_ar.json | 2 ++ lang/bg_bg.json | 2 ++ lang/cz_cz.json | 2 ++ lang/de_de.json | 2 ++ lang/es_es.json | 2 ++ lang/fr_fr.json | 2 ++ lang/hu_hu.json | 2 ++ lang/it_it.json | 6 +++--- lang/jp_jp.json | 2 ++ lang/ko_kr.json | 2 ++ lang/nl_nl.json | 2 ++ lang/pl_pl.json | 2 ++ lang/pt_br.json | 2 ++ lang/pt_pt.json | 8 +++++--- lang/rs_rs.json | 2 ++ lang/ru_ru.json | 2 ++ lang/tr_tr.json | 2 ++ lang/ua_ua.json | 4 +++- 18 files changed, 41 insertions(+), 7 deletions(-) diff --git a/lang/ar_ar.json b/lang/ar_ar.json index 7fede4c..647ff9b 100644 --- a/lang/ar_ar.json +++ b/lang/ar_ar.json @@ -197,10 +197,12 @@ "Finetune stick calibration": "", "For more info or help, feel free to reach out on Discord.": "", "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "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": "", "Left stick": "", "More details and images": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Right stick": "", "Save": "", diff --git a/lang/bg_bg.json b/lang/bg_bg.json index 6444bc6..d1613f3 100644 --- a/lang/bg_bg.json +++ b/lang/bg_bg.json @@ -184,12 +184,14 @@ "HW Model": "", "Hardware": "", "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "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": "", "Left stick": "", "MCU Unique ID": "", "More details and images": "", "PCBA ID": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Right stick": "", "SBL FW Version": "", diff --git a/lang/cz_cz.json b/lang/cz_cz.json index c38e13a..0f5b32d 100644 --- a/lang/cz_cz.json +++ b/lang/cz_cz.json @@ -173,6 +173,7 @@ "Hardware": "", "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.": "", "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "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": "", "Left stick": "", "MCU Unique ID": "", @@ -182,6 +183,7 @@ "Only after you have done that, you click on \"Done\".": "", "PCBA ID": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Please read the instructions.": "", "Reboot controller": "", diff --git a/lang/de_de.json b/lang/de_de.json index 5c61851..1ec776a 100644 --- a/lang/de_de.json +++ b/lang/de_de.json @@ -197,10 +197,12 @@ "FW Version": "", "For more info or help, feel free to reach out on Discord.": "", "HW Model": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "MCU Unique ID": "", "More details and images": "", "PCBA ID": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "SBL FW Version": "", "Spider FW Version": "", diff --git a/lang/es_es.json b/lang/es_es.json index 2042dd5..631a3b9 100644 --- a/lang/es_es.json +++ b/lang/es_es.json @@ -173,6 +173,7 @@ "Hardware": "", "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.": "", "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "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": "", "Left stick": "", "MCU Unique ID": "", @@ -182,6 +183,7 @@ "Only after you have done that, you click on \"Done\".": "", "PCBA ID": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Please read the instructions.": "", "Reboot controller": "", diff --git a/lang/fr_fr.json b/lang/fr_fr.json index f7f8b08..91e1ba7 100644 --- a/lang/fr_fr.json +++ b/lang/fr_fr.json @@ -173,6 +173,7 @@ "Hardware": "", "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.": "", "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "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": "", "Left stick": "", "MCU Unique ID": "", @@ -182,6 +183,7 @@ "Only after you have done that, you click on \"Done\".": "", "PCBA ID": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Please read the instructions.": "", "Reboot controller": "", diff --git a/lang/hu_hu.json b/lang/hu_hu.json index 400ed32..81a76dc 100644 --- a/lang/hu_hu.json +++ b/lang/hu_hu.json @@ -212,5 +212,7 @@ "We are not responsible for any damage caused by attempting this modification.": "Nem vállalunk felelősséget az ezen módosítás megkísérlése által okozott károkért.", "You can do this in two ways:": "Ezt kétféleképpen teheted meg:", "here": "itt", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", + "Please disconnect and reconnect the controller.": "", "": "" } \ No newline at end of file diff --git a/lang/it_it.json b/lang/it_it.json index e4fe71f..441cc6a 100644 --- a/lang/it_it.json +++ b/lang/it_it.json @@ -197,7 +197,6 @@ "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Sto lavorando attivamente per renderlo compatibile, ma la sfida principale rimane salvare i dati nei moduli degli stick.", "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": "Se questo strumento ti è stato utile o desideri che il supporto per il DualSense Edge arrivi più rapidamente, considera di supportare il progetto con una", "Thank you for your generosity and support!": "Grazie per la tua generosità e per il supporto!", - "Externally: by applying +1.8V directly to the visible test point without opening the controller": "Esternamente: applicando +1.8V direttamente al test point visibile senza aprire il controller", "Internally: by soldering a wire from a +1.8V source to the write-protect TP.": "Internamente: saldando un filo da un test point a +1.8V al test point di write-protect.", "Calibration is being stored in the stick modules.": "Sto salvando la calibrazione nei moduli degli stick.", @@ -214,6 +213,7 @@ "We are not responsible for any damage caused by attempting this modification.": "Non siamo responsabili per eventuali danni causati dal tentativo di questa modifica.", "You can do this in two ways:": "Puoi farlo in due modi:", "here": "qui", - + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", + "Please disconnect and reconnect the controller.": "", "": "" -} +} \ No newline at end of file diff --git a/lang/jp_jp.json b/lang/jp_jp.json index 1e6934f..768c071 100644 --- a/lang/jp_jp.json +++ b/lang/jp_jp.json @@ -180,6 +180,7 @@ "HW Model": "", "Hardware": "", "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.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "MCU Unique ID": "", "Make sure to touch the edges of the joystick frame and rotate slowly, preferably in each direction - clockwise and anti-clockwise.": "", "More details and images": "", @@ -187,6 +188,7 @@ "Only after you have done that, you click on \"Done\".": "", "PCBA ID": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Please read the instructions.": "", "Reboot controller": "", diff --git a/lang/ko_kr.json b/lang/ko_kr.json index 4a1a014..d65f029 100644 --- a/lang/ko_kr.json +++ b/lang/ko_kr.json @@ -196,10 +196,12 @@ "Finetune stick calibration": "", "For more info or help, feel free to reach out on Discord.": "", "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "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": "", "Left stick": "", "More details and images": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Right stick": "", "Save": "", diff --git a/lang/nl_nl.json b/lang/nl_nl.json index 4d08b23..fd16b61 100644 --- a/lang/nl_nl.json +++ b/lang/nl_nl.json @@ -173,6 +173,7 @@ "Hardware": "", "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.": "", "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "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": "", "Left stick": "", "MCU Unique ID": "", @@ -182,6 +183,7 @@ "Only after you have done that, you click on \"Done\".": "", "PCBA ID": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Please read the instructions.": "", "Reboot controller": "", diff --git a/lang/pl_pl.json b/lang/pl_pl.json index d72ac51..9e6466a 100644 --- a/lang/pl_pl.json +++ b/lang/pl_pl.json @@ -204,8 +204,10 @@ "Calibration is being stored in the stick modules.": "", "DualSense Edge Calibration": "", "For more info or help, feel free to reach out on Discord.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "More details and images": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Support for calibrating DualSense Edge stick modules is now available as an experimental feature.": "", "This involves temporarily disabling write protection by applying +1.8V to a specific test point on each module.": "", diff --git a/lang/pt_br.json b/lang/pt_br.json index d5aed79..d05bff3 100644 --- a/lang/pt_br.json +++ b/lang/pt_br.json @@ -184,12 +184,14 @@ "HW Model": "", "Hardware": "", "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "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": "", "Left stick": "", "MCU Unique ID": "", "More details and images": "", "PCBA ID": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Right stick": "", "SBL FW Version": "", diff --git a/lang/pt_pt.json b/lang/pt_pt.json index cd04044..8633e8d 100644 --- a/lang/pt_pt.json +++ b/lang/pt_pt.json @@ -88,7 +88,7 @@ "This website is not affiliated with Sony, PlayStation & co.": "Este website não é afiliado à Sony, PlayStation & co.", "This service is provided without warranty. Use at your own risk.": "Este serviço não oferece garantia. Utilize por sua conta e risco.", "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.": "Mantenha a bateria interna do controlador conectada e certefique-se que esteja bem carregada. Se a bateria se esgotar durante as operações, o controlador será danificado e ficará inutilizável.", - "Before doing the permanent calibration, try the temporary one to ensure that everything is working well.": "Antes de fazer a calibração permanente, experimente a temporária para garantir que está tudo a funcionar corretamente.", + "Before doing the permanent calibration, try the temporary one to ensure that everything is working well.": "Antes de fazer a calibração permanente, experimente a temporária para garantir que está tudo a funcionar corretamente.", "Understood": "Entendido", "Version": "Versão", "Frequently Asked Questions": "Perguntas Frequentes", @@ -174,7 +174,6 @@ "Debug buttons": "Botões de depuração", "DualSense Edge Calibration": "Calibração Dualsense Edge", "FW Build Date": "Data de compilação do FW", - "FW Series": "", "FW Type": "Tipo de FW", "FW Update": "Atualização de FW", "FW Update Info": "Info da atualização de FW", @@ -188,7 +187,6 @@ "Left stick": "Joystick esquerdo", "MCU Unique ID": "ID Unico da MCU", "More details and images": "Mais detalhes e imagens", - "PCBA ID": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "Ligue um comando DualShock 4, DualSense ou DualSense Edge ao seu computador e prima conectar.", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "Nota: os módulos do DS Edge não podem ser calibrados apenas por software. Para armazenar uma calibração personalizada na memória interna do joystick, é necessária uma modificação de hardware.", "Right stick": "joystick direito", @@ -212,5 +210,9 @@ "We are not responsible for any damage caused by attempting this modification.": "Não nos responsabilizamos por quaisquer dano causado ​​ao tentar usar esta modificação.", "You can do this in two ways:": "Pode fazer isto de duas formas", "here": "Aqui", + "FW Series": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", + "PCBA ID": "", + "Please disconnect and reconnect the controller.": "", "": "" } \ No newline at end of file diff --git a/lang/rs_rs.json b/lang/rs_rs.json index c090969..6a8baae 100644 --- a/lang/rs_rs.json +++ b/lang/rs_rs.json @@ -203,8 +203,10 @@ "Calibration is being stored in the stick modules.": "", "DualSense Edge Calibration": "", "For more info or help, feel free to reach out on Discord.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "More details and images": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Support for calibrating DualSense Edge stick modules is now available as an experimental feature.": "", "This involves temporarily disabling write protection by applying +1.8V to a specific test point on each module.": "", diff --git a/lang/ru_ru.json b/lang/ru_ru.json index c689a15..a6b6427 100644 --- a/lang/ru_ru.json +++ b/lang/ru_ru.json @@ -184,12 +184,14 @@ "HW Model": "", "Hardware": "", "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "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": "", "Left stick": "", "MCU Unique ID": "", "More details and images": "", "PCBA ID": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Right stick": "", "SBL FW Version": "", diff --git a/lang/tr_tr.json b/lang/tr_tr.json index 9b0ec3b..9bdd85a 100644 --- a/lang/tr_tr.json +++ b/lang/tr_tr.json @@ -184,12 +184,14 @@ "HW Model": "", "Hardware": "", "I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", "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": "", "Left stick": "", "MCU Unique ID": "", "More details and images": "", "PCBA ID": "", "Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "", + "Please disconnect and reconnect the controller.": "", "Please note: the stick modules on the DS Edge cannot be calibrated via software alone.To store a custom calibration on the stick's internal memory, a hardware modification is required.": "", "Right stick": "", "SBL FW Version": "", diff --git a/lang/ua_ua.json b/lang/ua_ua.json index 28d36d8..b90c0f7 100644 --- a/lang/ua_ua.json +++ b/lang/ua_ua.json @@ -212,5 +212,7 @@ "We are not responsible for any damage caused by attempting this modification.": "Ми не несемо відповідальності за будь-які пошкодження, спричинені спробами цієї модифікації.", "You can do this in two ways:": "Ви можете зробити це двома способами:", "here": "тут", + "If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "", + "Please disconnect and reconnect the controller.": "", "": "" -} +} \ No newline at end of file From 901b93ee5d114157cd0b9a4eedef1a525bc30641 Mon Sep 17 00:00:00 2001 From: dualshock-tools Date: Sat, 17 May 2025 17:38:56 +0200 Subject: [PATCH 010/210] Improve DualSense Edge support; v2.5 --- core.js | 253 ++++++++++++++++++++++++++++++++++++++++-------- index.html | 8 +- lang/ar_ar.json | 10 +- lang/bg_bg.json | 10 +- lang/cz_cz.json | 10 +- lang/de_de.json | 10 +- lang/es_es.json | 10 +- lang/fr_fr.json | 10 +- lang/hu_hu.json | 10 +- lang/it_it.json | 14 ++- lang/jp_jp.json | 10 +- lang/ko_kr.json | 10 +- lang/nl_nl.json | 10 +- lang/pl_pl.json | 10 +- lang/pt_br.json | 10 +- lang/pt_pt.json | 10 +- lang/rs_rs.json | 10 +- lang/ru_ru.json | 10 +- lang/tr_tr.json | 10 +- lang/ua_ua.json | 10 +- lang/zh_cn.json | 12 ++- lang/zh_tw.json | 24 +++-- 22 files changed, 410 insertions(+), 71 deletions(-) diff --git a/core.js b/core.js index 1863300..1af8f62 100644 --- a/core.js +++ b/core.js @@ -205,10 +205,10 @@ async function ds5_flash() { async function ds5_edge_flash() { la("ds5_edge_flash"); try { - await ds5_edge_flash_modules(); - await ds5_reset(); - show_popup("" + l("Changes saved successfully") + ".

    " + l("If the calibration is not stored permanently, please double-check the wirings of the hardware mod.") + "
    " + l("Please disconnect and reconnect the controller."), true); - await disconnect(); + ret = await ds5_edge_flash_modules(); + if(ret) { + show_popup("" + l("Changes saved successfully") + ".

    " + l("If the calibration is not stored permanently, please double-check the wirings of the hardware mod."), true); + } } catch(error) { show_popup(l("Error while saving changes: ") + toString(error)); } @@ -492,6 +492,22 @@ async function ds4_getbdaddr() { } } +async function ds5_edge_get_barcode() { + try { + await device.sendFeatureReport(0x80, alloc_req(0x80, [21,34])); + await new Promise(r => setTimeout(r, 100)); + + data = lf("ds5_edge_get_barcode", await device.receiveFeatureReport(0x81)); + td = new TextDecoder() + + r_bc = td.decode(data.buffer.slice(21, 21+17)); + l_bc = td.decode(data.buffer.slice(40, 40+17)); + return [r_bc, l_bc]; + } catch(e) { + return "error"; + } +} + async function ds5_getbdaddr() { try { await device.sendFeatureReport(0x80, alloc_req(0x80, [9,2])); @@ -531,7 +547,30 @@ async function ds5_system_info(base, num, length, decode = true) { return l("Unknown"); } -async function ds5_info() { +function ds5_edge_color(x) { + const colorMap = { + '00' : 'White', + '01' : 'Black', + '02' : 'Cosmic Red', + '03' : 'Nova Pink', + '04' : 'Galactic Purple', + '05' : 'Starlight Blue', + '06' : 'Gray Camo', + '07' : 'Volcanic Red', + '08' : 'Sterling Silver', + '09' : 'Chroma Indigo', + '30' : '30Th Anniversary', + 'Z1' : 'God of War Ragnarok', + 'Z3' : 'Astro Bot' + }; + + const colorCode = x.slice(4, 6); + const colorName = colorMap[colorCode] || 'Unknown'; + return colorName; +} + + +async function ds5_info(is_edge) { try { const view = lf("ds5_info", await device.receiveFeatureReport(0x20)); @@ -559,14 +598,23 @@ async function ds5_info() { b_info = ' ' + ''; + c_info = ' ' + + ''; - append_info(l("Serial Number"), await ds5_system_info(1, 19, 17), "hw"); + serial_number = await ds5_system_info(1, 19, 17); + append_info(l("Serial Number"), serial_number, "hw"); append_info_extra(l("MCU Unique ID"), await ds5_system_info(1, 9, 9, false), "hw"); append_info_extra(l("PCBA ID"), await ds5_system_info(1, 17, 14), "hw"); append_info_extra(l("Battery Barcode"), await ds5_system_info(1, 24, 23), "hw"); append_info_extra(l("VCM Left Barcode"), await ds5_system_info(1, 26, 16), "hw"); append_info_extra(l("VCM Right Barcode"), await ds5_system_info(1, 28, 16), "hw"); - append_info(l("Board Model"), ds5_hw_to_bm(hwinfo) + b_info, "hw"); + + if(is_edge) { + color = ds5_edge_color(serial_number); + append_info(l("Color"), color + c_info, "hw"); + } else { + append_info(l("Board Model"), ds5_hw_to_bm(hwinfo) + b_info, "hw"); + } append_info(l("FW Build Date"), build_date + " " + build_time, "fw"); append_info_extra(l("FW Type"), "0x" + dec2hex(fwtype), "fw"); @@ -592,6 +640,7 @@ async function ds5_info() { nvstatus = await ds5_nvstatus(); if(nvstatus == 0) await ds5_nvlock(); + bd_addr = await ds5_getbdaddr(); append_info(l("Bluetooth Address"), bd_addr, "hw"); } catch(e) { @@ -602,6 +651,18 @@ async function ds5_info() { return true; } +async function ds5_load_modules_info() { + empty = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + // DS Edge + sticks_barcode = await ds5_edge_get_barcode(); + for(i=0;i<2;i++) { + if(sticks_barcode[i] == empty) + sticks_barcode[i] = l("Unknown") + } + append_info(l("Left Module Barcode"), sticks_barcode[1], "fw"); + append_info(l("Right Module Barcode"), sticks_barcode[0], "fw"); +} + async function ds5_calibrate_sticks_begin() { la("ds5_calibrate_sticks_begin"); var err = l("Range calibration failed: "); @@ -863,36 +924,124 @@ async function ds5_nvlock() { } } +async function wait_until_written(expected) { + for(it=0;it<10;it++) { + data = await device.receiveFeatureReport(0x81) + + again = false + for(i=0;i setTimeout(r, 50)); + } + return false; +} + +function set_edge_progress(score) { + $("#dsedge-progress").css({ "width": score + "%" }) +} + async function ds5_edge_flash_modules() { la("ds5_edge_flash_modules"); var modal = null; + + if (device == null) + return; + try { modal = new bootstrap.Modal(document.getElementById('edgeProgressModal'), {}) modal.show(); + set_edge_progress(0); - 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)); + // Reload data, this ensures correctly writing data in the controller + await ds5_nvunlock() + await new Promise(r => setTimeout(r, 50)); + set_edge_progress(5); - 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)); + data = await ds5_get_inmemory_module_data() + await new Promise(r => setTimeout(r, 50)); + set_edge_progress(10); + await write_finetune_data(data) + + await new Promise(r => setTimeout(r, 100)); + set_edge_progress(15); + + await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 6, 0])) + await new Promise(r => setTimeout(r, 200)); + ret = await wait_until_written([21, 6, 2]) + if(!ret) { + throw new Error(l("Cannot unlock") + " " + l("left module")); } - await new Promise(r => setTimeout(r, 500)); - if(device != null) { - data = await device.receiveFeatureReport(0x81) + + await new Promise(r => setTimeout(r, 100)); + + set_edge_progress(30); + await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 5, 0])) + await new Promise(r => setTimeout(r, 200)); + ret = await wait_until_written([21, 5, 2]) + if(!ret) { + throw new Error(l("Cannot store data into") + " " + l("left module")); } - await new Promise(r => setTimeout(r, 1000)); + + await new Promise(r => setTimeout(r, 100)); + + set_edge_progress(45); + await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 6, 1])) + await new Promise(r => setTimeout(r, 200)); + ret = await wait_until_written([21, 6, 2]) + if(!ret) { + throw new Error(l("Cannot unlock") + " " + l("right module")); + } + + await new Promise(r => setTimeout(r, 100)); + set_edge_progress(60); + await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 5, 1])) + await new Promise(r => setTimeout(r, 200)); + ret = await wait_until_written([21, 5, 2]) + if(!ret) { + throw new Error(l("Cannot store data into") + " " + l("right module")); + } + + set_edge_progress(75); + + await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 4, 0, 0])) + await new Promise(r => setTimeout(r, 200)); + ret = await wait_until_written([21, 4, 2]) + if(!ret) { + throw new Error(l("Cannot lock") + " " + l("left module")); + } + + set_edge_progress(90); + + await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 4, 1, 0])) + await new Promise(r => setTimeout(r, 200)); + ret = await wait_until_written([21, 4, 2]) + if(!ret) { + throw new Error(l("Cannot lock") + " " + l("right module")); + } + + set_edge_progress(100); + + await new Promise(r => setTimeout(r, 100)); + await ds5_nvlock() + + await new Promise(r => setTimeout(r, 250)); modal.hide(); - await ds5_reset(); + modal = null; + await new Promise(r => setTimeout(r, 300)); + + return true; } catch(e) { modal.hide(); - + modal = null; await new Promise(r => setTimeout(r, 500)); - return show_popup(l("NVS Unlock failed: ") + e); + show_popup("Error: " + e); + return false; } } @@ -1058,30 +1207,46 @@ async function ds5_finetune() { refresh_finetune() } -async function read_finetune_data() { - await device.sendFeatureReport(0x80, alloc_req(0x80, [12,2])) +async function ds5_get_inmemory_module_data() { + if (mode == 2) { + // DualSense + await device.sendFeatureReport(0x80, alloc_req(0x80, [12, 2])) + } else if(mode == 3) { + // DualSense Edge + await device.sendFeatureReport(0x80, alloc_req(0x80, [12, 4])) + } var data = await device.receiveFeatureReport(0x81) var cmd = data.getUint8(0, true); var p1 = data.getUint8(1, true); var p2 = data.getUint8(2, true); var p3 = data.getUint8(3, true); - if(cmd != 129 || p1 != 12 || p2 != 2 || p3 != 2) - { + + if(cmd != 129 || p1 != 12 || (p2 != 2 && p2 != 4) || p3 != 2) + return null; + + var out = [] + for(i=0;i<12;i++) + out.push(data.getUint16(4+i*2, true)) + return out; +} + +async function read_finetune_data() { + data = ds5_get_inmemory_module_data(); + if(data == null) { finetune_close(); show_popup("ERROR: Cannot read calibration data"); return null; } - var out = [] - for(i=0;i<12;i++) - out.push(data.getUint16(4+i*2, true)) - last_written_finetune_data = out - return out; + + last_written_finetune_data = data; + return data; } async function write_finetune_data(data) { if (data.length != 12) { return; } + if (data == last_written_finetune_data) { return; } @@ -1614,21 +1779,24 @@ async function continue_connection(report) { } else if(device.productId == 0x0ce6) { $("#infoshowall").show() $("#ds5finetune").show() - if(await ds5_info()) { + if(await ds5_info(false)) { connected = true; mode = 2; devname = l("Sony DualSense"); device.oninputreport = process_ds_input; } } else if(device.productId == 0x0df2) { - $("#infoshowall").hide() - $("#ds5finetune").hide() - if(await ds5_info()) { + $("#infoshowall").show() + $("#ds5finetune").show() + if(await ds5_info(true)) { connected = true; mode = 3; devname = l("Sony DualSense Edge"); + device.oninputreport = process_ds_input; + await ds5_load_modules_info(); } + n = await ds5_nvstatus(); if(n == 4) { // dualsense edge with pending reboot @@ -1638,8 +1806,6 @@ async function continue_connection(report) { 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(); @@ -1664,8 +1830,9 @@ async function continue_connection(report) { return; } - if(mode == 3) + if(mode == 3) { show_edge_modal(); + } if(disable_btn != 0) update_disable_btn(); @@ -1797,7 +1964,7 @@ async function multi_nvslock() { if(mode == 1) { await ds4_nvlock(); await ds4_nvstatus(); - } else { + } else if (mode == 2) { await ds5_nvlock(); await ds5_nvstatus(); } @@ -1935,6 +2102,12 @@ function discord_popup() { show_popup(l("My handle on discord is: the_al")); } +function edge_color_info() { + la("cm_info"); + text = l("Color detection thanks to") + ' romek77 from Poland.'; + show_popup(text, true); +} + function board_model_info() { la("bm_info"); l1 = l("This feature is experimental."); diff --git a/index.html b/index.html index cb08f30..eb7bb20 100644 --- a/index.html +++ b/index.html @@ -564,6 +564,12 @@ dl.row dd { font-family: monospace; }
@@ -824,7 +830,7 @@ dl.row dd { font-family: monospace; }