Arquitetura do Nintendo 3DS
(copetti.org)- O Nintendo 3DS foi um console portátil de uma época em que smartphones e app stores estavam crescendo, reunindo 3D estereoscópico sem óculos, tela dupla, CPU com retrocompatibilidade e vários I/Os em uma estrutura complexa de SoC
- A LCD superior de 800×240 exibia simultaneamente 2 frames de 400×240 com pixels de meia largura e barreira de paralaxe, enquanto o controle deslizante de profundidade e o rastreamento facial do New 3DS reduziam problemas de ângulo de visão e fadiga
- O modelo básico usava ARM11 MPCore dual-core de 268MHz, 128MB de FCRAM, GPU DMP PICA200 e DSP CEVA TeakLite II; o New 3DS adicionou 4 núcleos de 804MHz, 256MB de FCRAM, NFC e um sistema de visão estereoscópica aprimorado
- Além do ARM11, o interior também incluía ARM946E-S para DS e ARM7TDMI para GBA, alternando entre os modos Native 3DS, Nintendo DSi e Game Boy Advance, mas os desenvolvedores normalmente lidavam diretamente apenas com o ARM11 MPCore
- O sistema operacional e a segurança eram compostos por NATIVE_FIRM, TWL_FIRM, AGB_FIRM, SAFE_FIRM, Boot9/Boot11 e uma cadeia de confiança baseada em AES/RSA/OTP, e após várias vulnerabilidades o ecossistema de homebrew e firmware customizado evoluiu
Famílias de modelos e gerações de hardware
- A Nintendo lançou vários modelos revisados ao longo do ciclo de vida do 3DS, segmentando faixas de preço e perfis de usuário
- Do ponto de vista da arquitetura, os modelos se dividem em 6 tipos
- Nintendo 3DS (2011), Nintendo 3DS XL (2012): baseados na arquitetura original, e a principal diferença entre XL e não XL é o tamanho da tela
- Nintendo 2DS (2013): modelo de baixo custo que remove a tela estereoscópica e usa um formato inspirado no Game Boy
- New Nintendo 3DS (2014), New Nintendo 3DS XL (2015): adicionam upgrade de hardware, leitor NFC, mais botões e sistema estereoscópico aprimorado
- New Nintendo 2DS XL (2017): modelo de baixo custo que remove a função estereoscópica do New Nintendo 3DS XL
- A referência comum dos jogos é o Nintendo 3DS original, enquanto a linha New tem diferenças de hardware consideráveis
Display 3D sem óculos
- O Nintendo 3DS, como sucessor do Nintendo DS, traz 2 telas LCD, e a tela superior tem especificação de 800×240 pixels para exibir sensação de profundidade
- O efeito estereoscópico usa o mesmo princípio de paralaxe estereoscópica (stereoscopic parallax) do Virtual Boy
- Mostra imagens ligeiramente diferentes para o olho esquerdo e o direito
- A diferença na posição central das duas imagens faz com que os objetos sejam percebidos como estando mais à frente ou atrás
- A LCD superior é fisicamente composta por pixels de meia largura e opera em dois modos
- Modo 2D: trata 2 pixels horizontais como se fossem 1 só
- Modo 3D: usa todos os pixels individualmente para exibir ao mesmo tempo 2 frames de 400×240
- A barreira de paralaxe separa a luz de fundo atrás dos pixels da LCD para que cada olho veja subconjuntos diferentes de pixels
- Esse método tem limitações
- Exige brilho adicional, afetando a duração da bateria
- Se a tela inclinar em relação aos olhos, os dois frames de paralaxe podem parecer misturados e aumentar a fadiga visual
- A postura fixa e o cansaço visual rápido podem tornar a função 3D incômoda
- O controle deslizante de profundidade 3D aumenta ou reduz a diferença entre os dois frames para ajustar o efeito de profundidade
- O New 3DS ameniza o problema de inclinação com rastreamento facial usando câmera frontal e LED infravermelho
- Nos jogos, a GPU precisa renderizar a mesma cena em 2 frames ligeiramente deslocados, como se estivesse desenhando frames normais
- A API oficial fornece rotinas para configurar duas matrizes de projeção
CPU, memória e estrutura de retrocompatibilidade
- O SoC principal, CPU CTR, reúne a maior parte do sistema, exceto armazenamento e RAM
- A Nintendo trabalhou com a ARM para montar um cluster de CPU baseado em ARM11 MPCore
- 3DS original: 2 núcleos MP11, cada um a 268MHz
- New 3DS: 4 núcleos MP11, cada um a 804MHz, com 2MB de cache L2 compartilhado
- O ARM11 usa o conjunto de instruções ARMv6k e também inclui componentes como Thumb, Jazelle e VFP
- O ARMv6 fornece instruções SIMD inteiras e instruções de load/store para sincronização multicore
- O VFP11 acelera operações de ponto flutuante de precisão simples de 32 bits e dupla de 64 bits, seguindo o IEEE 754
- Cada núcleo MP11 tem pipeline de 8 estágios, predição de desvio dinâmica e estática, coprocessador auxiliar de controle de sistema CP15, 16KB de cache de instruções e 16KB de cache de dados
- Os núcleos ARM11 são conectados pelo barramento AXI da ARM, e a Snoop Control Unit do MPCore mantém a coerência do cache L1
- Além do ARM11, o 3DS inclui mais 2 CPUs
- ARM946E-S: no modo Native 3DS, funciona como coprocessador auxiliar de segurança e I/O gerenciado pelo sistema operacional; ao executar jogos de DS/DSi, torna-se o processador principal
- ARM7TDMI: no modo DS/DSi, funciona como processador auxiliar; no modo GBA, é a CPU principal de execução
- Há 3 modos de operação
- Native 3DS mode: o ARM11 executa jogos de 3DS, o ARM9 cuida de I/O e segurança, e o ARM7 fica desligado
- Nintendo DSi mode: ARM9 e ARM7 executam jogos de DS/DSi, e o ARM11 auxilia no hardware do DS que foi omitido ou realocado
- Game Boy Advance mode: o ARM7 executa as instruções dos jogos de GBA, enquanto ARM11 e ARM9 dão suporte em segundo plano
- A configuração de memória é complexa
- O 3DS original oferece 128MB de FCRAM na perspectiva do desenvolvedor, e o New 3DS oferece 256MB de FCRAM
- O ARM11 tem 512KB de SRAM para fins de segurança
- O ARM9 tem 1MB de SRAM, e no New 3DS isso sobe para 1,5MB de SRAM
- O ARM9 também tem 32KB de instruction TCM e 16KB de data TCM
- FCRAM é a Fast Cycle DRAM criada pela Fujitsu e pela Toshiba em 2002, projetada para ter latência menor que a DRAM em leituras não contínuas
- A configuração de DMA também está incluída
- O XDMA ao lado do ARM9 oferece até 4 canais
- O CDMA ao lado do ARM11 oferece até 8 canais
- O New 3DS adiciona mais um CoreLink DMA-330 ao lado do bloco ARM11
- Os desenvolvedores de 3DS normalmente acessam apenas o ARM11 MPCore, e os programas são escritos em um modelo de multithreading baseado em threads
- No New 3DS, quando os metadados do jogo indicam que ele é destinado ao modelo novo, o sistema operacional ativa recursos como clock mais alto, RAM adicional e cache L2
- Caso contrário, o hardware exclusivo do New é desativado por compatibilidade
- Os jogos podem incluir no mesmo pacote codebases para Old e New
Pipeline gráfico e PICA200
- O Nintendo 3DS foi o primeiro da linha de portáteis da Nintendo a usar um núcleo de IP de um fornecedor de GPU em vez de uma PPU própria
- A Nintendo licenciou o PICA200 da DMP e o integrou ao SoC CTR CPU, e a GPU opera a 268MHz
- O PICA200 é um processador 3D de baixo consumo e usa a arquitetura Maestro 2G, compatível com OpenGL ES 1.1 e com extensões de elementos do OpenGL ES 2.0
- A etapa de pixels tem estrutura de função fixa, mas as Maestro functions oferecem iluminação por fragmento, algoritmos de múltiplas sombras, subdivisão de polígonos, bump mapping, texturas procedurais e vários efeitos de neblina
- A VRAM dedicada da GPU é de apenas 6MB, então os programadores precisam manter na VRAM os comandos, buffers e texturas repetidas que exigem acesso imediato, e colocar o restante na FCRAM
- O PICA200 tem DMA para transferência entre FCRAM e VRAM
- O controlador LCD não entende diretamente o formato do render buffer do PICA200, então é necessário um framebuffer LCD separado
- São necessários pelo menos 3 para o olho esquerdo superior, olho direito superior e tela inferior
- Para evitar artefatos, pode-se manter um conjunto duplicado para page flipping
- Durante os jogos, a GPU normalmente renderiza três telas
- superior esquerda: 400×240
- superior direita: 400×240
- inferior: 320×240
- todas exibem cor RGB de 8 bits, com até 16,78 milhões de cores
- O pipeline do PICA200 é composto pelas etapas de comando, vértice, geometria, rasterizador, fragmento e pós-processamento
- A etapa de comando lê o command buffer e desenha polígonos
- A etapa de vértice usa 4 Vertex Processors em paralelo, mas com o geometry shader ativado só 3 podem ser usados
- A etapa de geometria pega um Vertex Processor e o usa como shader separado
- A etapa de fragmento é composta por 4 unidades de textura e uma unidade de sombreamento
- Não há pixel shader; em vez disso, combina 6 combinadores de cor com as funções Maestro
- A etapa de pós-processamento pode realizar testes de alpha, stencil e profundidade, blending e supersampling 2×2
- O New 3DS parece ter recebido um DSP adicional chamado MVD, que faz descompressão H.264/MJPEG e conversão de YUV para RGB
- Ele parece ser usado pelo navegador do New 3DS para reprodução de vídeo acelerada
- A PPU para jogos de DS e GBA também está dentro do SoC
- Jogos de DS/DSi/GBA usam a PPU como no hardware original
- A saída passa pelo LgyFB até o framebuffer, e o PICA200 fica responsável pela exibição
- Essa estrutura adiciona latência, mas em um nível desprezível para o usuário
Áudio e I/O
- O SoC tem 2 blocos de áudio
- um DSP dedicado para jogos de 3DS
- o CSND da linha DS, usado por jogos de 3DS, DS e GBA
- O DSP exclusivo do 3DS é um CEVA TeakLite II e opera em cerca de 134MHz
- Ele produz estéreo de 2 canais, com amostragem de até 32kHz e resolução de 16 bits
- Usa 512KB de RAM como área de trabalho do DSP, com double buffering de 256KB cada
- O DSP pode mixar amostras ADPCM e PCM em até 24 canais
- Os programas fazem upload em tempo de execução do firmware de DSP escrito pela Nintendo e incluído no SDK oficial, e o serviço de áudio do sistema abstrai a comunicação com o DSP
- O CSND oferece 32 canais, o dobro do bloco correspondente do DS
- O I/O externo tem uma configuração claramente voltada a competir com smartphones, mais do que com consoles portáteis
- botões digitais, Circle Pad analógico, sliders de 3D e volume, chave de Wi‑Fi
- sensor de toque resistivo, giroscópio, acelerômetro
- 1 câmera frontal e 2 câmeras traseiras
- transceptor infravermelho, slot para cartão SD, conector de 3,5mm, leitor de game card
- O New 3DS adiciona mais I/O
- 2 botões digitais, C-Stick, leitor NFC na tela inferior
- LED infravermelho para rastreamento facial
- slot microSD no lugar de SD
- remoção da chave de Wi‑Fi e controle por software
- As interfaces internas se dividem em SPI, HID, I²C, periféricos rápidos baseados em FIFO e MCU
- O SPI conecta o flash de armazenamento do game card, o gerenciamento de energia do DS, parte do Wi‑Fi, touchscreen, som, microfone, Circle Pad etc.
- O HID lê o teclado digital como um registrador de 16 bits
- O I²C conecta câmeras, transceptor infravermelho, NFC, módulo de rastreamento facial QTM, giroscópio, MCU etc.
- O eMMC e o slot SD se conectam como periféricos de 16MB/s por meio de registradores FIFO
- O Auxiliary Microcontroller é um MCU 78K0R projetado pela NEC e fabricado pela Renesas, e gerencia LCD, LEDs, energia, bateria, RTC, slider 3D, botões HOME/energia etc.
- Entre os serviços baseados em I/O estão QR Reader, AR Games, Face Raiders, Amiibos, SpotPass, StreetPass e Play Coins
Sistema operacional e estrutura de boot
- O Nintendo 3DS armazena vários firmwares para oferecer execução nativa, retrocompatibilidade e modo de manutenção
- NATIVE_FIRM: executa os recursos nativos do 3DS, com o ARM11 rodando o programa principal
- TWL_FIRM: faz o 3DS operar como um Nintendo DSi, com ARM9 e ARM7 em destaque
- AGB_FIRM: faz o 3DS operar como um Game Boy Advance, com o ARM7 executando o programa principal
- SAFE_FIRM: usado para tarefas de manutenção, como atualização do sistema
- No NATIVE_FIRM, ARM9 e ARM11 exercem papéis de SO separados
- O ARM9 executa Kernel9 e Process9, cuidando de segurança, criptografia, I/O, sistema de arquivos e verificação/instalação de títulos
- O ARM11 executa Kernel11 e vários processos de usuário, oferecendo rede, HOME Menu, execução de apps e abstração de serviços de hardware
- O escalonador do ARM11 não trata os núcleos como núcleos de uso geral convencionais
- O primeiro núcleo, appcore, é para jogos e usa escalonamento FIFO
- O segundo núcleo, syscore, é para tarefas do sistema e pode ceder 30% do tempo de execução a aplicativos de usuário
- O quarto núcleo MP11 do New 3DS é dedicado ao rastreamento facial
- O terceiro núcleo MP11 não é escalonado por padrão e fica ocioso na maior parte do tempo
- O CDMA adicional do New 3DS só pode ser acessado durante o boot e depois não é usado
- A RAM que os apps realmente podem usar é menor que a FCRAM total
- 3DS original: 64MB por padrão, de 128MB
- New 3DS: 124MB por padrão, de 256MB
- Com a flag
APPMEMTYPE, é possível iniciar sem carregar o HOME Menu e obter até 96MB e 176MB, respectivamente
- Os meios de armazenamento são Boot ROM, OTP, eMMC NAND e SD/microSD
- Boot9 e Boot11 são ROMs de boot e ficam ocultas por motivos de segurança
- O OTP contém informações exclusivas do console e chaves de criptografia gravadas uma única vez durante a fabricação
- O eMMC NAND armazena dados do sistema, firmware e dados de usuário dos modos 3DS/DSi
- O SD/microSD armazena softwares da eShop, saves, fotos, gravações etc., protegidos com AES-128-CTR
- No boot, o Boot9 do ARM9 entra em ação primeiro, desperta o Boot11 do ARM11 e depois verifica o cabeçalho NCSD e as partições de firmware na NAND
- Ele valida hashes SHA-256 e assinaturas RSA-2048 para encontrar um firmware válido
- Se falhar, tenta boot pelo flash do módulo Wi‑Fi; se isso também falhar, exibe uma tela de erro
- Quando o NATIVE_FIRM sobe, a sequência segue para Kernel9, Process9, Kernel11, processos do sistema, NS, HOME Menu ou jogo
- O HOME Menu é um shell de navegação de uma página que mostra os aplicativos instalados em uma grade rolável
- O módulo NS também fornece chamadas de Applet, como a sobreposição do botão HOME e o teclado virtual
- No New 3DS, mesmo quando um jogo roda em modo de compatibilidade, os Applets e as rotinas NS podem usar todo o hardware
- As atualizações do sistema podem ser feitas online ou por cartucho de jogo
- Os cartuchos incluem apenas a atualização do sistema, sem atualização de apps do usuário
- As atualizações pela rede incluem o pacote completo
- A instalação é feita pelo System Updater após reiniciar em
SAFE_FIRM
Desenvolvimento de jogos, distribuição, Virtual Console
- O ecossistema de desenvolvimento do 3DS foi influenciado pela indústria de smartphones baseada em ARM e pela evolução dos compiladores, mas a Nintendo ainda não fornecia uma toolchain padrão
- Os kits de desenvolvimento de hardware eram fornecidos pela Intelligent Systems e pela Kyoto MicroComputers
- O CTR-BOX é composto por uma caixa metálica com o hardware do 3DS e um gabinete dummy de 3DS
- Flashcards oficiais eram usados para distribuir protótipos de jogos a testadores externos
- Para o New 3DS, era fornecido o kit SNAKE
- O SDK oficial incluía
armccpara 3DS, depurador, APIs de serviços de hardware e do sistema operacional, bibliotecas gráficas, empacotador, bibliotecas de rede, áudio e vídeo, plugin para Visual Studio 2010, ferramentas do PICA200 e profiler - As bibliotecas gráficas eram de quatro tipos
- GL: API OpenGL ES simples, mas lenta
- GD: alternativa mais rápida que gera comandos do PICA200
- GR: API de comandos do PICA200 mais próxima do hardware
- GX: biblioteca de uso geral para gerenciamento do PICA200
- Havia três meios de execução de jogos
- Gamecard: podia conter ROM de 128 MB a 4 GB ou Flash de até 2 GB e memória de backup para salvamento
- eShop/SD Card: suportava software por download, pré-venda e distribuição de DLC
- Local wireless: o Download Play continuou no 3DS; o jogo transferido era instalado na NAND e usava apenas um slot
- O Virtual Console oferecia jogos de DSiWare, NES/Famicom, Sega Game Gear, Game Boy e Game Boy Color pela eShop
- Usuários do New 3DS também podiam acessar o catálogo do Super Nintendo
- Na maioria dos casos, funcionava como um pacote de aplicativo com ROM e emulador incluídos
- Jogos de Game Boy Advance foram oferecidos oficialmente apenas a usuários do Ambassador Program
- Em vez de um emulador em ARM11, rodavam nativamente no ARM7 por meio do AGB_FIRM
- Os jogos de GBA eram copiados para a FCRAM e, em seguida, o sistema reiniciava em AGB_FIRM, deixando o ARM7 no controle
- Atualizações de jogos eram distribuídas pela eShop e se aplicavam a tipos de jogo exceto o Download Play
Segurança, antipirataria, homebrew
- Os principais alvos da segurança do 3DS eram o Game/CTR card reader e o sistema operacional
- Os dados dentro de um cartucho CTR usam o formato NCSD, e o sistema operacional é responsável por autenticação, verificação e descriptografia
- A cadeia de confiança real se concentra no sistema operacional e na estrutura de boot
- O console incluía hardware de segurança dedicado
- A flag XN do ARM11 e a MPU do ARM9 limitavam a execução arbitrária de memória
- O ARM9 funcionava como um processador dedicado à segurança, com acesso a blocos criptográficos como AES, RSA e PRNG
- O mecanismo AES suportava criptografia e descriptografia AES-128, até 64 keyslots e modos CTR/CCM/CBC/ECB
- O mecanismo RSA executava operações RSA baseadas em chave pública e tinha 4 keyslots
- A OTP armazenava chaves exclusivas do console e o CTCert, e o CID do eMMC também era usado na ofuscação de chaves
- A cadeia de confiança seguia por Boot9, OTP, eMMC, NCSD, NCCH e verificação de Title
- NCSD e NCCH usam assinaturas RSA-2048 + SHA-256
- O payload de NCCH é criptografado com AES-128 CTR
- Titles são assinados com RSA-2048, RSA-4096 ou ECDSA e SHA-256
- Tickets, licenças de download da eShop, também são assinados com RSA-2048 + SHA-256
- Também existiam fragilidades de implementação
- A configuração da page table de AXI WRAM no Kernel11 concedia permissões amplas de leitura, escrita e execução
- Antes do sistema 3.0.0, a memória OTP não era ocultada
- Não havia separação de privilégios entre Process9 e Kernel9
- Não havia ASLR nem proteção contra downgrade do sistema
- O navegador baseado em WebKit foi alvo recorrente de ataques
- O homebrew e a pirataria iniciais começaram com flashcards de DS
- O DSi e o 3DS tentavam bloquear flashcards com uma whitelist de cartões autorizados
- Fabricantes reprogramavam o cabeçalho do cartucho para que ele fosse identificado como outro jogo autorizado
- Em 2013, o Gateway3DS surgiu como o primeiro flashcard de 3DS realmente prático
- O Blue Gateway era um flashcard de DS que instalava o ponto de entrada do exploit MSET
- O Red Gateway clonava cartuchos originais com FPGA e microSD
- O Launcher.dat funcionava como payload do exploit MSET e como custom firmware
- A Nintendo respondeu com atualizações
5.0.0-11corrigiu temporariamente o exploit MSET7.0.0-13bloqueou exploits de kernel e adicionou um módulo RSA à cadeia de confiança da descriptografia NCCH9.3.0corrigiu o exploit de kernel privado do Gateway3DS- O Sky3DS entrou em blacklist na
11.0
- O ecossistema homebrew evoluiu com libctru, nihstro, Ninjhax e Homebrew Launcher
- O Ninjhax usava a função de QR code de Cubic Ninja como ponto de entrada
- O GSPWN era uma vulnerabilidade que sobrescrevia o heap do HOME Menu por DMA da GPU
- O Homebrew Launcher executava aplicativos homebrew não assinados no formato
.3dsx
- memchunkhax e memchunkhax2 permitiram elevação de privilégio no Kernel11
- A manipulação do
memchunk headerarmazenado na FCRAM levava ao acesso à AXI WRAM e ao controle do Kernel11
- A manipulação do
- Após a introdução do arm9loader no New 3DS em 2015, surgiu o arm9loaderhax
- Era um exploit permanente que permitia execução arbitrária de código com privilégios de Kernel9 no momento do boot
- Ferramentas como Luma3DS, Godmode9, Anemone3DS e nds-bootstrap passaram a ser amplamente usadas
- Em 2016 e 2017, a análise do Boot9 levou ao surgimento de sighax, boot9strap e ntrboot
- O sighax explorava uma falha na verificação de assinatura RSA-2048 do Boot9 para neutralizar a cadeia de confiança
- O boot9strap tornou-se um bootloader alternativo com suporte a payload via cartão SD ou boot normal
- O ntrboot obtinha privilégios de Boot9 usando flashcard de DS, ímã e combinação de teclas
- Como essas vulnerabilidades estão na Boot ROM, não podem ser corrigidas por atualização de software
- A partir de 2018, os métodos evoluíram para simplificar a instalação do boot9strap
- O seedminer reconstruía o
movable.seda partir do Friend Code, do nome do subdiretório do cartão SD e de um curto brute force - O BannerBomb3 explorava um stack overflow no app Settings durante o parsing do banner de um title DSiWare
- Também eram usados os caminhos unSAFE_MODE e safehax baseados em
SAFE_FIRM, além de menuhax67 e nimdsphax baseados no HOME Menu
- O seedminer reconstruía o
- Em maio de 2023, a atualização
11.17.0corrigiu o BannerBomb3, neutralizando um dos últimos pontos de entrada que não exigiam equipamento adicional- Depois disso, os usuários passaram a precisar de exploit em jogo legítimo de 3DS, flashcard de DS compatível com ntrboot ou exploit de WebKit
1 comentários
Opiniões no Hacker News
É realmente surpreendente que, ao rodar jogos de Gameboy Advance, haja uma CPU física do GBA de verdade dentro dele
Eu li todos os rumores antes do lançamento e fiz a pré-compra do modelo azul; como paguei cerca de US$ 250 no início, entrei no Ambassador Program. Quando a Nintendo reduziu bastante o preço logo após o lançamento, como pedido de desculpas ela deu vários jogos gratuitos, inclusive alguns que não estavam na eShop, e fiquei satisfeito
Rejogar Mario Kart Super Circuit, que eu curtia na infância, no excelente slide pad do 3DS foi como um sonho; depois de saber que ele rodava em uma CPU real como no GBA que eu usava antes, a lembrança ficou ainda mais especial
O Nintendo 3DS contém toda a arquitetura de sistema do Nintendo DSi, e a CPU do DSi também atua como CPU supervisora do sistema. O DSi originalmente era, em grande parte, uma versão com overclock da arquitetura do Nintendo DS, e os dois primeiros modelos do Nintendo DS também incluíam o ARM7TDMI do GBA para retrocompatibilidade por meio do slot de GBA
Na época do Ambassador Program, a Nintendo distribuiu o firmware AGB_FIRM, que inicializava o 3DS em modo Game Boy Advance, e havia o TWL_FIRM para o modo Nintendo DS. Hoje, se você hackear um 3DS, também consegue carregar outros softwares de GBA, rodando jogos de GBA com precisão praticamente perfeita, exceto por dependências de periféricos
O PlayStation 2 precisava de um chip de entrada/saída, e a Sony escolheu a CPU do PS1. Ao executar jogos de PS1, ele passava a execução para ela
Se minha memória não falha, os primeiros PlayStation 3 tinham CPU e GPU do PS2, mas acho que elas não faziam muita coisa quando não estavam rodando jogos de PS2. Depois, é bem provável que tenham sido removidas quando a Sony passou para emulação para reduzir custos
O GBA também incluía a CPU do GBC para retrocompatibilidade, e o modo era alternado por uma chave física pressionada pelo próprio cartucho. O PS2 também reutilizava a CPU do PS1 como componente de entrada/saída da placa e podia usá-la para retrocompatibilidade; se bem me lembro, os outros componentes recebiam ajuda de emulação
Graças a um post no Reddit, consegui comprar pelo preço menor e ainda receber os jogos gratuitos. Quase não joguei os jogos grátis, mas fiquei com a sensação de ter enganado o sistema
O 3DS teve um começo bem lento, mas acabou se tornando um dos meus consoles favoritos
Como nunca tive um N64, joguei Ocarina of Time e Majora’s Mask pela primeira vez graças aos excelentes remasters em 3D. A retrocompatibilidade completa com DS também era uma grande vantagem; para evitar o redimensionamento feio e não inteiro da tela, é preciso segurar Start ao iniciar
A variedade de homebrews e emulação suportada em um aparelho com softmod também é grande, tornando-o um aparelhinho muito atraente. Também adoro o design do New 3DS pequeno, um dos meus favoritos de todos os tempos, e comprei várias faceplates trocáveis, divertidas e bonitas
Outra coisa de que gostei muito foi que, quando as baterias começaram a envelhecer, pude ligar para a Nintendo e comprar duas baterias originais novas, uma para o meu e outra para o da minha esposa. Custavam cerca de 15 libras cada, e dava para trocar sem desmontar o aparelho. Hoje em dia isso é raro
Durante a pandemia, por causa do ADHD, acabei comprando três New Nintendo 3DS XL
Importei um do Japão e troquei para uma ROM dos EUA. Gosto muito dele para viagens. O efeito 3D é legal, é bom poder desligá-lo, e a duração da bateria também é excelente
Mas, como em todo hobby, quando as coisas ficam escassas dá vontade de acumular, e como não dá para jogar em três consoles ao mesmo tempo, acho que agora preciso me desfazer deles
Eu comprei um New Nintendo 2DS XL há algum tempo; ele é a última iteração da linha DS e roda jogos de DS, DSi e 3DS. Como só alguns poucos jogos saíram exclusivamente para o “new” DS, na prática ele dá suporte a cerca de 15 anos de história de jogos
Tento comprar jogos de DS sempre que encontro, mas já ficou difícil achar bons preços, e alguns títulos, como Bravely Default, ainda custam por volta de 60 euros por aqui. O DS também tem muitos jogos genéricos e malfeitos, então esses eu ignoro
Foi uma sacada genial permitir ajustar a profundidade 3D do 3DS com um slider físico de acesso muito fácil
Não sei que pesquisa levou a Nintendo a fazer com que o núcleo do recurso 3D fosse ajustado dessa forma, mas isso fez uma diferença decisiva na usabilidade do 3D
Com o Face ID, dá para saber a distância entre os olhos, então também seria possível ajustar automaticamente o valor desse slider
Este texto faz parte de uma excelente série: https://www.copetti.org/writings/consoles/
Um dos meus recursos favoritos em um 3DS desbloqueado é o app NSUI: https://3ds.eiphax.tech/nsui
Graças aos lançamentos oficiais do Virtual Console, era possível jogar alguns jogos antigos da Nintendo no 3DS, e dá para usar o mesmo wrapper com qualquer jogo dos sistemas compatíveis. É mais um wrapper do que um emulador, então o desempenho e a compatibilidade já são bons de cara
Com isso, o 3DS se torna um bom portátil para curtir jogos de NES/SNES/GB/GBC/GBA com precisão em nível de pixel
Outra coisa que só percebi alguns anos atrás é que, quanto maior o cartão microSD usado, mais lento o 3DS fica. Até onde sei, o console varre todo o armazenamento em blocos, então a partir de 64 GB ele fica dolorosamente lento. Especialmente ao usar jogos injetados de GBA, porque o 3DS praticamente reinicializa nesse modo e acaba varrendo o armazenamento de novo
Lembro da parte que dizia que “antes da versão de sistema 3.0.0, a memória OTP não era ocultada, e, se houvesse qualquer vulnerabilidade, era possível extrair as chaves OTP sem problemas”
Antigamente, para hackear um 3DS, era preciso fazer downgrade para o firmware 3.0.0 para extrair o OTP. Só que o 3.0.0 não era totalmente compatível com o New 3DS, então, nesse modelo, só de fechar a tampa com o firmware antigo o console virava um brick permanente. Bons tempos
Esta série é muito boa
Se você quiser experimentar homebrew para 3DS, veja https://github.com/devkitPro/libctru
Espero que a Nintendo nunca abandone a experiência de videogame portátil de colocar um console inteiro na palma da mão
Também gostaria que a indústria maior de portáteis indie crescesse mais
O que parece ser o fim iminente dos portáteis avançados é o cloud gaming. Isso inclui até rodar o console em casa e fazer streaming para o celular
No fim, tudo depende do que cada um escolhe com a carteira. Sinto saudade do GBC
Acho que o Switch fez muito sucesso com jogos indie 2D como Stardew Valley, Hades e Dead Cells. Esse tipo de design de jogo funciona bem, e bons gráficos 2D nunca parecem ultrapassados
Tenho dúvidas se as pessoas pagariam por uma abordagem de streaming desfavorável ao consumidor para jogar ótimos jogos que rodam até em um aparelho batata
A latência do cloud gaming e a dependência de uma conexão de rede estável ainda são problemas para muita gente. Além disso, não acho que a maioria dos gamers queira pagar mais uma assinatura, e cloud gaming provavelmente acabaria vindo com assinatura de qualquer forma
Se, de todo jeito, você também precisa de hardware para jogar, é melhor usar um bom portátil. Fabricantes de PC como a Asus também estão fazendo portáteis como o RoG Ally, e Switch 2 e Steam Deck 2 são praticamente certos. Na verdade, os portáteis parecem continuar melhorando e ganhando participação de mercado
Hoje em dia, os jogos não são tão exclusivos quanto antes, e, se a empresa não integrar tudo de forma tão estreita quanto a Nintendo, a ponto de transformar console de mesa e portátil em uma coisa só, ela acaba criando uma separação desnecessária
Imagine se a Nintendo tivesse lançado também um console de mesa separado do Switch; provavelmente não teria sido uma estrutura sustentável
É engraçado ver as pessoas elogiando a “genialidade” e a “inovação” da Nintendo por criar um portátil que elas conectam à TV para jogar. Enquanto isso, o PSP Go e o dock para TV estão tipo “gente, não lembram de mim?”. Gosto muito do PSP Go, ele é bem pequeno e fofo
Estou pensando em fazer, como projeto divertido, um console portátil para a minha filha
Textos assim são excelentes
Eu estava interessado na arquitetura do GB/GBC e queria criar jogos para essa plataforma, mas ainda não tinha encontrado este texto. Obrigado por postar e obrigado ao Rodrigo por escrevê-lo