-
Notifications
You must be signed in to change notification settings - Fork 16
Contributing
Open the solution with your IDE of choice and build the solution.
Recommended IDEs are:
It's recommended to disable "Use external console" (Run > Modify Run Configuration...), as it breaks spdlog's text coloring and reduces both startup and runtime performance.
Commits should, if possible, be reduced to individual work units and not contain multiple unrelated changes, barring situations where, for example, API changes require updating callsites.
The commits should be formatted as follows:
[Module]/[Kind]: [Description]
Module
describes the module affected by the commit, usually by filename (e.g.: EncodingManager.cpp
)
Kind
loosely specifies the groups affected by the change. Can be:
-
Dev
(internal change with little to no effect on users) -
Fix
(a bugfix) -
Feat
(a new feature or noteworthy change in functionality of an existing feature).
Example commits:
AVIEncoder/Fix: Fix encoder crashing on frame 32
ConfigDialog/Feat: Add reset settings button
The project is divided into 3 layers: Shared, Core, and View.
The layered approach should be respected in new commits, such that no architectural violations (such as directly accessing UI elements in the emulation core) are introduced.
The shared layer contains code with no dependencies other than the STL and project libraries (e.g.: libdeflate).
This layer contains shared code, such as helpers, contracts, core types, and the config. All other layers can reference the shared layer and utilize its code, hence the name.
The core layer contains the emulation core data and code, with access to the shared layer, STL, and project libraries.
This layer must be driven by the view layer, and is allowed to call into contract functions defined in the shared layer and implemented in the view layer.
The view layer contains references to the other layers, implements the required contracts, and drives the view layer.
Platform-specific references (e.g.: Windows.h) are only permitted in the view layer.