DKB Recomp

DKB Recomp is a native Windows port of Donkey Kong Bananza that translates the game's ARM64 code to C and compiles it into a single executable.

README

DKB Recomp

Licença: GPL-3.0-or-later Download Projeto original Ko-fi

Note

Esta é uma cópia não oficial do DKB Recomp, de Lucas-blip-png e colaboradores, no commit db77cdf. Todo o crédito pelo projeto é deles. Aqui você encontra o instalador pronto (DKB-Setup) na aba Releases. Bugs do jogo, sugestões e contribuições vão para o repositório original. Os documentos da pasta docs/ continuam em inglês.

DKB Recomp é uma recompilação estática de Donkey Kong Bananza (Nintendo Switch 2, 2025) para um aplicativo nativo de Windows x86-64 com renderizador Vulkan. Não há emulador rodando: o código ARM64 do jogo é traduzido para C antecipadamente e compilado num único executável, e as chamadas gráficas são atendidas por uma implementação própria da NVN 2. O projeto é baseado no TotK Recomp, que faz o mesmo com Tears of the Kingdom no Switch original.

Até onde se sabe, não existe outra recompilação estática pública de um jogo de Switch 2.

Important

Nenhum arquivo do jogo está incluído, nem nunca estará. Você precisa da sua própria cópia de Donkey Kong Bananza, extraída (dump) do seu próprio console. Não serão dadas instruções de como obter esses arquivos. Não existe executável do jogo para download: cada pessoa gera o seu a partir do próprio dump.

Instalação rápida (DKB-Setup)

  1. Baixe o DKB-Setup-<versão>-windows.zip em Releases e extraia em qualquer pasta. O zip tem só ferramentas e código-fonte, nada do jogo.
  2. Abra o DKB-Setup.exe.
  3. Escolha as pastas exefs e romfs do seu dump (versão base 1.0.0), o idioma e uma pasta de destino vazia.
  4. Aguarde de 20 a 30 minutos (verificação do dump, compilação e tradução dos shaders).
  5. Jogue pelo dkb.exe na pasta de destino.

Requisitos: Windows 10 ou 11, CPU com AVX2, GPU com Vulkan 1.3, 16 GB de RAM (32 GB recomendado) e cerca de 45 GB livres durante a instalação.

Estado

