CHGame 0.3.0
Libraries for the CHGame handheld
Loading...
Searching...
No Matches
Input.h File Reference

Buttons and frame pacing: the Arduboy-flavoured front of the CHGame board. More...

#include <stdint.h>

Go to the source code of this file.

Classes

class  CHGame
 The board's buttons and frame clock. There is one, chgame. More...
 

Macros

#define A_BUTTON   (1u << 0)
 The A button (PB1).
 
#define B_BUTTON   (1u << 1)
 The B button (PB6).
 
#define UP_BUTTON   (1u << 2)
 D-pad up (PB4).
 
#define DOWN_BUTTON   (1u << 3)
 D-pad down (PC14).
 
#define LEFT_BUTTON   (1u << 4)
 D-pad left (PB3).
 
#define RIGHT_BUTTON   (1u << 5)
 D-pad right (PC15).
 
#define START_BUTTON   (1u << 6)
 START (PB8). Held 3 s, it leaves for the menu (CHGame::startExits).
 
#define SELECT_BUTTON   (1u << 7)
 SELECT (PB7).
 

Functions

uint8_t chgame_readButtons ()
 Read the buttons straight from the hardware.
 
void chgame_exitToMenu ()
 Leave the game for the bootloader's game menu.
 

Variables

CHGame chgame
 The one instance: chgame.boot(), chgame.pressed() ...
 

Detailed Description

Buttons and frame pacing: the Arduboy-flavoured front of the CHGame board.

Started from the helper shared by CHSpriteView/CHMultiSprite/CHStlView and reworked for the casino games, which all used this copy:

  • button masks are parenthesised, so ~UP_BUTTON and A|B behave;
  • every query reads the state captured by pollButtons(), so a frame sees one consistent snapshot and injected input (debug protocol, simulator) behaves exactly like a real press;
  • nextFrame() uses a microsecond accumulator, so 60 fps is 60.0, not the 62.5 that 1000/60 = 16 ms gave;
  • a lockstep mode lets the debug protocol step the game frame by frame;
  • auto-repeat for held buttons (menus, bet adjust);
  • holding START for 3 s leaves for the SD game menu (startExits).