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,RIGHTA,B,X,YSTART,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