Skip to content

Emulator Support and Issues

Supported Consoleslink

Console ID Console Name Standalones Cores RALib Support Notes
1 • Sega Genesis
• Mega Drive
Genesis Plus GX
Picodrive
Yes
2 Nintendo 64 Project64 ParaLLEl N64
Mupen64Plus-Next
Yes
3 • SNES
• Super Famicom
• Satellaview
• Sufami Turbo
RASnes9x Snes9x
Mesen-S
Yes
4 Game Boy RAVBA Gambatte
Gearboy
VBA-M
Yes • mGBA crashes when unloading the core because RALibretro doesn't implement the camera interface
5 Game Boy Advance RAVBA mGBA
VBA-M
Beetle GBA
VBA Next
Yes
6 Game Boy Color RAVBA Gambatte
Gearboy
VBA-M
Yes
7 • NES
• Famicom
• Famicom Disk System
RANes Mesen
FCEUmm
QuickNES
Yes
8 • TurboGrafx-16
• PC Engine
• TurboGrafx-CD
• PC Engine CD
• SuperGrafx
Beetle PCE FAST
Beetle SuperGrafx
Yes • SuperGrafx games do not work on the Beetle PCE FAST core
9 • Mega CD
• Sega CD
Genesis Plus GX Yes Appears to still have unmapped RAM (Ecco 1+2)
10 Sega 32X PicoDrive Yes • Several games are problematic
11 • Master System
• Mark III
RAMeka Genesis Plus GX
Gearsystem
Picodrive
Yes
12 PlayStation Beetle PSX
Beetle PSX HW
PCSX ReARMed
SwanStation
Yes
13 Atari Lynx Beetle Lynx
Handy
Yes
14 • Neo Geo Pocket
• Neo Geo Pocket Color
Beetle NeoPop Yes
15 Game Gear RAMeka Genesis Plus GX
Gearsystem
Yes
17 Atari Jaguar Virtual Jaguar Yes • No savestate support
Many issues with the emulation
18 Nintendo DS DeSmuME
MelonDS
Yes • Limited Microphone Support
• No DSi support
23 Magnavox Odyssey 2 O2EM Yes
24 Pokemon Mini PokeMini Yes
25 Atari 2600 Stella Yes
27 Arcade FinalBurn Neo Yes • Needs Updated Board List
• Some boards may not be fully exposed
28 Virtual Boy Beetle VB Yes
29 MSX/MSX2 blueMSX Yes • Hash relies on dsk file not being modified
• .DSK files appear to be unsupported if they also require a cartridge (typically a "sound" cartridge, which was the case with SD Snatcher). There is a core option for this, but it doesn't seem to function properly.
33 SG-1000 RAMeka Genesis Plus GX
blueMSX
Yes
38 Apple II RAppleWin No
39 Saturn Beetle Saturn
Yabause
Kronos
Yes * Saving or Loading states in Kronos often locks up the UI in RALibretro
43 3DO Interactive Multiplayer Opera Yes
44 ColecoVision RAMeka blueMSX Yes
45 Intellivision FreeIntV Yes • Controls are much better than they were
• Crashes if game is reset
• Some crashes that might be related to Intellivoice
46 Vectrex VecX Yes
47 • PC-8001
• PC-8801
RAQUASI88 QUASI88 No • QUASI88 crashes RALib when loading core. Core writes over dsk file when emulator writes to dsk - this breaks hashing
• PC-88VA not supported
49 PC-FX Beetle PC-FX Yes
51 Atari 7800 ProSystem Yes
53 • WonderSwan
• WonderSwan Color
Beetle WonderSwan Yes
63 Watara Supervision Potator Yes

Supported But Not Validatedlink

Console ID Console Name Standalones Cores RALib Support Notes
56 Neo Geo CD NeoCD Appears fully functional. Needs hashing method
41 PlayStation Portable PPSSPP Test Build Appears fully functional for most games

Unsupported Consoleslink