Ainda não é jogável do começo ao fim. O jogo inicia, passa pela tela de título até a caverna do tutorial, renderiza a cena 3D e responde ao controle: dá para andar e socar pelo túnel de mineração, com os vídeos de guia tocando, e uma partida jogada à mão chegou à seção Ingot Isle Cave-In. Ainda pode travar (na NVIDIA, dois quads de luz são pulados para evitar uma falha da GPU, #9), e muitos efeitos estão faltando. O instalador gera o jogo a partir do seu dump: docs/installer.md. Progresso dia a dia: docs/devlog.md.

FaseEstado
F0 CPU✅main e sdk (180.061 funções) são traduzidos sem nenhuma instrução sem suporte (foram adicionados autenticação de ponteiros do ARMv8.3 e LDAPR). Os testes diferenciais contra o Unicorn passam.
F1 SO✅Inicia no host Horizon do TotK Recomp com as diferenças do Switch 2: RomFS, saves, áudio e controle.
F2 NVN 2✅700 pontos de entrada da NVN 2 atendidos; o loop do jogo roda. 51 novas chamadas de command buffer (mesh shaders, VRS, DLSS, push constants…) são aceitas, mas ainda não gravadas.
F3 Shaders✅Todos os 4.820 estágios de shader Ampere da primeira cena 3D passam pela conversão Ampere→Maxwell do Eglantine e pelo tradutor do TotK Recomp para SPIR-V.
F4 Vulkan✅A tela de título e a cena 3D do tutorial são renderizadas.
F5 Jogável🚧Controle, vídeos de guia (VP9) e push constants funcionam. Em aberto: falha da GPU depois de alguns minutos na NVIDIA, o terreno destrutível preto (seu estágio de geometria, #45), algumas texturas e o desempenho fora do tutorial.

O plano, fase por fase: docs/bananza-plan.md. O que está em aberto agora: Roadmap até ficar jogável.

Como funciona

flowchart LR
    subgraph offline["Na compilação, no seu PC"]
        exefs["Seu dump: main + sdk<br/>(ARM64)"] --> lifter["Lifter<br/>recomp/"] --> c["Código C"] --> clang["Clang"] --> exe["dkb.exe"]
    end
    subgraph runtime["Durante o jogo"]
        exe --> host["Host Horizon<br/>threads, arquivos, áudio, controle"]
        exe --> nvn["Front end NVN 2<br/>runtime/nvn_*"] --> vk["Back end Vulkan"]
        sass["Shaders Ampere"] --> lower["Conversão Eglantine<br/>Ampere → Maxwell"] --> xlate["Tradutor<br/>tools/xlate"] --> spirv["SPIR-V"] --> vk
    end

A versão longa está em docs/architecture.md (compartilhado com o TotK Recomp) e docs/bananza-shaders.md (o trabalho com shaders da NVN 2), ambos em inglês.

Como ajudar

Contribuições vão para o projeto original. Cada problema em aberto é um trabalho separado, com sua própria issue. Escolha um, avise na issue que você está nele e mantenha cada pull request em um só assunto. Issues marcadas como in progress já estão com alguém, e o topo do roadmap diz o que está sendo feito agora.

Sem programar, só com seu PC e sua cópia do jogo:

  • #3 Teste na sua GPU. Até agora tudo foi verificado numa única placa NVIDIA. Testes em AMD, Intel e outras NVIDIA, com logs, mostram o que quebra nelas.
  • #7 Jogue além do tutorial e conte onde parou.
  • #9 A falha da GPU depois do primeiro vídeo de guia: vista em três drivers NVIDIA (617.14, 617.42, 621.01); testes em AMD e Intel mostrariam se é coisa da NVIDIA.

Com código (help wanted):

  • #5 Texturas quadriculadas em algumas superfícies de pedra. O layout GOB do Switch 2 (f4f7b17) corrige a pedra dourada da caverna do tutorial; as outras superfícies ainda precisam ser verificadas.
  • #6 Chamadas da NVN 2 ainda não gravadas: mesh shaders, VRS, DLSS e outras.
  • Símbolos. Nomes de funções ajudam na depuração. Eles vêm do GRAnimated/DKBananza, que também aceita contribuições.

Antes de abrir um pull request, leia o CONTRIBUTING.md. A regra principal: nada que saiu do jogo entra no repositório, nem em commits, issues ou pull requests. Rode python tools/check_content.py --staged antes de fazer commit; o CI roda a mesma verificação. Dúvidas vão para as Discussions do projeto original. Todos que participam seguem o código de conduta.

Apoie o projeto

Se quiser apoiar o autor sem programar, as gorjetas vão para ko-fi.com/lucasblippng. A gorjeta paga tempo de trabalho no projeto; ela não compra arquivos do jogo, builds nem acesso antecipado, e tudo continua open source. Dar estrela no repositório original e divulgá-lo para quem entende de GPUs, ARM64 ou do Switch também ajuda.

Compilando a partir do código-fonte

Quem prefere não usar o DKB-Setup pode compilar manualmente. O toolchain é o do TotK Recomp (docs/building.md): Clang do MSYS2 UCRT64, Ninja, Python 3.12 e o .NET SDK para o tradutor de shaders. Com o ExeFS e o RomFS do Bananza do seu dump:

.venv\Scripts\python tools\build_xlate.py
.venv\Scripts\python recomp\gen.py --exefs <exefs> --out generated\dkb100 --modules main,sdk --patches recomp\patches-dkb100.txt
.venv\Scripts\python tools\dkb_expected.py --exefs <exefs> --name dkb100 --display 1.0.0
.venv\Scripts\python tools\dkb_pack_romfs.py --dir <pasta romfs> --out build\extracted\dkb100\romfs
.venv\Scripts\python tools\build_game.py --version dkb100 --expected tools\data\expected-dkb100.json --exefs <exefs> --romfs build\extracted\dkb100\romfs

Tudo o que a compilação gera fica em build\ e generated\, que o git ignora. O jogo usa cerca de 14 GB de memória (13,5 GiB no início e 13,75 GiB depois de 40 minutos, subindo uns 6 MB por minuto; sessões mais longas não foram testadas). Por isso 16 GB de RAM com um arquivo de paginação grande é o mínimo por enquanto, e 32 GB é o confortável. Como rodar e testar: docs/dkb-testing.md.

Tip

Se for usar o instalador direto do código-fonte (python -m installer) com o MSYS2, instale também o pacote mingw-w64-ucrt-x86_64-llvm-tools. O instalador espera o toolchain llvm-mingw (com libc++) em toolchain\llvm-mingw-*\ e as bibliotecas em toolchain\deps-mingw\. O DKB-Setup já traz tudo isso pronto.

Perguntas frequentes

Dá para jogar? Ainda não do começo ao fim. Chega ao tutorial e trava com frequência. Acompanhe o roadmap ou o devlog.

Vai ter download do jogo pronto? Não. O executável é feito a partir do próprio código do jogo, então não pode ser compartilhado. Cada um gera o seu a partir do próprio dump; o DKB-Setup faz isso por você.

Qual versão do jogo? Base 1.0.0. A atualização 458752 tem outro layout e ainda não é suportada.

Linux? O toolchain do TotK Recomp suporta Linux, então é possível; ninguém testou com o Bananza ainda.

Por que GPL? A conversão de shaders vem do Eglantine (Eden Emulator Project), que é GPL. Os arquivos que vieram do TotK Recomp mantêm a licença MIT.

Como a IA é usada? A maior parte do código e da documentação é escrita por agentes de programação com IA (Claude Code), como no TotK Recomp, e verificada rodando o jogo e os testes diferenciais. Pull requests feitos com ajuda de IA são bem-vindos; você é responsável por ter lido e rodado o que enviar.

Créditos e origem

O DKB Recomp é baseado no TotK Recomp (Tears of the Kingdom, Switch 1), de valentderah e colaboradores (MIT, mantida em LICENSE-MIT). Usa a conversão de shaders Ampere do Eglantine (GPL-3.0-or-later, runtime/third_party/eglantine/) e o tradutor de shaders do Ryujinx (MIT, incluído com os patches do MacNativeGames), além dos outros projetos listados em THIRD_PARTY_NOTICES.md. O conjunto está sob a LICENSE.

Licença

O DKB Recomp como um todo está sob a GNU GPL v3 ou posterior, porque inclui a conversão de shaders Ampere do Eglantine, que é GPL (runtime/third_party/eglantine/). Os arquivos que vieram do TotK Recomp mantêm a licença MIT; código de terceiros mantém sua própria licença (THIRD_PARTY_NOTICES.md). A licença não concede nenhum direito sobre o jogo da Nintendo.

O DKB Recomp é um projeto de fã independente e sem fins comerciais, sem afiliação com a Nintendo nem endosso dela. Donkey Kong Bananza e Nintendo Switch 2 são marcas registradas da Nintendo.