#ifndef GBC_RENDER_H #define GBC_RENDER_H #include "gb.h" void term_init(void); void term_restore(void); void render_frame(GB *gb); void render_force_full(void); // force a complete repaint next frame void render_set_hud(int frameskip, bool turbo); // update HUD readout // Switch terminal output to sixel graphics (scale = integer pixel zoom, >=1). // Pass on=false to use the default Unicode half-block renderer. void render_set_sixel(bool on, int scale); // Poll keyboard + control FIFO, update gb->buttons. False if quit requested. bool input_poll(GB *gb); // Optional external control channel: a named pipe (FIFO) that accepts button // commands (see README). Safe to call once at startup. void input_open_fifo(const char *path); void input_close_fifo(void); // Process one line of button-command tokens (the FIFO/socket input vocabulary: // a b start select up down left right; name:N; +name / -name; release). Shared // by the FIFO and the richer socket control channel. void input_handle_command(const char *line); // Returns true once for each pending fast-forward (turbo) toggle keypress. bool input_take_turbo(void); // Net frameskip adjustment requested via '[' / ']' since last call. int input_take_frameskip_delta(void); #endif