This commit is contained in:
2026-07-02 15:32:34 -04:00
commit 693216fb46
8 changed files with 266 additions and 0 deletions

93
README.md Normal file
View File

@@ -0,0 +1,93 @@
# emulator
A simple emulator built in C++17 using SDL2 for video/audio. It loads a ROM
file from disk, maps it into memory, and runs a fetch/decode/execute loop
rendered to an SDL window.
## Prerequisites
- **C++17 compiler** — MSVC (Visual Studio 2019 or 2022 Build Tools) on
Windows. The project is currently configured for the MSVC toolchain.
- **CMake** 3.21 or newer (required for the CMake Presets feature).
- **Ninja** — used as the build generator.
- **vcpkg** — dependencies are declared in `vcpkg.json` (manifest mode), so
vcpkg fetches them automatically on first configure. A working vcpkg
installation must be available on the system.
- **Git** — for cloning and for vcpkg to fetch package sources.
## Project layout
```
.
├── CMakeLists.txt # build definition
├── CMakePresets.json # configure/build presets (vcpkg + MSVC + Ninja)
├── vcpkg.json # dependency manifest (sdl2, sdl2-image)
├── .vscode/ # editor / IntelliSense config
├── src/
│ ├── main.cpp # entry point: parses argv, runs the emulator
│ ├── emulator.hpp # Emulator class declaration
│ └── emulator.cpp # Emulator class implementation
└── build/ # generated after configure (gitignored)
```
## Installation
1. **Clone the repository**
```sh
git clone <repo-url> emulator
cd emulator
```
2. **Ensure vcpkg is installed**
If you do not already have vcpkg, clone and bootstrap it:
```sh
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
```
Note its root path — you will reference it in the next step.
3. **Point CMake at the vcpkg toolchain**
`CMakePresets.json` sets `CMAKE_TOOLCHAIN_FILE` to:
```
C:/Program Files (x86)/Microsoft Visual Studio/18/BuildTools/VC/vcpkg/scripts/buildsystems/vcpkg.cmake
```
If your vcpkg lives elsewhere, edit the `default` configure preset
(or create a `CMakeUserPresets.json` next to `CMakePresets.json`) so the
`CMAKE_TOOLCHAIN_FILE` value matches your vcpkg install.
## Setup & build
Configure and build with the bundled preset (uses vcpkg manifest mode, so
`sdl2` and `sdl2-image` are installed automatically on first configure):
```sh
cmake --preset default
cmake --build --preset default
```
The resulting executable is placed in `build/` (e.g. `build/emulator.exe`).
## Running
Pass a ROM file as the only argument:
```sh
.\build\emulator.exe <rom-file>
```
Press **Esc** or close the window to quit.
## Editor / IntelliSense
VS Code IntelliSense is configured in `.vscode/c_cpp_properties.json` to read
`build/compile_commands.json` (generated by the `default` preset). Configure
the project once with `cmake --preset default` so the compile database exists;
IntelliSense will then resolve `SDL.h` and the project headers correctly.