first commit

This commit is contained in:
bQUARKz 2026-01-09 09:26:05 +00:00
commit 6782c54354
Signed by: bquarkz
SSH Key Fingerprint: SHA256:Z7dgqoglWwoK6j6u4QC87OveEq74WOhFN+gitsxtkf8
11 changed files with 265 additions and 0 deletions

48
.gitignore vendored Normal file
View File

@ -0,0 +1,48 @@
# ===== Rust / Cargo =====
/target/
**/target/
# Cargo lock
# (descomente se este NÃO for um binário final e você não quiser versionar o lock)
# Cargo.lock
# ===== IDEs =====
# RustRover / IntelliJ
.idea/
*.iml
# VS Code
.vscode/
# ===== OS =====
# macOS
.DS_Store
.AppleDouble
.LSOverride
# Windows
Thumbs.db
ehthumbs.db
# ===== Logs =====
*.log
# ===== Temporary / Backup =====
*~
*.swp
*.swo
# ===== Coverage / profiling =====
*.prof
*.gcda
*.gcno
*.lcov
# ===== Rustfmt / Clippy caches (if any) =====
.rustfmt.toml.bak
# Local env
.env
.env.*

15
Cargo.lock generated Normal file
View File

@ -0,0 +1,15 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "cart_demo"
version = "0.1.0"
[[package]]
name = "core"
version = "0.1.0"
[[package]]
name = "host_desktop"
version = "0.1.0"

7
Cargo.toml Normal file
View File

@ -0,0 +1,7 @@
[workspace]
members = [
"crates/core",
"crates/host_desktop",
"crates/cart_demo",
]
resolver = "2"

143
README.md Normal file
View File

@ -0,0 +1,143 @@
# 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/
core/ # PROMETEU Core (hardware lógico)
host_desktop/ # Host desktop (janela, input real, present)
cart_demo/ # Cartucho/demo hardcoded (temporário)
```
### crates/core
Contém o **núcleo do PROMETEU**:
- loop lógico
- periféricos
- framebuffer
- nenhuma dependência de sistema operacional
### crates/host_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
cargo run -p host_desktop
```
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
A definir.
---
## ✨ 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.

View File

@ -0,0 +1,6 @@
[package]
name = "cart_demo"
version = "0.1.0"
edition = "2024"
[dependencies]

View File

@ -0,0 +1,14 @@
pub fn add(left: u64, right: u64) -> u64 {
left + right
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
let result = add(2, 2);
assert_eq!(result, 4);
}
}

6
crates/core/Cargo.toml Normal file
View File

@ -0,0 +1,6 @@
[package]
name = "core"
version = "0.1.0"
edition = "2024"
[dependencies]

14
crates/core/src/lib.rs Normal file
View File

@ -0,0 +1,14 @@
pub fn add(left: u64, right: u64) -> u64 {
left + right
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
let result = add(2, 2);
assert_eq!(result, 4);
}
}

View File

@ -0,0 +1,6 @@
[package]
name = "host_desktop"
version = "0.1.0"
edition = "2024"
[dependencies]

View File

@ -0,0 +1,3 @@
fn main() {
println!("Hello, world!");
}

3
rust-toolchain.toml Normal file
View File

@ -0,0 +1,3 @@
[toolchain]
channel = "stable"
components = ["rustfmt", "clippy"]