Menu

Tree [b80f67] master nightly /
 History

HTTPS access


File Date Author Commit
 .github 2026-07-25 Luke Usher Luke Usher [cdabe5] build: grant release action wire permissions to...
 ares 2026-07-29 Roger Sanders Roger Sanders [274aab] megald: Fix NEC LaserActive fader settings in V...
 cmake 2026-06-05 remutro remutro [aa5df0] Remove driver list controls from settings
 desktop-ui 6 days ago ZengGengSen ZengGengSen [b80f67] input: preserve relative mouse motion between p...
 hiro 2026-05-24 Luke Usher Luke Usher [bdd585] hiro: cleanup some macOS compile warnings and d...
 libco 2025-12-29 invertego invertego [cc4db1] libco: limit scope of section hack to gcc
 mia 2026-07-22 Giovanni Bajo Giovanni Bajo [433d07] n64: implement banked SRAM support (fixes Dezae...
 nall 6 days ago ZengGengSen ZengGengSen [b80f67] input: preserve relative mouse motion between p...
 ruby 6 days ago ZengGengSen ZengGengSen [b80f67] input: preserve relative mouse motion between p...
 scripts 2025-02-03 jcm jcm [1323a6] Update scripts and documentation
 tests 2026-07-18 user user [be3c78] arm7tdmi: prevent STM writeback from modifying r15
 thirdparty 2026-05-25 Luke Usher Luke Usher [cc0e40] msx: use the 'new' tape system rather than hard...
 tools 2025-09-05 Giovanni Bajo Giovanni Bajo [3390d6] stdc++: migrate tools/tests removing uses of na...
 .gersemirc 2025-08-28 jcm jcm [cc4556] build: Update .gersemirc for newer gersemi version
 .gitattributes 2025-05-08 jcm jcm [756ea5] build: Do not require tags, add unofficial vers...
 .gitignore 2026-04-25 remutro remutro [7974ca] Minor Qt6 on Linux cleanup
 CMakeLists.txt 2025-09-19 jcm jcm [907ccf] build: Clarify when to build genius
 CMakePresets.json 2026-05-09 remutro remutro [0d14e4] Update Visual Studio related cmake generators t...
 LICENSE 2025-08-12 Luke Usher Luke Usher [5e0bd5] ld: nall-ize mmi; remove nlohmann/json
 README.md 2026-03-04 awsms awsms [3678a4] Introducing --kiosk mode (#2433)
 deps.json 2026-05-30 remutro remutro [90c655] Update dependencies (post-v148)

Read Me

License: ISC

ares is a multi-system emulator that began development on October 14th, 2004.
It is a descendant of higan and bsnes, and focuses on accuracy and preservation.

It's worth noting that ares takes some uncommon design approaches that essentially trade speed for code clarity. We avoid state machines and bitmasks (when possible). Most cores end up being half the amount of code, but slower. The code is clearer and less spaghettified, especially for systems with lots of processors. C bitfields being non-portable incurs a speedhit. Windows also has a speedhit over Linux due to its ABI needing more instructions to switch contexts.

Official Releases

Official releases are available from
the ares website.

Nightly Builds

Automated, untested builds of ares are available for Windows and macOS as a pre-release.
Only the latest nightly build is kept.

Building ares

ares supports building on Windows, macOS, and various Linux/BSD distributions. See build instructions for:

Command-line options

When started from the command-line, ares accepts a few options.

Usage: ./ares [options] game(s)

  --help                 Displays available options and exit
  --version              Displays the version string of the application
  --terminal             Create new terminal window (Windows only)
  --fullscreen           Start in full screen mode
  --pseudofullscreen     Start in pseudo full screen mode
  --kiosk                Start in minimal UI mode (implies --no-file-prompt)
  --system system        Specify the system name
  --shader shader        Specify a slang shader to load (requires OpenGL or Metal)
  --setting name=value   Specify a value for a setting
  --dump-all-settings    Show a list of all existing settings and exit
  --no-file-prompt       Do not prompt to load (optional) additional roms (eg: 64DD)
  --settings-file path   Specify a settings file override (settings.bml)
  --save-state slot      Specify a save state slot to load (1-9)

The --system option is useful when the system type cannot be auto-detected.
--fullscreen will only have an effect if a game is also passed in argument.

Example:
ares --system MSX examples.rom --fullscreen

Specifying multiple games allows for multi-cart support. For example, to load
the Super GameBoy BIOS and a game in one command (to avoid a file prompt), you
can do:

ares "Super GameBoy.sfc" "Super Mario Land.gb"

The --no-file-prompt option is useful if you wish to launch a game from CLI
without being prompted to load additional roms. For example, some Nintendo 64
games optionally support 64DD expansion disks, so this option can be used to
suppress the "64DD Disk" file dialog, and assume any secondary content is
disconnected.

High-level Components

  • ares: emulator cores and component implementations
  • desktop-ui: main GUI implementation for this project
  • hiro: cross-platform GUI toolkit that utilizes native APIs on supported platforms
  • nall: Near's alternative to the C++ standard library
  • ruby: interface between a hiro application and platform-specific APIs for emulator video, audio, and input
  • mia: internal ROM database and ROM/image loader
  • libco: cooperative multithreading library

Contributing

Please join our discord to chat with other ares developers: https://discord.com/invite/gz2quhk2kv