2026-03-24 13:40:16 +00:00

4.4 KiB

< Voltar | Sumário | Adiante >

🎮 Periférico INPUT (Sistema de Entrada)

1. Visão Geral

O Periférico INPUT é responsável por coletar e disponibilizar o estado dos controles ao programa PROMETEU.

Em PROMETEU:

  • input é estado, não evento implícito
  • input é amostrado no tempo, não entregue assíncronamente
  • input tem ordem, custo e momento definidos

Botões não “disparam eventos”. Eles mudam de estado.


2. Filosofia do Sistema de Entrada

PROMETEU modela input como hardware clássico:

  • o estado dos controles é lido uma vez por frame
  • o programa consulta esse estado durante UPDATE
  • não existem callbacks assíncronos de input

Esse modelo:

  • é determinístico
  • é simples de entender
  • reflete microcontroladores e consoles clássicos

3. Dispositivos de Entrada

PROMETEU abstrai diferentes dispositivos em uma interface comum.

Dispositivos típicos:

  • controle digital (D-Pad + botões)
  • teclado (mapeado para botões)
  • gamepad
  • toque (mobile, mapeado)

Independentemente da origem, PROMETEU expõe o mesmo modelo lógico.


4. Modelo de Estado

4.1 Estado por Frame

Para cada frame, o sistema mantém:

  • estado atual dos botões
  • estado do frame anterior

Isso permite consultar:

  • botão pressionado
  • botão liberado
  • botão mantido pressionado

4.2 Tipos de Consulta

Operações típicas:

input.btn(id)// botão está pressionado
input.btnp(id)// botão foi pressionado neste frame
input.btnr(id)// botão foi liberado neste frame

Essas funções:

  • são puramente consultivas
  • não alteram estado
  • têm custo explícito

5. Momento da Amostragem

O estado do input é capturado no início de cada frame, antes da fase UPDATE.

Fluxo conceitual:

FRAME N:
SAMPLEINPUT
UPDATE
DRAW
AUDIO
SYNC

Durante todo o frame:

  • o estado de input é imutável
  • chamadas repetidas retornam o mesmo valor

Input não muda no meio do frame.


6. Determinismo e Reprodutibilidade

O modelo de input PROMETEU garante:

  • mesma sequência de inputs
  • mesmos frames
  • mesmos resultados

Isso permite:

  • reprodução de execuções
  • replays determinísticos
  • certificação confiável

Input pode ser:

  • gravado
  • reproduzido
  • injetado artificialmente

7. Input e CAP

Operações de input:

  • consomem poucos ciclos
  • participam do orçamento por frame
  • aparecem em relatórios de certificação

Exemplo:

Frame 18231:
input.btn():12cycles

Embora barato, input não é gratuito.


8. Mapeamento de Botões

8.1 Identificadores Lógicos

PROMETEU define identificadores lógicos de botões:

  • UP, DOWN, LEFT, RIGHT
  • A, B, X, Y
  • START, SELECT

O mapeamento físico:

  • depende da plataforma
  • é resolvido fora da VM
  • é transparente ao programa

8.2 Portabilidade

O mesmo cartucho PROMETEU:

  • roda em teclado
  • roda em gamepad
  • roda em touch

Sem alteração de código.


9. Input Analógico (Opcional)

PROMETEU pode expor eixos analógicos de forma explícita:

input.axis(id)

Características:

  • valor normalizado (ex.: -1.0 a 1.0)
  • custo explícito
  • atualização por frame

Input analógico:

  • não é obrigatório
  • não substitui input digital
  • deve ser usado conscientemente

10. Boas Práticas de Input

PROMETEU incentiva:

  • tratar input como estado
  • consultar input apenas em UPDATE
  • separar input de lógica pesada
  • mapear ações, não teclas

E desencoraja:

  • lógica dependente de polling excessivo
  • leitura de input em DRAW
  • acoplamento direto a hardware físico

11. Relação com Consoles Clássicos

O modelo PROMETEU reflete:

  • leitura de registradores de input
  • polling por frame
  • ausência de eventos assíncronos

Esse modelo:

  • simplifica raciocínio
  • aumenta previsibilidade
  • facilita debugging

12. Implicações Pedagógicas

O Periférico INPUT permite ensinar:

  • diferença entre evento e estado
  • amostragem temporal
  • determinismo em sistemas interativos
  • sincronização entre input e lógica

Com feedback claro e reproduzível.


13. Resumo

  • input é estado, não evento
  • amostrado uma vez por frame
  • imutável durante o frame
  • consultas têm custo explícito
  • input participa do CAP
  • modelo é determinístico

< Voltar | Sumário | Adiante >