ClownMDemu – A Lightweight, Accurate Sega Mega Drive Core

ClownMDemu is a highly accurate and minimalist Sega Mega Drive (Genesis) emulator core for RetroArch, based on the ClownMDemu project by Clownacy. It focuses on delivering cycle-accurate emulation of the Mega Drive’s core components, including the 68K CPU, Z80 co-processor, and VDP, with exceptional timing precision.

This emulator is written entirely in C with no dependencies, resulting in a clean and lightweight implementation that’s ideal for developers, preservationists, and purists who seek faithful reproduction of original hardware behavior.

Key Features:

  • Cycle-accurate emulation of the Sega Mega Drive (NTSC).
  • Low-level implementation of CPU, VDP, and audio hardware.
  • No external dependencies – completely standalone.
  • Focus on accuracy over compatibility – may not run every game, but emulates supported games with high fidelity.
  • RetroArch core version maintained as part of the libretro ecosystem.

This is not a general-purpose emulator for casual use, but rather a project aimed at accuracy and educational value. Perfect for those interested in emulator development, reverse engineering, or testing Mega Drive hardware behavior with pixel-perfect precision.

Link

Rename file in clownmdemu_libretro.dll

8 Likes

I was just looking at this the other day but was having trouble compiling it (linux).

Clownacy is a respected and accomplished emudev, and it’s great to see them working on an open source Gen/MD emu with CD/32x on the roadmap.

5 Likes

with windows you just need to rename the file, It works.

It is working on Linux using CMake (indeed, there are some issues using directly the Makefile)

git clone --recursive https://github.com/Clownacy/clownmdemu-libretro.git
cd clownmdemu-libretro
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release  ..
make -j$(nproc)

Sorry just a noob passing through here, would you know if this works with the recently “released” Paprium and if you have (by a very small margin) a copy made to work with the Unico MVSX aracade machine? Thanks!

No, the only way to play Paprium right now is the unofficial Genesis Plus GX core. Give it some time.

I was not expecting to find a thread dedicated to my emulator here! The issues with building the core have now been addressed (I was so used to building with CMake that I forgot to test the Makefile).

What would it take to have my emulator provided by RetroArch’s online updater? I imagine that the biggest hurdle to adoption right now is the need to download and install this core manually.

5 Likes

hey, welcome!

It’s actually really easy. We have a gitlab recipe that you can modify to work with your core’s build process (either static makefiles or cmake are fine), and then we just need to add your repo to the crawl list and our buildbot will take care of the rest. The recipe just needs to go in the top level of your repo. If that’s not possible for whatever reason, we have some workarounds.

Here’s an example recipe using a static makefile (you can just comment out any platforms that either won’t work or you don’t want to work lol): https://github.com/libretro/snes9x/blob/master/.gitlab-ci.yml

Are you on discord, by chance? If so, you’re welcome to stop by our server (the #programming channel is a good place for this sort of thing) and we can help hammer out any details.

EDIT: oh yeah, we’ll also want to make a core info file, which handles metadata for the frontend to know some things about the core, and add it to the libretro-super repo.

Here’s our annotated example info: https://github.com/libretro/libretro-super/blob/master/dist/info/00_example_libretro.info

and here’s one for Genesis Plus GX (you can probably reuse quite a bit of it): https://github.com/libretro/libretro-super/blob/master/dist/info/genesis_plus_gx_libretro.info

4 Likes

Hi,

Also, we have a little howto/sum up in the documentation.

3 Likes

Whoops, thanks - didn’t think to look past the end of all that API documentation.

I’ve followed the documentation’s instructions and added a ‘.gitlab-ci.yml’ file to my Git repository, and opened pull requests to libretro-docs and libretro-super. Hopefully I got it all right.

I’ll lurk in the Discord server in case anything else needs sorting out. Thanks for all the help!

3 Likes

Tried it but just comes up to the Now Loading Screen and gets stuck there and can’t go further

Press Start and Screen just Flickers

How do I get it to work?

MegaDrive/Gensis work fine but not Sega CD Games

Hi,

May you try to provide some log to get some information ?

Thank you.