157 lines
3.7 KiB
Markdown
157 lines
3.7 KiB
Markdown
# 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 <cart>`: Executa um cartucho
|
|
- `prometeu debug <cart>`: 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 <caminho_do_cartucho>
|
|
```
|
|
|
|
Ou diretamente via cargo:
|
|
|
|
```bash
|
|
cargo run -p prometeu -- run <caminho_do_cartucho>
|
|
```
|
|
|
|
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.
|
|
|