# PROMETEU Runtime PROMETEU é um **runtime educacional e experimental** inspirado em consoles clássicos, com foco em **ensinar programação, arquitetura de sistemas e conceitos de hardware através de software**. Este repositório contém o **runtime do PROMETEU**, implementado em Rust, responsável por: - simular um “hardware lógico” simples - executar programas (futuros cartuchos) em um loop determinístico - abstrair plataformas modernas (desktop, mobile, etc.) de forma consistente > PROMETEU é uma máquina virtual simples, explícita e didática. --- ## 🎯 Objetivos do Runtime - Executar um loop fixo (60 Hz) - Manter um framebuffer de baixa resolução (estilo console) - Fornecer periféricos simples e determinísticos: - GFX (framebuffer + double buffer) - INPUT (D-Pad, botões) - TOUCH (ponteiro absoluto, single-touch) - Garantir **portabilidade total** entre plataformas - Servir como base para ensino, game jams e experimentação --- ## 🧠 Filosofia de Design - **Sem magia**: tudo é explícito - **Sem heurística implícita**: o runtime não “adivinha intenções” - **Determinístico**: mesmo input → mesmo resultado - **Hardware-first**: APIs modelam periféricos, não frameworks modernos - **Portável por definição**: se não funciona em todas as plataformas, não existe --- ## 📦 Estrutura do Projeto (Monorepo) Este repositório usa um **Cargo Workspace** (monorepo): ``` runtime/ Cargo.toml # Workspace root rust-toolchain.toml # Versão do Rust (fixa) crates/ prometeu/ # CLI Dispatcher (ponto de entrada unificado) prometeu-core/ # PROMETEU Core (hardware lógico) prometeu-runtime-desktop/ # Host desktop (janela, input real, present) cart-demo/ # Cartucho/demo hardcoded (temporário) ``` ### crates/prometeu O binário principal que centraliza o acesso ao ecossistema: - `prometeu run `: Executa um cartucho - `prometeu debug `: Inicia em modo debug - `prometeu build/pack`: Comandos planejados para ferramentas de build e empacotamento ### crates/prometeu-core Contém o **núcleo do PROMETEU**: - loop lógico - periféricos - framebuffer - nenhuma dependência de sistema operacional ### crates/prometeu-runtime-desktop Implementação de host para desktop: - cria janela - traduz teclado/mouse/touch do SO para o core - apresenta o framebuffer na tela ### crates/cart-demo Código de demonstração hardcoded. Será substituído futuramente por: - cartuchos - bytecode - scripts --- ## 🖥️ Plataformas Atualmente: - Desktop (primeiro alvo) Planejado: - Mobile - Steam Deck - Hardware dedicado (experimental, longo prazo) --- ## 🛠️ Requisitos - Rust (via `rustup`) - Toolchain definido em `rust-toolchain.toml` Instalação do Rust: ```bash rustup-init ``` --- ## ▶️ Como rodar Na raiz do repositório: ```bash cargo build ./target/debug/prometeu run ``` Ou diretamente via cargo: ```bash cargo run -p prometeu -- run ``` No início, o host apenas valida: - loop 60 Hz - execução do core - estrutura do runtime --- ## 🚧 Status do Projeto ⚠️ **Em estágio inicial (bootstrap)** O foco atual é: - validar arquitetura - validar loop e periféricos - manter simplicidade máxima Nada aqui deve ser considerado API estável ainda. --- ## 📜 Licença Este projeto está licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para detalhes. --- ## ✨ Nota Final PROMETEU é tanto um projeto técnico quanto pedagógico. A ideia não é esconder complexidade, mas **expor a complexidade certa**, no nível certo, para que ela possa ser entendida, estudada e explorada.