- KiDoom é um projeto que renderiza de forma vetorial o clássico jogo de tiro DOOM, de 1993, dentro do editor de PCB KiCad
- Usa as trilhas de circuito da PCB (
trace) como caminho de saída gráfica e roda a 10–25 quadros por segundo
- O mesmo desenvolvedor também executou DOOM em um osciloscópio com o ScopeDoom, usando a saída de fone de ouvido do MacBook como DAC
- Além disso, desenvolve vários projetos de eletrônica e software, como CircuitSnips.com, app de chat com IA, gatilhos baseados em MQTT e simulador de motor
- Chama atenção como um projeto de experimento interativo baseado em engenharia eletrônica que combina design de hardware e criatividade em software
Visão geral dos principais projetos
- KiDoom é uma implementação experimental que renderiza DOOM de forma vetorial no editor de PCB KiCad
- Usa as trilhas de circuito da PCB como caminho de saída gráfica
- Funciona a cerca de 10–25 FPS
- ScopeDoom é uma versão que executa DOOM em um osciloscópio
- Usa a saída de fone de ouvido do MacBook como um DAC de dois canais para exibir gráficos vetoriais a 4–8Hz
Outros projetos públicos
- CircuitSnips.com: plataforma para compartilhar subcircuitos do KiCad, como uma versão de circuitos do Thingiverse
- HIT Impact Android App: aplicativo Android em Kotlin para sensor de lesão cerebral traumática
- MQTT Duration Trigger: ferramenta de integração de gatilho por duração baseada em MQTT para o Home Assistant
- TheDuck.chat: aplicativo de chat com IA desenvolvido para o T3 Cloneathon
- bitwise-mcp: servidor de documentação MCP para desenvolvedores embarcados, que extrai definições de registradores de PDFs de RM para oferecer busca semântica rápida
- KiCad Netlist Tool: ferramenta que reduz a contagem de tokens de LLM em arquivos SCH do KiCad para apoiar documentação automatizada
- Claude Code Comm Bot: bot de comunicação para Discord com integração ao VS Code
- Agent Tool (deprecated): frontend web com streaming em tempo real para ferramentas CLI e serviços web de LLM
- Engine Simulator [WIP]: projeto que simula um motor diesel de 6 cilindros com cálculos físicos
- Vitamin/Supplement Price Comparison [WIP]: site de comparação de preços entre suplementos de marca e produtos genéricos
- Fuel Injector Characterizer: sistema de validação de desempenho de injetores de combustível usando Arduino e Webserial
Ambiente pessoal de desenvolvimento
- VS Code Server: ambiente de desenvolvimento remoto via VPN Tailscale
- Home Assistant: plataforma de automação residencial inteligente que exige autenticação
Resumo da carreira
- Experiência em projetos com base em 3 desenvolvimentos de ECU, mais de 10 anos de experiência e mais de 28,5 milhões de milhas de dados de condução
1 comentários
Comentários do Hacker News
Este projeto é muito mais interessante pelo modo de implementação do que pelo meme em si
O impressionante não é renderizar DOOM, mas sim sequestrar o pipeline de renderização do editor de PCB para fazê-lo funcionar como um motor vetorial em tempo real
Ele extrai a geometria diretamente da estrutura interna do DOOM, mapeia sprites para footprints reais de componentes e atualiza o modelo de objetos do KiCad em tempo real sem recalcular tudo
E ainda existe a ideia de enviar esse mesmo fluxo vetorial para o DAC de áudio de um osciloscópio
Esse tipo de conexão criativa de “usar uma ferramenta de um jeito diferente do seu propósito original” é muito legal
Daqui para frente, a direção do ScopeDoom talvez seja ainda mais interessante. Displays vetoriais mudam completamente a forma de pensar renderização, e ver o DOOM sendo desenhado como sinal de tensão analógico tem algo de poético
Indo além, combinar DACs rápidos, osciloscópios analógicos com persistência e simplificação dinâmica de sprites talvez aproxime isso de uma estética fluida de shooter vetorial
Fiquei pensando se daria para imprimir os esquemáticos em papel e folheá-los como um flipbook
Desse jeito, talvez um dia isso até vire uma apresentação em PowerPoint
Projeto realmente incrível. Passa muito a sensação de algo que o tom7 ou o canal dele no YouTube fariam
Quando vi a parte sobre “extrair dados vetoriais diretamente do motor”, fiquei curioso se já existia alguma implementação em osciloscópio
O DOOM tem limitações por ser baseado em sprites, mas parece que pelo menos o cenário daria para renderizar
Já houve exemplos de uso de osciloscópios rápidos como displays raster monocromáticos de baixa resolução
Encontrei um vídeo de Quake rodando em um osciloscópio, e como é um modelo 3D a sensação de profundidade fica bem viva
Edit: fiquei surpreso ao ver o ScopeDoom mais para o fim do texto. Eu imaginava que esse tipo de tentativa já teria existido antes, mas é surpreendentemente difícil de encontrar
Há muitos exemplos de DOOM rodando em equipamentos como o Keysight MXA, mas isso é basicamente só usar o aparelho como um PC
Fiquei pensando em Spectrum DOOM. Talvez desse para fazer usando snapshots de waterfall plot
O próximo passo talvez seja renderizar o DOOM em uma PCB de verdade e jogar assim
Já consigo imaginar o jogador encomendando cada frame, encaixando a placa que chegou duas semanas depois e repensando a própria vida
Comecei a aprender KiCad recentemente e trabalho em um coworking de desenvolvimento de jogos, então parece que meus dois mundos se encontraram perfeitamente. Muito legal
Não sei exatamente por que isso faz do mundo um lugar melhor, mas sinto que faz
Como ideia de expansão, seria divertido adicionar novos mapas baseados em arquivos CAD de projeto de chips
O chip viraria uma sala, e as trilhas de solda seriam os corredores
Um projeto que eu sempre quis fazer algum dia era criar um sistema de display baseado em entrada de áudio de microcontrolador
Eu ainda estava pensando se usaria sinais XY diretos ou se decodificaria pela web com um soft modem
Foi assim que as missões Apollo também transmitiram vídeo de TV
O SSTV moderno funciona até com largura de banda de algumas centenas de Hz, mas se usar todos os 20 kHz de um canal de áudio, talvez seja possível transmitir algo como 100x100 pixels a 1 fps
Fiquei curioso se isso por acaso usou a nova socket API do KiCad v9
Eu mesmo criei uma biblioteca s-expr para injetar footprints e símbolos, mas tinha muitos bugs e era instável
Queria migrar para um método mais oficial e estável
Tenho interesse na sua biblioteca s-expr. Talvez haja alguma sobreposição com meu outro projeto, CircuitSnips
O CircuitSnips é um serviço tipo Thingiverse para circuitos eletrônicos, e implementei por conta própria uma forma de alimentar folhas completas para o renderizador KiCanvas
Quando compartilhei isso no Discord do KiCad, também recebi o feedback de que o recurso de Design Block do KiCad 9+ provavelmente tem relação com isso