-
Notifications
You must be signed in to change notification settings - Fork 114
Component map
higan is made up of various components, some of which have been renamed over the years, some of which have been replaced. This should help you figure out how all the pieces fit together — you might want to use your browser's search-in-page feature to find the term you're interested in.
The umbrella term for the project as a whole.
Depends on:
Previously known as:
- ares (from v111 to v115)
- higan (from v091 to v110)
- bsnes (until v091)
The original name of the project, renamed to higan in v091 after it had accumulated so many non-SNES emulation cores that the name had become silly.
Later, after higan had grown even more complex, byuu launched a new "bsnes" that was based on higan's SNES emulation core but wrapped in a SNES-specific interface. Where higan focuses on accurate emulation and simple code, bsnes adds a lot of features that make the code more complex, but also more convenient to use.
Depends on:
For most of the project's life, higan has only had one user-interface, so "higan" referred to both the emulation cores and the user-interface that presented them to the user.
Once the alternative byuu interface was added, the previous interface was renamed "higan-ui" to distinguish it from the "byuu" interface and from the emulation cores common to both.
Depends on:
Previously known as:
- luna (from v111 to v115)
- higan (from v107 to v110)
- tomoko (from v095 to v106)
- ethos (from v089 to v094)
Originally, "byuu" was the name of higan's author. After higan v107 was released with a dramatically more complex UI, byuu decided to create a simpler, more approachable UI hoping to mirror the popularity of the new bsnes.
However, there was no conveniently-available and well-known name like "bsnes" for the new interface, so he renamed himself "Near" and called the interface "byuu".
Depends on:
Previously known as:
- lucia (from v111 to v115)
- byuu (from v108 to v110)
higan's goal was always to document and preserve game console behaviour as accurately and concisely as possible, but widely-used formats for ROM dumps often omit important information. It's always possible to guess at the omitted data, but putting that code suggests that the original console behaved that way, and prevents the emulator from running perfectly legitimate games that trick the emulator into guessing wrongly.
byuu's solution was to have higan use a fixed, generic format for ROM dumps, and to put all the guess-work in an external tool that would convert games into that format.
This tool is called "icarus".
Depends on:
Previously known as:
- mia (from v111 to v115)
- icarus (from v095 to v110)
- ananke (from v092 to v094)
- Note that ananke was a dynamic library that could be used by higan not a standalone tool
- purify (from v088 to v092)
- snespurify (from v073 to v087)
- snesreader (from v051 to v073)
- Note that snesreader was often distributed separately from bsnes, so it is not consistently present in the commit history
nall is byuu's alternative to the C++ standard library. As well as providing standard functionality like string processing and data structures, it also provides code shared between byuu's various projects, like cryptography algorithms, audio and image processing, and cross-platform filesystem handling.
hiro is the cross-platform GUI toolkit that higan uses. Unlike other cross-platfrom GUI toolkits, it uses native widgets on each supported platform: GTK+ or Qt on Linux/BSD, Cocoa on macOS, and the standard controls on Windows.
Depends on:
Previously known as:
- phoenix (from v069 to v095)
- higan's primary GUI used the third-party Qt library from v040 to v073
- hiro (from v028 to v039)
- miu (in v027)
- libui (from v020 to v027)
ruby is the interface between a hiro application and platform-specific APIs for emulator output and input. It displays emulated video through OpenGL or Direct3D with shaders; it plays emulated audio through ALSA, OSS, or WASAPI; and it reads gamepad, keyboard and mouse input.
Depends on:
libco is a cooperative multithreading library, which allows higan's code to describe each system component separately, but to run nearly as fast as if every component were woven together.