Skip to content

42 Networks's GMBU project - a GameBoy/GameBoy Color emulator

Notifications You must be signed in to change notification settings

rvan-mee/play-man

Repository files navigation

play man logo

🕹️ Play Man

An awesome retro console emulator written in c++.
Made with ❤️ by @rvan-mee and @K1ngmar

⚙️ Requirements

  • Cmake version >= 3.22.1
  • A compiler with >= c++17 support

🔨 How to install

# clone the respository
$ git clone --recurse-submodules [email protected]:rvan-mee/play-man.git

# create build folder
$ mkdir build
$ cd build

# generate build files
$ cmake ..

# build the project
$ make install

# play some awesome emulated games
$ cd ../bin
$ ./play-man

🛠️ Tools used

👾 Graphics, input and audio library

For our graphics, input and audio we use Simple DirectMedia Layer. We chose this library because it grants us low level access to the graphicshardware, audio and input devices. It also supports OpenGl and Direct3D.

⛏️ Building

We chose CMake for our C++ project due to its flexibility, portability, and ability to manage complex build systems effectively.

🧑‍🔬 Unit testing

For our unit tets we chose Catch2 as it is quick and easy to get started with no external dependencies, has cmake integration and is well established.

📋 Settings and serialization

For our settings and serialization we used nlohmann's json library. This is very usefull as it supplies an easy interface for serializing classes into json see. On top of that it integrates nicely with our enum macro for storing enum values in the json see.

🗺️ Emulation Roadmap

🎯 Supported compilation targets

  • pc
    • linux
    • windows
    • mac
  • Raspberry pi
  • Webassembly
  • Phone
    • Android
    • Iphone
  • Micro controller? (hopefully some day)

💻 Devices to emulate

  • Gameboy
    • Gameboy
    • Gameboy Color
    • Gameboy Advanced
  • Gamecube
  • Ds
  • N64
  • NES
  • SNES

🛈 Sources

About

42 Networks's GMBU project - a GameBoy/GameBoy Color emulator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published