SameBoy | Accurate GB/GBC emulator |
| download: https://git.y1.nz/archives/sameboy.tar.gz | |
| README | Files | Log | Refs | LICENSE |
Core/joypad.h
1 #pragma once
2 #include "defs.h"
3 #include <stdbool.h>
4
5 typedef enum {
6 GB_KEY_RIGHT,
7 GB_KEY_LEFT,
8 GB_KEY_UP,
9 GB_KEY_DOWN,
10 GB_KEY_A,
11 GB_KEY_B,
12 GB_KEY_SELECT,
13 GB_KEY_START,
14 GB_KEY_MAX
15 } GB_key_t;
16
17 typedef enum {
18 GB_KEY_RIGHT_MASK = 1 << GB_KEY_RIGHT,
19 GB_KEY_LEFT_MASK = 1 << GB_KEY_LEFT,
20 GB_KEY_UP_MASK = 1 << GB_KEY_UP,
21 GB_KEY_DOWN_MASK = 1 << GB_KEY_DOWN,
22 GB_KEY_A_MASK = 1 << GB_KEY_A,
23 GB_KEY_B_MASK = 1 << GB_KEY_B,
24 GB_KEY_SELECT_MASK = 1 << GB_KEY_SELECT,
25 GB_KEY_START_MASK = 1 << GB_KEY_START,
26 } GB_key_mask_t;
27
28 typedef void (*GB_update_input_hint_callback_t)(GB_gameboy_t *gb);
29
30 void GB_set_key_state(GB_gameboy_t *gb, GB_key_t index, bool pressed);
31 void GB_set_key_state_for_player(GB_gameboy_t *gb, GB_key_t index, unsigned player, bool pressed);
32 void GB_set_key_mask(GB_gameboy_t *gb, GB_key_mask_t mask);
33 void GB_set_key_mask_for_player(GB_gameboy_t *gb, GB_key_mask_t mask, unsigned player);
34 void GB_icd_set_joyp(GB_gameboy_t *gb, uint8_t value);
35 bool GB_get_joyp_accessed(GB_gameboy_t *gb);
36 void GB_clear_joyp_accessed(GB_gameboy_t *gb);
37 void GB_set_allow_illegal_inputs(GB_gameboy_t *gb, bool allow);
38 void GB_set_emulate_joypad_bouncing(GB_gameboy_t *gb, bool emulate);
39 void GB_set_update_input_hint_callback(GB_gameboy_t *gb, GB_update_input_hint_callback_t callback);
40 void GB_set_use_faux_analog_inputs(GB_gameboy_t *gb, unsigned player, bool use);
41 void GB_set_faux_analog_inputs(GB_gameboy_t *gb, unsigned player, double x, double y);
42
43 #ifdef GB_INTERNAL
44 internal void GB_update_joyp(GB_gameboy_t *gb);
45 internal void GB_joypad_run(GB_gameboy_t *gb, unsigned cycles);
46 internal void GB_update_faux_analog(GB_gameboy_t *gb);
47 #endif
This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.