Console ID Console Name Standalones Cores RALib Support Notes
16 GameCube Dolphin Needs work Generates sound but not video in RALibretro
19 Wii Dolphin Needs work Crashes RALib when testing
20 Wii U Untested
21 PlayStation 2 Play
PCSX2
Low compatibility with most commercial games; black screen with stuttering sound
PCSX2 is still in an alpha state, does not yet expose memory.
22 Xbox
26 DOS Needs work Needs a reliable hashing method
30 Commodore 64 vice Needs Work • Cannot find save disk for games like Bard's Tale and Maniac Mansion
• Uncertain how core handles writing to disk - may affect hashing
• How to handle multi-disk games that come in a zip without an m3u?
31 ZX81 EightyOne Needs Work • Memory not exposed.
32 Oric
34 Vic-20 Needs Work Untested with proper BIOS.
35 Amiga P-UAE Needs Work • Seems to run fine if zips are loaded. Memory is not exposed.
36 Atari ST Hatari Needs Work • Memory not exposed. Games seem to run fine.
37 Amstrad CPC Cap32 Needs Work • Memory is exposed
• Has "machine gun" audio bug in several games depending on machine selected.
37 Amstrad CPC CrocoDS Needs Work • Memory is NOT exposed. Seems to run fine. Several games tested.
40 Dreamcast flycast Needs Work Runs too fast
Crashes when unloading core
42 Philips CD-I Untested
48 PC-9800 np2kai Needs Work • Memory is not exposed. Ran all 10 games tested.
50 Atari 5200 Atari800 Needs Work • Appears to work fine, but the core itself is a bit of a headache. The BIOS has to be configured within the core (F1 > Emulator Configuration > System ROM settings).
• Couldn't figure out controls - does Joystick also need to be configured within the core?
• Currently allows loading arbitrary files from the internal menu, bypassing hashing. Can't be supported in hardcore unless that can somehow be blocked.
52 Sharp X68K px68k Untested with proper BIOS
54 Cassette Vision
55 Super Cassette Vision Currently only playable in MAME, which cannot be supported
57 Fairchild Channel-F FreeChaF
FBNeo
FreeChaF exposes memory, but has some control issues
FBNeo appears fine
58 FM Towns
59 ZX Spectrum FUSE • Requires rcheevos memory map to leverage memory descriptors
• Requires ability to map keyboard to port 3 (RALibretro)
• Uncertain about save support; cannot seem to insert save disk
60 Game & Watch gw Doesn't expose memory yet
61 Nokia N-Gage
62 Nintendo 3DS Citra Core doesn't load at all.
64 Sharp X1 X1 Millennium • Does not expose memory
Crashes RALibretro
• Uncertain how core handles writing to disk/tape - may affect hashing
65 TIC-80 TIC-80 Doesn't expose memory correctly (only see 8 bytes)
66 Thomson TO8/TO8D Theodore Seems to work. Uncertain how core handles writing to disk/tape - may affect hashing

Does Not Have Console IDlink

Console ID Console Name Standalones Cores RALib Support Notes
PocketStation pockystation Core doesn't seem functional even in Retroarch
Sega PICO Picodrive Can't be controlled fully, needs controls related to turning pages in attached books
PC-6001
Zeebo
J2ME freej2me Untested

RetroAchievements Emulator Requirements:link

  • If the emulator does not support a feature, the requirement is automatically met. This is primarily a set of guidelines to ensure the interaction between the emulator and the toolkit is consistent between emulators.
  • If the system is supported by RetroArch, explain why a standalone emulator is desirable. RetroArch support is preferred as it is usable by more players (i.e. not just Windows users), and adding support to RALibRetro for an additional core is much easier than overhauling an entire emulator.

Game Identificationlink

  • Hash method documented and approved
  • If emulator supports dynamic patching [i.e. ips], hash is calculated after applying patch
  • Hash ignores any persistent save data [SRAM]
  • Game can be properly identified (RA_OnLoadNewRom and/or RA_IdentifyROM + RA_ActivateGame)
  • Unidentified game provides some descriptor [typically filename] to unknown game dialog (RA_InstallSharedFunctions>RA_GetEstimatedGameTitle)
  • Unidentified game provides list of known games for console (RA_SetConsoleID - which is usually called by RAIntegration in the emulator registration)

Emulatorlink

  • DLL is downloaded if not available (RA_Init - new EmulatorID enum value may be needed in RA_Interface.h)
  • RetroAchievements menu is visible (RA_CreatePopupMenu) and functional (RA_InvokeDialog)
  • RetroAchievements menu updates when logging in/out (RA_InstallSharedFunctions>RA_RebuildMenu)
  • Login dialog displayed on first run or auto-login on future runs (RA_AttemptLogin)
  • Title includes logged in user (RA_UpdateAppTitle)
  • RALog.txt ends with "Shutdown complete" after closing emulator (RA_Shutdown)
  • Full-window overlay can be displayed (RA_SetPaused)
  • Full-window overlay can be navigated (RA_NavigateOverlay)
  • Full-window overlay navigation uses player's custom controller bindings, not hard-coded inputs.
  • Closing the full-window overlay unpauses the emulator (RA_InstallSharedFunctions>RA_CauseUnpause)
  • Overlay is still functional when toggling full-screen mode (RA_UpdateHWnd)
  • Resetting the emulator disables any active popups/leaderboards (RA_OnReset)
  • Performance of emulator (without any debugging windows open) should not be noticeably different than the source emulator at 100% speed
  • Emulator must perform at intended framerate on a PC that could have been purchased at a retail store within the last four years.

Emulated Systemlink

  • Memory mapping method is documented and approved (RA_InstallMemoryBank)
  • Modifying memory affects the game (RA_InstallMemoryBank>pWriter)

