How factor-64/ra2snes works
RA2Snes connects a real SNES through SD2Snes/QUsb2Snes to RetroAchievements: the user signs in, a detected game is identified, achievement data is loaded, and SNES memory is monitored to evaluate and report unlocks. The graph also captures the QML-facing models, live status, and update capability. Core control flow is supported by sampled sources; some model and update details are inferred only from their exact tree paths and the documented product scope.
Main entry points: ra2snes.cpp Session controller · raclient.cpp RA client · ui QML interface · main.cpp Application entry
Components 19
Application and UI
- Application entry
main.cpp - QML interface
ui - Session controller
ra2snes.cpp - Game model
gameinfomodel.cpp - User model
userinfomodel.cpp - Achievement model
achievementmodel.cpp - Achievement filter
achievementsortfilterproxymodel.cpp
Console integration
- USB2SNES client
usb2snes.cpp
Achievement runtime
- Memory reader
memoryreader.cpp - rcheevos runtime
rcheevos
Network services
- RA client
raclient.cpp - Update manager
ra2snes.cpp - Updater
updater.cpp - Network cache
networkcachemanager.cpp
Other components
- Player
- QUsb2Snes server
- SD2Snes / SNES
- RetroAchievements
- GitHub releases
Connections 27
- Player → QML interface: uses
- Application entry → QML interface: loads
- Application entry → Session controller: registers
- QML interface → Session controller: controls
- QML interface → Game model: reads
- QML interface → User model: reads
- QML interface → Achievement filter: filters
- Achievement filter → Achievement model: filters
- Session controller → USB2SNES client: controls
- USB2SNES client → QUsb2Snes server: WebSocket commands
- QUsb2Snes server → SD2Snes / SNES: controls
- SD2Snes / SNES → QUsb2Snes server: memory data
- QUsb2Snes server → USB2SNES client: returns memory
- Session controller → RA client: requests sessions
- RA client → RetroAchievements: API requests
- RetroAchievements → RA client: game and user data
- RA client → Achievement model: updates
- RA client → Game model: updates
- RA client → User model: updates
- Session controller → Memory reader: initializes and polls
- Session controller → rcheevos runtime: evaluates triggers
- Memory reader → rcheevos runtime: builds triggers
- RA client → RetroAchievements: reports unlocks
- Session controller → Update manager: checks updates
- Update manager → GitHub releases: queries releases
- Update manager → Updater: launches
- Application entry → Network cache: configures network cache