Skip to content

Controller Pak is never detected — connected_pak is hardcoded to RumblePak #24

Description

@jasonjimmo

Description
The PC port never reports a Controller Pak as connected, even when the original N64 game (and standard emulators) would detect one. Controller 0's device info is hardcoded to always report a Rumble Pak, with no Controller Pak option and no dynamic detection at all.

Where in the code
src/game/input.cpp, function recomp::get_connected_device_info():

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,
    };
}

There is no branch that ever returns a Controller Pak, and nothing dynamically checks what accessory should be reported.

Expected behavior
The game should detect/report a Controller Pak the way it does on real hardware or in emulators, for anything gated on Controller Pak presence (e.g. custom parts check screens, Controller Pak transfer features).

Actual behavior
Controller 0 always reports Pak::RumblePak, so the game never recognizes a Controller Pak as being present.

Version
v1.0.0 (initial release)

Notes
This may be an intentional simplification tied to the port's instant-load/save-state design rather than a true oversight, but flagging it since it changes behavior versus original hardware/emulators.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions