Recompilação estática (AOT) de Blue Stinger (Sega Dreamcast, 1999, SH-4) para um executável nativo de Windows x64, em C++20. O código do jogo é traduzido instrução por instrução para C++ e os subsistemas do console (arquivos, tempo, controles, saves, filmes, áudio, vídeo) são substituídos, um por vez, por implementações nativas do PC, sempre provadas contra o jogo original rodando no emulador Flycast. Não usa BIOS nem interpretador do SH-4.
Este repositório não contém o jogo nem nenhum dado dele. Você precisa fornecer a sua própria cópia do disco (CDI, NTSC-U T13001N V1.000). Ver LEGAL.md.
Progresso geral: ~81 % do roteiro do port nativo (N0–N10, onze etapas de peso igual; uma etapa parcial conta pela fração concluída; em 2026-10-22 o roteiro ganhou a N9, Remasterização, e os mods passaram para a N10). O jogo roda no Windows a partir do disco do usuário, com arquivos, controles (teclado e controle Xbox), saves, filmes e áudio nativos por padrão (efeitos, falas, música Manatee e o DSP da AICA), e legendas em inglês em português do Brasil por padrão, com inglês como alternativa (pacotes gerados localmente a partir do disco do usuário e instalados pelo Builder; transcrição, tradução e revisão por IA, provisórias; o texto não vai para o repositório). O desenho é feito pelo Vulkan por padrão (N7 funcional, em fechamento técnico), com recuo automático para o renderizador em software.
| Etapa | O que é | Situação | % |
|---|---|---|---|
| M0–M4 | Extrator, decodificador SH-4, gerador de C++, runtime e primeiro executável | concluídas | — |
| N0 | Manifesto de hardware, fronteira jogo/SDK, interfaces nativas | concluída | 100 |
| N1 | Sistema de arquivos nativo | concluída | 100 |
| N2 | Tempo e eventos nativos | concluída funcionalmente (2026-10-24): U1–U8 comprovados; tempo lógico experimental promovido a padrão na janela, com --tempo nativo como recuo e o headless estável para preservar referências e gravações antigas. N2c (retirada de ciclos/INTC/BS_POLL) abre o N8 |
100 |
| N3 | Controles nativos (SDL3/XInput, remapeamento, perfis) | concluída | 100 |
| N4 | Saves nativos (VMS/arquivos, importar/exportar) | concluída | 100 |
| N5 | Filmes nativos (Media Foundation, legendas por mod) | concluída | 100 |
| N6 | Áudio nativo (efeitos, falas, música Manatee, DSP da AICA) | concluída (2026-10-23): nativo é o único áudio do produto (o legado saiu no N8.6); validação contra o original (Flycast) e gravações reais de gameplay. O H9 (tempo real sem faltas de dados) foi aprovado em 2026-10-23, mas voltou a falhar de forma intermitente no N8.8: falha aberta, não corrigida | 100 |
| N7 | Renderização Vulkan | funcional, em fechamento técnico: o Vulkan é o renderizador padrão, com recuo automático para o software (sem GPU compatível, ou se o dispositivo falhar no jogo); desenha o jogo bit a bit igual ao renderizador de referência, 3× mais rápido; resolução interna de 720p a 4K; efeitos de imagem (correção de cor, tonemapping, nitidez, bloom, CRT, shaders de mod); menu de configurações dentro do jogo (Esc ou Back do controle); legendas no gameplay e nos filmes; câmera livre no analógico direito. A falha da AMD integrada foi corrigida no N8.7, e fog por tabela e volumes modificadores estão nos dois renderizadores. Falta o quadro de fog pareado contra o Flycast e o encerramento formal. SSAO, 16:9 real e MSAA permanecem no N9 | 95 |
| N8 | Remoção da camada legada (simulação do console) | fechamento técnico em 2026-11-02, com ressalvas (detalhes): BIOS, GD-ROM, Maple, AICA, TA, VRAM e rasterizador de referência fora do produto; Vulkan e software sobre a mesma IR. O código recompilado segue usando os endereços do hardware, atendidos por serviços nativos. Abertos: campanha completa (obrigatória, depois do N9) e a falha intermitente do H9 | 95 |
| N9 | Remasterização: duas edições instaláveis do mesmo núcleo, Original (fiel ao Dreamcast) e Remastered (câmera Livre obrigatória, menus e saves de PC, legendas ligadas, widescreen, iluminação, água, texturas HD, filmes e áudio remasterizáveis, acessibilidade); instalador gráfico. Planejamento em docs/N9-PLANO.md |
não iniciada (planejada) | 0 |
| N10 | Sistema de mods (ferramentas, manifestos, pacotes de idioma, texturas, áudio, vídeo e shaders) e elevação dos sistemas do jogo para C++ editável; revisão final e distribuição | não iniciada (a arquitetura de extensão vem sendo preparada nas etapas anteriores) | 0 |
Desempenho: com o Vulkan (padrão) o gameplay leva ~7 ms por campo numa máquina de desenvolvimento (o tempo real é 16,7 ms) e o áudio costuma tocar sem faltas, mas o H9 registra uma falha intermitente em aberto; no recuo para o software (~17 ms por campo) o jogo pode ficar um pouco lento e o som pode picotar.
Detalhes e evidências de cada verificação: STATUS.md. Arquitetura: ARCHITECTURE.md. Planos por etapa em docs/.
| Produto | Versão | Região | Status |
|---|---|---|---|
| T13001N | V1.000 (1999-07-05) | NTSC-U | alvo inicial |
O Blue Stinger Builder transforma o seu disco em um BlueStinger.exe com os dados de execução ao lado (nada do
disco sai da sua máquina):
bs-builder --disc <seu_disco.cdi> --out <pasta> --kit . --sdl3 build/msvc-release/_deps/sdl3-src
BlueStinger-Recompiler.exe faz o mesmo com uma janela simples (idioma, modo portátil). Ferramentas de linha de
comando para quem desenvolve:
bs-extract <seu_disco.cdi> game-data # extrai e valida o hash
bs-recomp config/bluestinger_us.toml # gera generated/*.cpp a partir do executável do jogo
cmake --build --preset msvc-release # compila o jogo
Só imagens CDI por enquanto.
bs-extract --info "ISO/Blue Stinger.cdi" # mostra faixas, IP.BIN e hash sem gravar nada
bs-extract "ISO/Blue Stinger.cdi" game-data # extrai tudo + game-data/manifest.json
O executável 1ST_READ.BIN precisa ter o SHA-256 de uma versão suportada
(tools/extractor/known_versions.h). --force extrai mesmo sem ter, e marca o
resultado como não verificado.
Requisitos: Visual Studio 2022+ (ou Build Tools) com CMake e Ninja, ou Clang. Abra um Developer PowerShell e rode:
cmake --preset msvc-debug
cmake --build --preset msvc-debug
ctest --preset msvc-debug
Disassembly (ferramenta de desenvolvimento):
bs-disasm game-data/1ST_READ.BIN 0x8C010000 0x8C010000 64 # base, início, quantidade
bs-disasm --stats game-data/1ST_READ.BIN
O teste real_disc usa a sua imagem se BS_DISC_IMAGE apontar para o .cdi.
Sem essa variável, ele é ignorado.
config/ configuração TOML por versão do jogo (só metadados e endereços)
docs/ notas de hardware e engenharia reversa
tools/ extractor/ (bs-extract), dev/ (scripts opcionais de verificação)
translator/ decoder/ (tabela SH-4 em sh4_isa.inc) e app/ (bs-recomp, bs-disasm)
runtime/ cpu/ memory/ hle/ gdrom/ pvr/ aica/ maple/ platform/ core/ game/ app/
tests/ unit/ (sem dados do jogo) e diff/ (diferencial contra o Flycast)
third_party/ dependências externas (adicionadas por marco)
Pastas locais ignoradas pelo git: ISO/, game-data/, generated/,
analysis/, saves/, build/.