Skip to content

Commit

Permalink
update how qwiicnes input is managed for better responsiveness.
Browse files Browse the repository at this point in the history
  • Loading branch information
finger563 committed Nov 8, 2022
1 parent 7f4b6a6 commit e0a9e63
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 11 deletions.
18 changes: 9 additions & 9 deletions components/box-emu-hal/src/input.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -285,15 +285,15 @@ extern "C" void get_input_state(struct InputState* state) {
fmt::print("cannot get input state: qwiicnes not initialized properly!\n");
return;
}
qwiicnes->update();
is_a_pressed = qwiicnes->is_pressed(QwiicNes::Button::A);
is_b_pressed = qwiicnes->is_pressed(QwiicNes::Button::B);
is_select_pressed = qwiicnes->is_pressed(QwiicNes::Button::SELECT);
is_start_pressed = qwiicnes->is_pressed(QwiicNes::Button::START);
is_up_pressed = qwiicnes->is_pressed(QwiicNes::Button::UP);
is_down_pressed = qwiicnes->is_pressed(QwiicNes::Button::DOWN);
is_left_pressed = qwiicnes->is_pressed(QwiicNes::Button::LEFT);
is_right_pressed = qwiicnes->is_pressed(QwiicNes::Button::RIGHT);
auto button_state = qwiicnes->read_current_state();
is_a_pressed = QwiicNes::is_pressed(button_state, QwiicNes::Button::A);
is_b_pressed = QwiicNes::is_pressed(button_state, QwiicNes::Button::B);
is_select_pressed = QwiicNes::is_pressed(button_state, QwiicNes::Button::SELECT);
is_start_pressed = QwiicNes::is_pressed(button_state, QwiicNes::Button::START);
is_up_pressed = QwiicNes::is_pressed(button_state, QwiicNes::Button::UP);
is_down_pressed = QwiicNes::is_pressed(button_state, QwiicNes::Button::DOWN);
is_left_pressed = QwiicNes::is_pressed(button_state, QwiicNes::Button::LEFT);
is_right_pressed = QwiicNes::is_pressed(button_state, QwiicNes::Button::RIGHT);
#else
if (!controller) {
fmt::print("cannot get input state: controller not initialized properly!\n");
Expand Down
8 changes: 6 additions & 2 deletions components/qwiicnes/include/qwiicnes.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,13 @@ class QwiicNes {
logger_({.tag = "QwiicNes", .level = config.log_level}) {
}

bool is_pressed(Button button) const {
static bool is_pressed(uint8_t state, Button button) {
int bit = (int)button;
return accumulated_states_ & (1 << bit);
return state & (1 << bit);
}

bool is_pressed(Button button) const {
return is_pressed(accumulated_states_, button);
}

void update() {
Expand Down

0 comments on commit e0a9e63

Please sign in to comment.