Thank you for wanting to contribute. Here are some guidelines.
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.
./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.
Do this where Spice86.sln is located:
$ dotnet build
Do this where Spice86.Tests.csproj is located:
$ dotnet test
This project works already quite well for rewriting games such as DUNE, but it is still in early development.
As such, there is a lot of code that needs to be written, especially for emulating additionnal hardware, remaining Memory features such as XMS, CPU 286/386 instruction set unit tests, DOS services, BIOS services, and low-level interrupts.
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.