Checks if D-pad direction just pressed this frame (single press detection).
Takes controller (controller handle from inpCreateController, positive integer), direction (D-pad direction constant: 0=up, 1=down, 2=left, 3=right).
Returns 1 if direction just pressed, 0 otherwise.
Input
Parameters & Returns
Parameters
controllerInt
directionInt
Returns
Int
Quick Summary
Checks if D-pad direction just pressed this frame (single press detection).
Takes controller (controller handle from inpCreateController, positive integer), direction (D-pad direction constant: 0=up, 1=down, 2=left, 3=right).
Returns 1 if direction just pressed, 0 otherwise.
Technical Exegesis...
Checks if D-pad direction just pressed this frame (single press detection). Takes controller (controller handle from inpCreateController, positive integer), direction (D-pad direction constant: 0=up, 1=down, 2=left, 3=right). Returns 1 if direction just pressed, 0 otherwise. Detects D-pad press edge (transition from released to pressed), returns true only once per press.
Checks if D-pad direction just pressed this frame (single press detection). Takes controller (controller handle from inpCreateController, positive integer), direction (D-pad direction constant: 0=up, 1=down, 2=left, 3=right). Returns 1 if direction just pressed, 0 otherwise. Detects D-pad press edge (transition from released to pressed), returns true only once per press.
D-pad hit detection: 1=direction just pressed this frame (was released last frame, pressed this frame), 0=direction held (already pressed last frame), 0=direction released (not pressed), single-shot detection (returns 1 only on first press frame, then 0 until released and pressed again).
Direction values: 0=up (north), 1=down (south), 2=left (west), 3=right (east), diagonal presses may activate two directions simultaneously (up+left returns hit for both on first frame), direction values 0-3 only (other values return 0 or error).
Use cases: (1) Menu navigation (move cursor up/down/left/right one item per press), (2) Discrete movement (grid-based games, move one tile per press), (3) Item/weapon selection (press left/right to change weapon once per press), (4) Turn-based input (select direction once for turn-based action), (5) Combo inputs (detect D-pad sequence for fighting game combos).
Common patterns: menu cursor = If inpControllerDPadHit(controller%, 0) Then cursorIndex=cursorIndex-1 (move up once); grid movement = If inpControllerDPadHit(controller%, 3) Then playerX=playerX+1 (move right one tile); weapon cycle = If inpControllerDPadHit(controller%, 2) Then weaponIndex=(weaponIndex-1) MOD weaponCount; combo detection = If inpControllerDPadHit(controller%, 0) Then comboSequence$=comboSequence$+"U".
DPadHit vs DPadDown: inpControllerDPadHit returns 1 only on first press frame (single-shot detection, use for menu navigation/discrete movement), inpControllerDPadDown returns 1 every frame while held (continuous detection, use for continuous movement), DPadHit prevents auto-repeat (one action per press, ideal for menus), DPadDown enables continuous movement (auto-repeat behavior, ideal for character movement).
Common usage: use DPadHit for menu navigation (press up to move cursor one item, not rapid scrolling), use DPadHit for grid movement (press right to move one tile, not continuous sliding), use DPadDown for continuous movement (hold right to keep moving), use DPadDown for camera panning (hold direction to pan continuously).
Performance: fast query (~0.001ms, simple state comparison), safe for per-frame calls (intended usage pattern), no controller update required (reads cached state from last inpUpdateController).
Controller state: requires inpUpdateController called each frame (updates D-pad state from hardware), compares current frame to previous frame (detects edge transition), D-pad state from previous update (call inpUpdateController before querying).
Return values: 1 if direction just pressed this frame (edge detected), 0 if direction already held (was pressed last frame), 0 if direction released (not pressed), 0 on error (invalid controller handle or direction ID).
Validation: returns 0 for invalid controller handle (prints error if handle out of range), returns 0 for invalid direction (direction not 0-3), check inpIsControllerConnected before use (avoid querying disconnected controllers).