Achievements/Leaderboards/Rich Presencelink

  • Achievements can be created
  • Achievements trigger (RA_InstallMemoryBank>pReader, RA_DoAchievementsFrame)
  • Achievement trigger displays notification
  • Achievement can pause emulator [Pause on Reset, Pause on Trigger] (RA_InstallSharedFunctions>RA_CausePause)
  • Achievements are not processed when emulator is paused [HitCount for true condition does not increment] (RA_DoAchievementsFrame not called when paused)
  • When using frame advance, achievements are only processed when the frame is advanced.
  • Changing the current game prompts the user to save modifications (RA_ConfirmLoadNewRom)
    • Choosing not to save modifications aborts changing the current game.
  • Closing the emulator prompts the user to save modifications (RA_ConfirmLoadNewRom)
    • Choosing not to save modifications aborts closing the emulator.
  • Closing the current game prompts the user to save modifications (RA_ConfirmLoadNewRom)
    • Choosing not to save modifications aborts closing the current game.
  • Closing the current game clears the list of achievements for the game (RA_ActivateGame(0))

Softcorelink

  • Save states can be created
  • Save states can be loaded
  • HitCounts persist with save state (RA_OnSaveState, RA_OnLoadState)
  • Speed may be adjusted above 100% [framerate higher than normal]
  • Speed may be adjusted below 100% [framerate lower than normal]
  • Fast-forward [removing frame limiter] is allowed
  • Rewind is allowed
  • Frame advance is allowed
    • Overlay should not be displayed when using frame advance (don't call RA_SetPaused)
  • Recording is allowed
  • Recording playback is allowed
  • Switching to Hardcore resets the emulator (RA_InstallSharedFunctions>RA_ResetEmulation)
  • Switching to Hardcore resets the emulator speed to 100%
  • Switching to Hardcore closes any emulator specific tools for viewing/modifying memory
  • Switching to Hardcore disables any enabled cheats

Hardcorelink

  • Save states can be created
  • Save states cannot be loaded [prompt to switch to softcore (RA_WarnDisableHardcore)]
  • Speed may be adjusted above 100%
  • Speed cannot be adjusted below 100%
  • Fast-forward is allowed
  • Rewind is not allowed
  • Frame advance is not allowed
  • Recording is allowed
  • Recording playback is not allowed
  • Switching to Softcore does not reset the emulator
  • Emulator specific tools for viewing/modifying memory are not allowed [prompt to switch to softcore optional]
  • Emulator specific tools for supporting cheats are not allowed [prompt to switch to softcore optional]
  • Ensure any features not allowed in hardcore are disabled both from menu items and hotkeys

After approvallink

  • Version generated from git tag
  • Zip file needs to be built - should contain emulator, default Overlay directory, and any supplemental files needed by the emulator
  • Backend (to be done by the RAWeb team)
    • Add the emulator's console ID as a "valid" console, so new achievements can be promoted to the Core set (RAWeb:lib/database/game.php>isValidConsoleId).
    • Add the emulator's enum (get the number from RAInterface.h and add it in RAWeb:src/Emulators.php)
    • dorequest.php>latestclient needs to map to LatestXXXVersion.html file when it receives either emulator ID or console ID.
    • Add link to the new system game list in RAWeb:lib/dynrenderer.php>RenderToolbar.
    • Add an entry for the emulator in RAWeb:public/reportissue.php, so people can choose it when opening tickets.
    • Upload zip file to the server
    • Create the LatestXXXVersion.html page.
    • Add a link to the zip file and show the latest emulator's version in RAWeb:public/download.php

Changeloglink

Last 10 changes on this page:

  • [2021-09-20 20:46] Jamiras: Updated Emulator Support and Issues (markdown)
  • [2021-08-21 05:53] televandalist: Marked Intellivision as supported in RALib since apparently we forgot to update it before. Moved PSP up a category.
  • [2021-08-17 21:17] televandalist: Update PSP notes.
  • [2021-07-21 17:02] TheFetishMachine: Made small spelling changes, added MelonDS to supported DS cores, changed notes for DS, added J2ME
  • [2021-06-28 21:25] televandalist: Added Zeebo to the "Does Not Have Console ID" list
  • [2021-06-25 23:05] televandalist: Added MSX2 to console ID 29 + added note about DSK files.
  • [2021-05-19 11:40] televandalist: Added PC-6001 to consoles with no console ID. Added note about PC-88VA for RAQUASI88
  • [2021-05-19 11:32] televandalist: Delete PC-6001 from list of consoles for RAQUASI88
  • [2021-04-26 07:56] Sanaki: Cleanups, new info, corrected core names, etc.
  • [2021-04-25 04:27] televandalist: Removed comment about incorrected memory addresses for PSP since that's been fixed in a new dll.