diff --git a/src/game/controls.cpp b/src/game/controls.cpp index f0c3b72..0bb3857 100644 --- a/src/game/controls.cpp +++ b/src/game/controls.cpp @@ -79,6 +79,10 @@ bool recomp::get_n64_input(int controller_num, uint16_t* buttons_out, float* x_o uint16_t cur_buttons = 0; float cur_x = 0.0f; float cur_y = 0.0f; + + if (controller_num != 0) { + return false; + } if (!recomp::game_input_disabled()) { for (size_t i = 0; i < n64_button_values.size(); i++) { diff --git a/src/game/input.cpp b/src/game/input.cpp index 7b3e403..b625782 100644 --- a/src/game/input.cpp +++ b/src/game/input.cpp @@ -447,7 +447,24 @@ void recomp::poll_inputs() { } void recomp::set_rumble(int controller_num, bool on) { - InputState.rumble_active = on; + if (controller_num == 0) { + InputState.rumble_active = on; + } +} + +ultramodern::input::connected_device_info_t recomp::get_connected_device_info(int controller_num) { + switch (controller_num) { + case 0: + return ultramodern::input::connected_device_info_t { + .connected_device = ultramodern::input::Device::Controller, + .connected_pak = ultramodern::input::Pak::RumblePak, + }; + } + + return ultramodern::input::connected_device_info_t { + .connected_device = ultramodern::input::Device::None, + .connected_pak = ultramodern::input::Pak::None, + }; } static float smoothstep(float from, float to, float amount) { diff --git a/src/main/main.cpp b/src/main/main.cpp index 17e38a8..f730074 100644 --- a/src/main/main.cpp +++ b/src/main/main.cpp @@ -408,6 +408,7 @@ int main(int argc, char** argv) { .poll_input = recomp::poll_inputs, .get_input = recomp::get_n64_input, .set_rumble = recomp::set_rumble, + .get_connected_device_info = recomp::get_connected_device_info, }; ultramodern::events::callbacks_t thread_callbacks{