Nintendo DS
De ROMHackingWiki
Tabela de conteúdo |
Sobre o Nintendo DS
O Nintendo DS é o atual portátil da Nintendo. Sua grande inovação foi usar duas telas, sendo que uma delas é sensivel ao toque. Depois do surgimento de Flashcards para o Nintendo DS, começaram a aparecer vários softwares para o console, conhecidos como homebrews.
Especificações Técnicas
- Processador Principal:ARM946E-S(67 MHz)
- Processador Secundario: ARM7TDMI(33 Mhz)
- Memoria Principal: 4Mbyte
- Memoria Conjunta do ARM9/ARM7: 32kbytes
- Memoria RAM dedicada do ARM7: 64Kbytes
- VRAM: 656 Kbytes
- Telas: 256 x 192 x 2 telas
- Quantidade de Cores: 256,144 colors(R:G:B=6:6:6)
- Processador de Graficos 2D: Cenario de Fundo, maximo de 4 camadas. Objetos, maximo de 128 objetos simultaneos.
- Processador de Graficos 3D: Capacidade de Transformação, máximo de 4 megavertices por segundo. Poligonos, maximo de 120k poligonos por segundo. Taxa de Preenchimento de pixels, maximo de 30 megapixels por segundo.
- Som: 16ch ADPCM/PCM, saida para microfone.
- Controles: Painel sensivel ao toque,direcional,A,B,X,Y,R,L,Start,Select.
- Modo Sleep.
- Largura: 148 mm. Altura: 85 mm. Profundidade: 28 mm. Peso: 0.276 Kg.
Memória
Layout
ARM7 Nome Início Término Tam. Espelhada Largura / modos BIOS (ARM7) 0x00000000 0x00003FFF 16 KB não desconhecida Main RAM 0x02000000 0x023FFFFF 4/8 MB sim 16 / todos Shared RAM 0x037F8000 0x037FFFFF 32 KB ? 32 / 16,32 Private RAM 0x03800000 0x0380FFFF 64 KB sim 32 / 16,32 Registers 0x04000000 * * * * Wifi Control 0x04800000 0x04800FFF * sim** 16 Wifi MAC memory 0x04804000 0x04805FFF 8 KB sim** 16 GBA cart ROM 0x08000000 0x09FFFFFF 32 MB não 16 / todos GBA cart RAM 0x0A000000 0x0A00FFFF 64 KB sim 8 / 8
ARM9 Nome Início Tam. Espelhada Largura / modos ITCM 0x00000000* 16 KB sim 32 / todos DTCM 0x00800000* 16 KB sim 32 / todos Main RAM 0x02000000 4/8 MB sim 16 / todos Shared RAM 0x03000000 32 KB sim 32 / 16,32 Registers 0x04000000 * * * Palette RAM 0x05000000 2 KB sim 16 / 16,32 Video RAM 0x06000000 ? ? 16 / 16,32 Sprite RAM 0x07000000 2 KB sim 16 / 16,32 GBA cart ROM 0x08000000 32 MB não 16 / todos GBA cart RAM 0x0A000000 64 KB sim 8 / 8 BIOS (ARM9) 0xFFFF0000 4 KB não desconhecida / todos
Registradores
Registradores Nome Endereço:Largura Descrição DISPLAY_CR 0x04000000:32 WAIT_CR 0x04000204:16 Registrador de Controle do Modo de Espera KEYS 0x04000130:16 Registrador de Chaves IME 0x04000208:32 Habilita Interrupção Master IE 0x04000210:32 Habilita Interrupção IF 0x04000214:32 Flags de Interrupção CARD_CR1 0x040001A0:32 Cartão CR1 CARD_CR2 0x040001A4:32 Cartão CR2 CARD_PARAMS 0x040001A8:64 Comando de Cartões CARD_DATA 0x04100000:32 Data de Cartão CARD_DATA_RD 0x04100010:32 Data de Cartão HALT_CR 0x04000300:16 Registrador de Controle de Travamento POWER_CR 0x04000308:16 Registrador de Controle de Energia PROTECTION_CR 0x04000308:32 Registrador de Controle de Proteção (ARM7) SOUND504 0x04000504:16 Registrador de Som BIAS (ARM7)
DMA
DMA significa Memória de Acesso Direto (Direct Memory Access), e se refere a habilidade de um
hardware periférico acessar a memória diretamente, independente do CPU Registradores DMA Endereço Nome 0x040000B0:32 R/W DMA0_SRC (0ffffffe) 0x040000B4:32 R/W DMA0_DST (0ffffffe) 0x040000B8:32 R/W DMA0_CR (ffffffff) 0x040000BC:32 R/W DMA1_SRC (0ffffffe) 0x040000C0:32 R/W DMA1_DST (0ffffffe) 0x040000C4:32 R/W DMA1_CR (ffffffff) 0x040000C8:32 R/W DMA2_SRC (0ffffffe) 0x040000CC:32 R/W DMA2_DST (0ffffffe) 0x040000D0:32 R/W DMA2_CR (ffffffff) 0x040000D4:32 R/W DMA3_SRC (0ffffffe) 0x040000D8:32 R/W DMA3_DST (0ffffffe) 0x040000DC:32 R/W DMA3_CR (ffffffff)
Formato dos registradores de controle:
Habilita:
* W0: Parar DMA
* W1: Ativar DMA
* R1: Ocupada
* R0: Pronta
Tamanho:
* 0: Halfword (16 bits)
* 1: Word (32 bits)
Modo de Sincronização:
* 0: Imediatamente
* 1: Esperar até V-Blank
* 2: Esperar até H-Blank
* 3: Mostrar sincronização
* 4: ?
* 5: Cartão
* 6: ?
* 7: ?
Modo Fonte:
* 0: Incrementa
* 1: Decrementa
* 2: Fixa
* 3: Indefinida
Modo de Destino:
* 0: Incrementa
* 1: Decrementa
* 2: Fixa
* 3: Incrementa, mas atualiza quando completa
FIFO
ARM9 view: MAGIC180 (0x04000180:16) Bits Modo Descrição 15 ? ? 14 R/W ? 13..12 ? ? 11..8 R/W ARM7.MAGIC180.data 7..4 ? ? 3..0 W data
ARM7 view: MAGIC180 (0x04000180:16) Bits Modo Descrição 15..12 ? ? 11..8 W data 7..4 ? ? 3..0 R ARM9.MAGIC180.data
Homebrew
Nintendo DS homebrew são os softwares escritos para o Nintendo DS por programadores independentes, como hobby, e é um contraste com a indústria de jogos/softwares na atualidade. Os softwares normalmente são escritos usando-se kits de desenvolvimento como [devkitPro], e são aplicados no DS através de cartões regraváveis. Entretanto, homebrewing softwares pode ser um hobby um tanto quanto duvidoso, uma vez que os cartões regraváveis também podem ser usados para piratear softwares e jogos originais.
Programação
A maior parte das aplicações Homebrew para o Nintendo DS são programadas em C/C++. Um kit de desenvolvimento muito popular é o já citado devkitARM. Algumas bibliotecas facilitam a programação para Nintendo DS, como libnds e PAlib. libfat ajuda desenvolvedores a escrever um sistema de arquivos FAT no dispositivo de armazenamento Homebrew, enquanto DSWiFi permite que desenvolvedores integrem o WiFi do DS em seus aplicativos. Vários tutoriais já foram escritos sobre os vários aspectos da programação e do sistema do Nintendo DS.
Um dos maiores problemas na programação caseira de DS é como acessar o sistema de arquivos de um cartão. Isso se deve ao fato de cada dispositivo homebrew utilizar uma interface diferente para acessar um cartão selecionado. Esse problema vêm sendo resolvido pela introdução dos drivers DLDI (Dynamically Linked Disc Interface - Interface de Disco Dinamicamente Conectada), que estão sendo utilizados no lugar dos antigos drivers estaticamente conectados, durante a compilação dos aplicativos homebrew do Nintendo DS. A biblioteca FAT atual, libfat, já vem capacitada para o uso desses drivers. Sua predecessora, GBA NDS FAT, pode ser modificada para permitir o uso desses drivers.
Kits populares de desenvolvimento:
Ferramentas e Bibliotecas:
- Biblioteca GBA NDS FAT para usar o sistema de dados (desatualizada)
- libfat Biblioteca para usar o sistema de dados (sucessora do GBA NDS FAT)
Documentação
No Developer´s Scene é possível encontrar algumas documentações interessantes para quem quer se aventurar em Nintendo DS Homebrew, o que pode auxiliar em hacks desse console. Um dos mais visualizados é o Grande e Sagrado Guia Introdutório ao Nintendo DS, a Fonte Suprema de Conhecimento Básico de Programação no Nintendo DS, que pode ser baixado juntamente com o código-fonte no link. Inglês.
Ainda no Developer´s Scene, é possível acompanhar passo-a-passo o processo de programação de um jogo, através de sua página de Tutoriais, que permite que você crie seu próprio homebrew. Acompanhando as aulas, em duas semanas já é possível estar com seu homebrew circulando pela internet, completamente jogável. Inglês.
Se você estiver desesperado atrás de informação, ou não tiver mais o que fazer, pode também dar uma olhada no fórum GBAdev.org, que atualmente possui uma compilação com aproximadamente 40 tutoriais. Inglês.
Ferramentas
Como a emulação de DS ainda está caminhando lentamente, assim estão as ferramentas para o console. Os editores hexadecimais usados em traduções de DS são basicamente os mesmos de GBA, sem muitas diferenças. Os editores gráficos também se limitam basicamente à um: Tile Molester, tendo que ser executado uma mudança em sua linha de cógido para permitir que ele abra arquivos maiores. Entretanto, o grande diferencial nas ferramentas de Romhacking para o Nintendo DS são os chamados "rippers", que conseguem extrair informações de uma ROM, e exibí-las de forma organizada para o usuário, permitindo até mesmo a alteração e substituição dos originais sem maiores complicações. Os rippers mais comuns e utilizados são o DSLazy, que foi abandonado em seu processo de desenvolvimento, e o Tahaxan, que é promissor, e está sendo atualizado ainda. Ambos os rippers acompanham uma documentação detahada de como utilizá-los, mas ainda não suportam todos os jogos, portanto, você pode dar sorte de poder usá-los em seu hack, ou não. Um ripper foi lançado recentemente, chamado DSBuff, e é praticamente uma continuação do DSLazy, porém, com outro programador conduzindo o projeto. Pelo visto, vale a pena dar uma olhada.

