136 lines
1.9 KiB
Markdown
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) >
|