Mac controls guide

Mega Man X: Viral Nightmare Controls on Mac

By RetroHours

Game by Cat Yard Games

On this page

The game opens, but a button does the wrong thing—or your controller lights up while the game ignores it. Start by separating the game's actions from the keys RetroHours sends. Matching those two layers is more useful than repeatedly importing the same ZIP.

This guide covers RetroHours' browser controls on Mac. All personal tiers, including guest, Free and paid users, need admin approval of their exact game files before play. Compatibility remains experimental. A successful import, a passing browser check or a detected controller does not establish that this game works on your Mac. No macOS, browser or physical-controller combination was validated while preparing this guide.

If you are choosing how to run the game, first compare your Mac play options. For the import and approval workflow, use the existing browser play guide. The steps below are for checking input once an eligible session can start.

Keep the creator's controls separate from the player controls

Cat Yard Games documents these defaults in the project's Basic Controls section. The creator says you can change them in the game; your release or saved settings may therefore differ.

Game actionCreator-documented key
MoveArrow keys
Shoot / menu confirmA
Jump / menu returnZ
Special attackS
DashX
Weapon / menu swapQ and E
StartEnter
SelectBackspace

These are game actions. RetroHours' Fullscreen, Enable sound, Stop and Controls buttons belong to the browser player. Pressing a controller face button does not inherently mean “shoot”: it sends whatever input its current binding specifies.

The creator documents controller support for the game. That does not verify controller support through every Mac compatibility layer, VM or browser runtime.

Check keyboard focus before changing bindings

  1. Click the game screen so it receives your keys.
  2. If your game still uses the documented defaults, try Enter for Start and A for menu confirmation. Check the game's own controls if those bindings have changed.
  3. Press Tab to move focus back to the player buttons. Tab is reserved for leaving the game screen in RetroHours.
  4. Open Controls and check the Buttons table if the game receives the wrong key. After editing, return to the game and click its screen again.

RetroHours has three relevant columns: Game gets is the key sent to the game; Keyboard is the physical key you press; Controller is the controller input that activates that row. The key letters shown here follow the creator's defaults. RetroHours matches physical key positions, so inspect your bindings rather than assuming a different keyboard layout has identical letter positions.

For example, if you prefer another physical key for Jump, keep Game gets set to the game's Jump key and change Keyboard. Changing what the game receives has a different purpose: matching an action that the game expects on a different key.

Fix the Select mismatch explicitly

The current RetroHours default profile sends Space from its Select row. The creator's documented Select key is Backspace. That mismatch matters for the controller and for any keyboard key routed through the Select row.

In Controls → Buttons, find Select. To match the creator defaults, choose its Game gets key and press the key that produces Backspace. Then check Keyboard too: changing Game gets may also change a keyboard binding that followed the old value. On a Mac keyboard, identify the backward-delete key rather than assuming a keycap label; verify that RetroHours actually displays Backspace after capture.

Return to the game, click its screen and test the relevant action. This is a documented configuration difference, not a reproduced Mac bug or a promise that changing it will fix every menu problem. Do not reset all bindings if you only need to change one row.

Set up a controller through keyboard bindings first

  1. Connect or pair the controller using its normal Mac procedure, then return to the RetroHours tab.
  2. Press a controller button so the browser can disclose the device. Open Controls and check the displayed device and whether inputs light up.
  3. Set Controller sends → Keys for a keyboard-mapped starting point. Fresh RetroHours profiles use Keys; an existing profile may retain Controller mode.
  4. In Buttons, set each Game gets value to the key your game expects. Choose a controller input for each desired row and press that input to bind it. Use the creator table as a starting point, including E for weapon swap and Backspace for Select; don't assume the player defaults cover every game action.
  5. Close Controls, click the game screen and release all buttons and sticks before testing again. The runtime waits for neutral input after focus or connection changes.

The row named A in the player is a virtual button label, not the keyboard letter A or a promise of the game's confirm action. For example, the current player's A row sends Z, which the creator documents as Jump / menu return. Choose mappings by the game action and Game gets value, rather than matching letters between different kinds of buttons.

Controller sends → Controller instead lets a game read a standard-mapped controller directly. Use that only as a separate test of the game's controller path. Keys and Controller modes are alternatives, not two inputs to enable together. A pad with its own non-standard browser layout needs Keys in the current runtime. Device detection and button highlighting prove only that the browser sees input; verify the game response separately.

Troubleshoot the symptom you can observe

What happensNext check
Nothing respondsClick the game screen. Check the game's expected Start and Confirm keys and whether the player is waiting for a start or sound prompt
Keyboard works; controller does notCheck the detected device, use Keys, inspect Game gets, release the controls and return focus to the game
Controller buttons light up; game ignores themDetection is working, but the mode or game mapping may differ. Check Controller sends and the actual keys the game receives
Confirm or Jump performs the wrong actionCompare the creator's defaults with the game's settings and Game gets. Don't infer action from a face-button letter
Select does nothingCompare the game's expected Select key with the player's Space default; inspect the Backspace mapping
Character moves without inputRelease the stick and buttons, then inspect activity in Controls. Try a measured dead-zone adjustment in Tuning only if the stick is visibly off-centre
Sound is silentSelect Enable sound if offered; check player and Mac volume. This is separate from input mapping
Fullscreen is confusingUse the player's Fullscreen control. On a keyboard, Esc exits fullscreen. The game's own display setting is separate
Game stops with a runtime messageRead the message and browser check. Remapping or reimporting cannot implement an unsupported runtime feature

If the ZIP never imports, input settings are not the next step. Read the error in Add game, check its displayed size limit and use the complete game package. A shortcut, installer or ZIP with only an executable is not the complete supported package. Follow the existing guide's import instructions; this controls article does not prescribe repackaging or a replacement download.

Keep saves safe while you investigate

Use Saves to export a backup before removing files or clearing site data. Guest and Free local saves belong to this browser and device. Changing a binding does not require deleting them. Stop a running session with the player controls before leaving it.

For a useful report, record the game release, Mac model and chip, macOS version, browser version, controller model and connection type, input mode, expected action and observed result. Include the exact error if one appears; leave account details and game files out of public screenshots. Help is the existing help entry point.

Cat Yard Games created Mega Man X: Viral Nightmare; the creator's controls are the source for the game-action table. Mega Man belongs to Capcom. RetroHours supplies an independent browser runtime and this usage guide; it does not claim affiliation or creator endorsement.