1.0 / 18-12-2024
Clownmdemu
Accuracy
Performance
Features
Clownmdemu is a Sega Mega Drive (a.k.a. Sega Genesis) emulator that'sactive and looks promising with support for Motorola 68000 instruction durations, save data, Debugger and accurate window plane emulation. written in C++11 and leverages the SDL2,
It also as a Browser and libretro version...
--
Unix platforms: there is also an optional dependency on the Zenity and kdialog projects.
Most Recent Changes
--1.0--
Read the full update report here.
Now supports save data.
H-counter and H-blank approximation.
Correct sprite Y-coordinate wrap-around.
Mega CD games can be drag-and-dropped onto the emulator window.
Massively-optimised CPU idling.
Complete window plane emulation.
Debugger improvements.Overhauled sprite list debugger.
VRAM, CRAM, VSRAM, and External RAM memory viewers.
All memory viewers can save their contents to a file.Correct V-counter in Interlace Mode 2.
Emulate invalid plane width and height settings.
Emulate window plane bugs.
--0.8.0.1--
Fixed crash that would occur when multiple lines of text are printed via KDEBUG
--0.8--
Read the full update report here.
Title bar colour matches the menu bar colour on Windows 11.
Emulated RAM is cleared upon a hard reset.
Audio 'ladder effect' is emulated.
Broken splash screens in the 'Gametap Pro Gamer 6' ROM-hack are fixed.
Support for the 'KDEBUG' debug message API has been added.
Motorola 68000 instructions have accurate durations.
Preliminary native multi-window support has been implemented. Due to defects, it is disabled by default.
--0.7.1--
Read the full update report here.
Fixed the window icon being blurry on Windows when using a high-DPI display.
Fixed identically-named Recent Software list entries clashing with each other when being navigated with a keyboard.
Added support for 'ISO+OGG', 'ISO+FLAC', 'ISO+MP3', and 'ISO+WAV' Mega CD disc rips.
Read the full update report here.
--0.7--
Read the full update report here.
Fixed missing audio in After Burner II.
Fixed flipped graphics in Jim Power.
The game's name in now shown in the window title.
Partially-implemented the V counter.Fixed OutRun and OutRun 2019.
Vastly-improved Mega CD support.Sonic CD is now playable from beginning to end, aside from its special stages.
New stub BIOS.
PCM emulation added.
CDDA emulation added.6-button controller emulation added.
Improved YM2612 emulation:Per-operator frequency emulation added.
CSM emulation added.
SSG-EG emulation added.
Fixed Sonic 3's Competition Mode menu music.
Fixed Contra: Hard Corps' snare.Fixed latency when toggling rewinding while frame-advancing (#7).
Fixed build errors when not using MSVC (#8).
Fixed compatibility with SDL v2.0.18.
--0.6--
Read the full update report here.
Fixed many inaccuracies, benefiting numerous games:Contra: Hard Corps
Castlevania Bloodlines
Thunder Force IV
Mega Man: The Wily Wars
The Adventures of Batman & Robin
Battletoads
Road Rash, Road Rash II, Road Rash III
Skitchin'
The Immortal
Jungle Strike
Marble MadnessAdded two sprite debuggers.
Configuration files are now saved to a standard per-user directory ('AppData' on Windows and '.local/share' on Linux).
Text output of the disassembler and the debug log can be selected and copied elsewhere.
--0.5.2--
Read the full update report here.
Fixed broken graphics in Sonic Crackers, Sonic 3, and Thunder Force IV. Get Combat Cars, Micro Machines, Dynamite Heady, Gunstar Heroes, and Alien Soldier to boot.
Fix Windows XP compatibility.
--0.5.1--
Read the full update report here
Improved audio playback further.
Added a debugger for showing frontend statistics.
--0.5--
Read the full update report here.
Added 'frame advance' (done by pressing the fast-forward key while the emulator is paused).
Added a debug logging window.
Added 68000 disassembler.
Added high-DPI support for all platforms.
Ported to web browsers (clownmdemu.clownacy.com).
Improved audio playback.
Added support for Unicode file paths on Windows.
Added very incomplete Mega CD support.
--0.4.4--
Emulation changes:Fix sprites being culled while still one pixel on-screen at the right.
Frontend changes:Add option to save VRAM to file.
Fix barebones file save dialog not working at all.
Fix broken scaling on macOS and Linux.
Add drag-and-dropped files to the Recent Software list.
Optimise debug menus while the emulator is paused.
Make ALT+ENTER toggle fullscreen.
Fix various instances of stuck inputs.
Add a Windows executable icon.
--0.4.3--
Emulation changes:Optimised Z80 cycle-counting.
Frontend changes:Add a kdialog-based native file dialog for Linux and the BSDs.
Fix hang when waking PC after several hours.
Fix incorrect plane debugger tile information.
--0.4.2--
Emulator changes:Various optimisations.
Fixed YM2612 not being restarted along with the Z80.
Frontend changes:Added support for native file dialogs on Unix platforms by leveraging Zenity.
--0.4.1--
Emulator changes:Fixed audio corruption in the mixer.
Fixed PSG notes being slightly off-key.
Frontend changes:Fixed audio resampling after changing between NTSC and PAL modes.
--0.4--
See my blog for a full explanation of everything in this update.Emulator changes:
Added support for the YM2612’s timers.
Added support for the Window Plane.
Added support for the 68000’s BCD instructions.
Vastly improved Z80 emulation accuracy.
Fixed 1-cell horizontal scrolling mode.
Fixed VRAM fill.
Implemented YM2612’s ‘BUSY’ flag.
Frontend changes:Added custom Dear ImGui style.
Optimised VRAM viewer.
Added an 'About' menu.
Improved FM debug menu.
Added general VDP debugger.
Abandoned ‘tiny file dialogs’ library.
Added ‘Other’ debugging menu.
--0.3.1--
Cross-post from my blog.
This is just a quick update to address some issues in the previous v0.3 release.
Make FM Debugger More Compact
As you can see, each channel was given its own window, which meant that it was a lot of effort to simply switch from one channel to another without just having all windows open at the same time, which would take up a lot of the screen.Since it's unlikely that a user would ever need to see more than one FM channel's registers at a time, these windows have all been merged into a single tabbed window:Fix DPI Support
Unfortunately, after hyping it up so much in v0.3's release, the default window sizes were broken on DPIs that weren't 150% the standard. I was expecting Dear ImGui to handle DPI differences like this automatically like it usually does, but that's not the case here.I'll have to remember to test this frontend at alternate DPIs before each release to prevent a repeat of this mistake.Add a Horizontal Scrollbar to the Plane Debugger
As the result of yet another strange quirk of Dear ImGui, horizontal scrollbars do not exist by default, even in windows that need them. This affected the VDP's Plane A/B debuggers, which only had a vertical scrollbar. By explicitly telling Dear ImGui to create a horizontal scrollbar, this issue is no more:User-Friendliness Improvements to Keyboard Rebinding
Sometimes it's the small things that matter most.When the user is repeatedly adding key bindings, the newly-extended binding list would push the 'Add Binding' button off-screen, requiring the user to scroll down to be able to press it again. This is a small annoyance, but an annoyance nonetheless, so it has been corrected by automatically scrolling the window down after a new binding is added.Additionally, when selecting an action to bind to a selected key, the selected key is displayed to the user. This extra feedback allows the user to verify that they selected the correct key, instead of them being left in the dark.Fix Phantom Keyboard Inputs After Rebinding
Sometimes, after rebinding the keyboard inputs, the emulated Control Pad would behave as if certain buttons were held when they are not. This was due to edge-cases in how the key-binding system works. For instance, if a key's binding were changed after it has been pressed but before it is released, then the emulator would 'forget' which Control Pad button to release when the key is released. This should no longer be the case.Fix Ugly Seams Around Tiles in VRAM Debugger
Depending on the display's DPI, odd artifacts could appear around the tiles in the VRAM viewer:This was the result of some accidental fractional image scaling. This has been corrected to use the proper integer image scaling, eliminating the seams.Closing
With this much-needed polishing complete, hopefully the next update will include some improvements to the core emulation: Window Plane, SRAM, LFO, SSG-EG, YM2612 Timers - there are plenty of things left to add.
--0.3--
Cross-posted from my blog.
Keyboard Rebinding
One shortcoming of the standalone frontend is that it lacks keyboard rebinding: the W, A, S, and D keys will always control the Control Pad's D-Pad, and so on.But not anymore!New to the frontend is full keyboard rebinding! In addition, the default key bindings have been switched to the more common arrow keys and Z/X/C keys combination.Unlike some other emulators, this system allows the user to bind multiple keys to the same action: for instance, if the user wanted to bind both the 'Z' key and the 'space' key to the Control Pad's 'A' button, then they can do so!It would be pretty frustrating for binding customisations to be lost whenever the program is closed, so support has been added for persistent configuration: settings are saved to a file called 'clownmdemu-frontend.ini', allowing settings such as the keyboard bindings, console region, and V-sync to be remembered by the emulator.Options Menu
Previously, the options would all be managed through the menu bar, but this is quite clunky as the menu bar would close after each option is toggled. To improve the user experience, the options have now been moved to a dedicated menu:This menu provides a much more intuitive way to change options! Additionally, each option shows a tooltip when hovered over with the mouse, allowing unfamiliar users to understand what they do!Default Window Sizes
Another improvement to the user experience is that windows are now given a sane default size, meaning that they will now have a proper size when opened for the first time.Recent Software
Opening the same ROM file over and over again is tedious, so now the emulator keeps a list of the 10 most recent files used:FM and PSG Debugging Toggles
The standalone frontend has had the ability to disable individual VDP planes for ages, but now it can also toggle FM and PSG channels. A dedicated menu has been added for this:PSG Debugger Overhaul
The PSG debugging menu was butt-ugly before, and has been given a makeover:
Support for Alternate PAL Detection Method
Previously, when playing Sonic the Hedgehog 2 with the emulated Mega Drive in PAL mode, the music would play at slightly slower speed, just like it does in the first game. This shouldn't happen.The reason that this was occurring was that the game relies on an alternative method of detecting the PAL video mode: by checking bit 0 of the VDP's control port. This bit should reflect whether PAL mode is enabled or not. Now that this is the case, the game properly detects and accounts for the speed difference in its music, allowing it to play at the proper speed.Assets 3
--0.2--
Second release of the reference frontend for clownmdemu (the first release can be found here).
A binary is provided for Windows, which should support 32-bit x86 Windows XP as a minimum.
Changes from v0.1
Some more debuggers have been added:YM2612 registers
68000 registers
Z80 registers
The core emulator been updated:Optimisations have been made to the 68000 emulation and the master clock ticking subsystems to vastly improve performance.
Rudimentary support for exceptions has been added to the 68000 emulator.
Support for the RLD
and RRD
instructions have been added to the Z80 emulator.
Support for User Mode has been added to the 68000 emulator.
Some bugs in the 68000 emulation have been fixed, making the emulator more accurate and able to run more software properly.