prometeu-runtime/docs/runtime/specs/06-input-peripheral.md
2026-03-24 13:40:47 +00:00

4.0 KiB

Input Peripheral (Input System)

1. Overview

The INPUT Peripheral is responsible for collecting and providing the state of controls to the PROMETEU program.

In PROMETEU:

  • input is state, not an implicit event
  • input is sampled over time, not delivered asynchronously
  • input has a defined order, cost, and moment

Buttons do not “trigger events”. They change state.


2. Philosophy of the Input System

PROMETEU models input like classic hardware:

  • the state of controls is read once per frame
  • the program queries this state during UPDATE
  • there are no asynchronous input callbacks

This model:

  • is deterministic
  • is simple to understand
  • reflects microcontrollers and classic consoles

3. Input Devices

PROMETEU abstracts different devices into a common interface.

Typical devices:

  • digital control (D-Pad + botões)
  • keyboard (mapped to buttons)
  • gamepad
  • touch (mobile, mapped)

Regardless of the origin, PROMETEU exposes the same logical model.


4. State Model

4.1 Per-Frame State

For each frame, the system maintains:

  • current state of buttons
  • state from the previous frame

This allows querying:

  • button pressed
  • button released
  • button held down

4.2 Query Types

Typical operations:

input.btn(id)// button is pressed
input.btnp(id)// button was pressed this frame
input.btnr(id)// button was released this frame

These functions:

  • are purely advisory
  • do not change state
  • have an explicit cost

5. Sampling Moment

The input state is captured at the beginning of each frame, before the UPDATE phase.

Conceptual flow:

FRAME N:
SAMPLEINPUT
UPDATE
DRAW
AUDIO
SYNC

Throughout the entire frame:

  • the input state is immutable
  • repeated calls return the same value

Input does not change in the middle of the frame.


6. Determinism and Reproducibility

The PROMETEU input model guarantees:

  • same sequence of inputs
  • same frames
  • same results

This allows:

  • execution playback
  • deterministic replays
  • reliable certification

Input can be:

  • recorded
  • played back
  • artificially injected

7. Input and CAP

Input operations:

  • consume few cycles
  • participate in the per-frame budget
  • appear in certification reports

Example:

Frame 18231:
input.btn():12cycles

Although cheap, input is not free.


8. Button Mapping

8.1 Logical Identifiers

PROMETEU defines logical button identifiers:

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

The physical mapping:

  • depends on the platform
  • is resolved outside the VM
  • is transparent to the program

8.2 Portability

The same PROMETEU cartridge:

  • runs on a keyboard
  • runs on a gamepad
  • runs on touch

Without any code changes.


9. Analog Input (Optional)

PROMETEU can expose analog axes explicitly:

input.axis(id)

Characteristics:

  • normalized value (e.g.: -1.0 to 1.0)
  • explicit cost
  • per-frame update

Analog input:

  • is not mandatory
  • does not replace digital input
  • must be used consciously

10. Input Best Practices

PROMETEU encourages:

  • treating input as state
  • querying input only in UPDATE
  • separating input from heavy logic
  • mapping actions, not keys

And discourages:

  • logic dependent on excessive polling
  • reading input in DRAW
  • direct coupling to physical hardware

11. Relationship with Classic Consoles

The PROMETEU model reflects:

  • reading input registers
  • per-frame polling
  • absence of asynchronous events

This model:

  • simplifies reasoning
  • increases predictability
  • facilitates debugging

12. Pedagogical Implications

The INPUT Peripheral allows teaching:

  • the difference between event and state
  • temporal sampling
  • determinism in interactive systems
  • synchronization between input and logic

With clear and reproducible feedback.


13. Summary

  • input is state, not an event
  • sampled once per frame
  • immutable during the frame
  • queries have an explicit cost
  • input participates in the CAP
  • model is deterministic