2026-03-24 13:37:24 +00:00

136 lines
1.9 KiB
Markdown

< [Voltar](chapter-13.md) | [Sumário](table-of-contents.md) >
# Boot Profiles
**Versão:** 1.0
**Status:** Proposta
---
## 1. Objetivo
Definir como o Prometeu decide o que executar ao iniciar:
* Hub
* Cartucho automaticamente
* Modo debug
---
## 2. Conceito de BootTarget
No início do boot, o POS resolve um alvo:
```rust
enum BootTarget {
Hub,
Cartridge { path: String, debug: bool },
}
```
---
## 3. Regras Gerais
### Se BootTarget == Hub
* Firmware entra em `HubHome`
* Nenhum cartucho é carregado automaticamente
### Se BootTarget == Cartridge
1. Carregar cartucho
2. Ler `app_mode` no manifest
3. Aplicar regras:
* `Game`:
* Entrar em `RunningGame`
* `System`:
* Permanecer em `HubHome`
* Abrir o app como janela/system tool
---
## 4. CLI do Host
### Boot padrão
```
prometeu
```
Resultado: entra no Hub
### Executar cartucho
```
prometeu run <cartucho>
```
Resultado:
* Game → entra direto no jogo
* System → abre como tool no Hub
### Executar com debugger
```
prometeu debug <cartucho>
```
Resultado:
* Mesmo fluxo do `run`
* Runtime inicia em modo debug
* Aguarda conexão do Debugger Java
---
## 5. Estados do Firmware
Firmware mantém apenas:
* `Boot`
* `HubHome`
* `RunningGame`
* `AppCrashed`
System apps nunca mudam o estado do firmware.
---
## 6. Comportamento em Hardware Real (futuro)
* Se miniSD/cartucho físico presente no boot:
* POS pode:
* sempre ir ao Hub, ou
* auto-executar conforme configuração do usuário
---
## 7. Integração com Debugger
Quando `debug == true`:
* Runtime:
* Inicializa
* Abre socket DevTools
* Aguarda comando `start`
* Somente após isso inicia execução do cartucho
---
## 8. Estabilidade
* BootTarget é contrato interno do POS
* CLI do host deve respeitar essas regras
* Novos modos de boot devem ser extensões compatíveis
< [Voltar](chapter-13.md) | [Sumário](table-of-contents.md) >