Thank you for wanting to contribute. Here are some guidelines.
JetBrains Rider (free) or Visual Studio Community (free) are the best for dotnet work.
VSCode and C# Dev Kit are free and fine too.
Emulate the hardware of the IBM PC (and compatible clones), allowing it to run games written for real mode.
Additionally, it should enable the reverse engineer to understand and replace the game's logic, piece by piece.
For example, new emulator APIs should be public in order to give access to all of the emulator when overriding assembly code with C# code.
- Try to emulate protected mode and protected mode games. Protected mode is out of scope of this project. Well, unless you manage to make C# overrides of assembly code work with protected mode nicely...
-
./src: Contains all of the emulator, including the UI.- For the most part, the source code is broken down into directories representing the various pieces of hardware to be emulated. Examples:
./src/Spice86.Core/Emulator/Memory/contains the code for managing memory and monitoring memory read/write access..src/Spice86.Core/Emulator/Functions/contains functions tracking APIs../src/Spice86.Core/Emulator/ReverseEngineer/contains Reverse Engineering APIs.
-
'tests' : contains all the unit tests. They are centered around ensuring that the CPU and low level emulation and C# overrides still work.
Do this where Spice86.sln is located:
$ dotnet buildDo this where Spice86.Tests.csproj is located:
$ dotnet testThis project works already quite well for rewriting games such as DUNE, but it is still in early development.
There is still some amount of code to be written, especially for emulating additionnal hardware, reamaining CPU tests work for 32 bit, DOS services, BIOS services, and such.
The standard issue template is used.
Pull Requests are welcome. See the PR template for more details.
- Commits to be merged should pass all checks (should build, and pass tests)
- Comments are important, especially when contributing emulation code. Technical information is hard to find.