Skip to content

fix: RetroAchievements identification for custom Paks and multi-system emulators - #775

Merged
frysee merged 1 commit into
LoveRetro:mainfrom
apommel:ra-console-autodetect
Jul 20, 2026
Merged

fix: RetroAchievements identification for custom Paks and multi-system emulators#775
frysee merged 1 commit into
LoveRetro:mainfrom
apommel:ra-console-autodetect

Conversation

@apommel

@apommel apommel commented Jul 12, 2026

Copy link
Copy Markdown

Currently, the RetroAchievements integration relies on a mapping of the NextUI emulator tags (in ra_consoles.h) to identify the running console and then the game. If the console is not detected, the integration stops the identification. There are a few cases in which this approach can cause issues:

  • When running a libretro core from a Pak with a custom tag (which would not be listed in the header), it will not be identified.
  • When running an emulator that supports different consoles, the emulator tag will not allow to map to a console 1 to 1.

At the same time, rcheevos is able to auto-detect the console from the game when using the console ID RC_CONSOLE_UNKNOWN.

This PR improves the detection logic. It maintains the console mapping by emulator, preserving the existing behaviour. However, when the console cannot be detected from the mapping, the detection will not fail directly and will instead be handled by rcheevos by passing RC_CONSOLE_UNKNOWN.

Because of this, the RA_initMemoryRegionscall was moved from ra_do_load_game to ra_game_loaded_callback. There was a comment saying that the memory regions must be initialized before loading the game, but as far as I could test, this is not the case.

@apommel apommel changed the title Fix RetroAchievements identification for custom Paks and multi-system emulators fix: RetroAchievements identification for custom Paks and multi-system emulators Jul 12, 2026
@frysee

frysee commented Jul 12, 2026

Copy link
Copy Markdown
Member

Looks good to me, what do you think @clintonium-119?

@clintonium-119

Copy link
Copy Markdown

LGTM 💯

@frysee
frysee force-pushed the ra-console-autodetect branch 2 times, most recently from 0c5b48d to 1cb683b Compare July 19, 2026 17:00
@frysee
frysee force-pushed the ra-console-autodetect branch from 1cb683b to 569fb39 Compare July 19, 2026 22:22
@frysee

frysee commented Jul 19, 2026

Copy link
Copy Markdown
Member

I think we're ready to merge this, @apommel could you quickly signal support for #765 ?

@apommel

apommel commented Jul 20, 2026

Copy link
Copy Markdown
Author

@frysee I consent to have this contribution and any future contribution relicensed to Polyform Noncommercial License 1.0. I'll also put it in the dedicated issue.

@frysee
frysee merged commit ebac427 into LoveRetro:main Jul 20, 2026
62 checks passed
@apommel
apommel deleted the ra-console-autodetect branch July 20, 2026 06:59
carroarmato0 added a commit to carroarmato0/NextUI that referenced this pull request Jul 26, 2026
… pak fixes

New upstream features merged:
- Color palettes: 18 bundled palettes + user-loadable palette dir (LoveRetro#787)
- FN1/FN2/HOME can now launch user-assigned tool paks (LoveRetro#788)
- Keep device awake while connected as USB gadget (LoveRetro#783)
- RetroAchievements identification for custom paks and multi-system emulators (LoveRetro#775)
- Brick Pro rumble limited to 2.5V (was 3.3V, too strong)
- Align Brick/Pro rumble strength

Conflict resolutions (C++20 branch vs upstream):
- nextui.cpp: kept RAII core::SurfacePtr, took upstream THEME_COLOR7 for preview fill
- minput.c: kept GFX_getFonts() and pad-> accessors, took upstream button rendering
  (ALT_BUTTON_TEXT_COLOR, text_color local, GFX_blitAssetColor, THEME_COLOR2 for sticks)
- tg5040 platform.c: accepted conditional MAX_VOLTAGE for Brick Pro; RUMBLE_PATH
  not needed (branch uses deviceModel->rumble_gpio_path from DeviceDescriptor)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants