Nintendo 3DS "firmware personalizado"
A Luma3ds patches e reimplementa partes significativas do software do sistema em execução em todos os modelos da família de consoles da Nintendo 3DS. O objetivo é melhorar bastante a experiência do usuário e apoiar o 3DS muito além de sua vida útil. Os recursos incluem:
O Luma3ds requer a execução do Boot9STRAP.
Depois que o boot9strap for instalado, basta fazer o download do arquivo de lançamento mais recente e extrair o arquivo para a raiz do seu cartão SD para "instalar" ou atualizar o Luma3ds ao lado do cardápio e do pacote de certificados enviados com ele. Substitua os arquivos existentes e mescla pastas existentes, se necessário.
O menu de configuração principal do Luma3ds pode ser acessado pressionando selecionar na inicialização. O arquivo de configuração é armazenado em /luma/config.ini
no cartão SD (ou /rw/luma/config.ini
na partição Ctrnand se o Luma3ds foi lançado a partir da partição CTRNAND, que acontece quando falta o cartão SD).
O menu ChainLoader é acessado pressionando o START na inicialização ou no menu de configuração. Espera -se que as cargas úteis estejam localizadas em /luma/payloads
com a extensão .firm
; Se houver apenas uma dessas carga útil, o menu de seleção acima mencionado será ignorado. As teclas de atalho podem ser atribuídas à carga útil, por exemplo, x_test.firm
serão carregadas quando x for pressionado na inicialização.
O menu de sobreposição, Rosalina , possui uma combinação de botão padrão: L+Down+Selecione . Para maior flexibilidade, a maioria das configurações de menu Rosalina não é salva automaticamente, daí a opção "Salvar configurações".
As portas GDB , quando ativadas, são 4000-4002
para as portas normais. O uso do attach
no modo "estendido-remote", juntamente com info os processes
é suportado e incentivado (para engenharia reversa, também confira monitor getmemregions
). A porta para o recurso Break-On-Start é 4003
sem "Remote estendido". Tanto o GDB do DevKitarM e o IDA Pro (sem "suporte de passo" ativado) são suportados ativamente.
Temos um wiki, no entanto, atualmente está muito desatualizado.
Luma3ds consiste em vários componentes. Embora o estilo de código em cada componente seja principalmente consistente, esses componentes foram escritos ao longo de muitos anos e podem não refletir como os mantenedores escreveriam um novo código em novos componentes/projetos:
Process9
e injetar todos os outros componentes personalizados. Este foi o primeiro componente já escrito para este projeto, em 2015NATIVE_FIRM
do ARM11 ( Kernel11
). É injetado pelo carregador Baremetal acima mencionado no kernel, conectando seu código de inicialização e depois se conecta ao restante do kernel. Seus recursos incluem chamadas de sistema de lojas (SVCs), introdução de novos SVCs e conexão em comunicações interprocessantes, para ignorar as limitações no design do sistema da Nintendo. Este é o componente que permite que Rosalina pause outros processos na entrada do menu de sobreposição, por exemplo. Isso foi escrito em um momento em que não nós não engenhamos totalmente o kernel e lançamos originalmente em 2017 ao lado de Rosalina. Outros ganchos para o suporte ao "plug -in de jogo" foram mesclados em 2023err:f
(tela de erro fatal) Reimplementação e muito mais. Introduzido em meados de 2017 e passou continuamente mudanças e recebeu muitas contribuições externas desde entãoloader
a carregá -los. A reimplementação permite o recurso GDB de partida no Rosalina, além de levantar as restrições de controle de acesso do FS da maneira correta. Introduzido em 2019 Ainda existem muito mais recursos e consolidação planejados para o Luma3ds! Aqui está uma lista do que está atualmente na loja:
TwlBg
e AgbBg
. Isso permitirá uma escala muito melhor e mais configurável para a tela superior nos jogos DS e GBA (exceto em 2Ds antigos). Atualmente, isso está sendo desenvolvido em particular no C ++ 23 (sem ETA). Embora este seja um empreendimento bastante difícil, pois isso exige reescrever todaProcess9
para TWL_FIRM
e AGB_FIRM
para permitir mais recursos no modo de compatibilidade DS e GBA (aqueles que requerem acesso ao arquivo)Kernel11
Kernel11
da Nintendo, referente à anexação de um novo KDebugThread
a um KThread
na criação de threads e outro thread->debugThread
de desinteresse nulo Isso faz com que o mecanismo de truques trava jogos que criam e destruam muitos tópicos o tempo todo (como Pokémon).Kernel11
seja reimplementado.Para construir Luma3Ds, é necessário o seguinte:
$PATH
dkp-pacman
(ou, para distribuições que já fornecem Pacman, add repositórios): https://devkitpro.org/wiki/devkitpro_pacman3ds-dev
: sudo dkp-pacman -S 3ds-dev --needed
Enquanto as versões do Luma3Ds são agrupadas com 3ds-hbmenu
, o Luma3DS realmente compila em um único arquivo: boot.firm
. Basta copiá -lo para a raiz do seu cartão SD (o FTPD é a maneira mais fácil de fazê -lo) e você terminou.
Este software está licenciado nos termos do GPLV3. Você pode encontrar uma cópia da licença no arquivo License.txt.
Os arquivos no stub GDB são licenciados triplos como MIT ou "GPLV2 ou qualquer versão posterior", caso em que é especificado no cabeçalho do arquivo. PM, SM, reimplementações de PXI também são licenciadas no MIT.
Luma3ds não seria o que é sem as contribuições e feedback construtivo de muitos. Gostaríamos de agradecer em particular: