Archive October 2019

SEGA Mega Drive / Genesis (Project Lunar) Hack Update Part 6

Hi all, this is a quick blog update as one of us is away for a few days so we wanted to get a blog update out before hand.

To summarise what key features that have been done recently:

– Internal (NAND) only mod finalised and working

-External Storage mod finalised and working

– Multi firmware support added (if running USB, you can run upto 9 different region/custom firmwares)

– Memory optimisation working. (More performance and less crashes)

– Desktop App development underway.

– Editing and removal of stock 40 roms will NOT be supported on first release. (It will be added in, in a future release)

Now to touch on a few subjects in more detail…

Yes, there will be an internal only mod available as of the first release. We heard you loud and clear so we prioritised this feature and it’s now working.

External media is now working too with external savestates. Below will be a small screenshot outlining how we plan on it working.

We have also provisioned the functions to delete savestates however we haven’t made an interface for it yet as we are still undecided how to implement this feature.

Due to high demand, we added in the ability to load in / patch in upto 9 custom/stock region firmwares on your console safely.

This means if you had 4 different region firmwares you can switch between them on the usb or even have a mix of stock and custom set ups which can be run from your console. These firmwares are selectable from the options menu on console.

We just finished the memory optimisation to go along with the CPU tweaks.

This involves adding 122MB ZRAM compression and an optional 255mb SWAP memory sponge if you are using external media.

This will give you minor increases in performance in memory intensive loads and the swap also ensures that any memory leaks/ static loads get adsorbed by the SWAP instead of the DRAM or ZRAM ensuring you are able to squeeze as much as you can out of the memory. This also comes with the added benefit of less OOM crashes.

The desktop app is under development as we speak. We currently have two desktop apps being worked on in parallel with the first release app being windows based. (Cross platform will come in future release of the second desktop project)

Lastly a somewhat negative point. To confirm, the first release will NOT support the removal or swapping of the original 40 stock roms, only the addition and managing of extra roms will be initially supported. This is due to the huge complexity of managing this process with the stock UI  and it is going to cause too much grief and potential pit falls for the initial release. We rather limit the scope a bit and have the project more refined/stable before adding in more complex features.

Thanks again for the continued support and patience. As we said before, we don’t intend to be the first but we hope that we get it right the first time and give you guys a good experience from the word go.


Screenshots of region swapping on a JPN console:

How savestates on external media will work:

Memory optimisation in effect:

SEGA Mega Drive / Genesis (Project Lunar) Hack Update Part 5

Hi all this is a bit of a clarification post more than an update post. However before you read on any further, please watch this video…

Yes, that’s booting directly to stock menu, with extra elements added to stock menu, all running from NAND. (Courtesy of Cyanic)

We are aware it’s completely 50/50 between the people who want the “completely stock + extra games” approach vs the people who want to be able to customise their mini to get the most of it.

We understand this and we are trying our best to cater to everyone’s wants and needs.

Therefore we put together a quick FAQ of recent comments and questions we have had over the last week which will hopefully answer your questions.

I don’t want to boot to a boot menu! I just want to boot directly to the stock UI 

That’s fine! The boot menu is designed so you have access to extra config options on console like adjust the CPU clock speed, enable SSH/SFTP and hopefully in the future, a savestate manager where you can actually delete save states! However…

On first boot after install, you can just set whatever item to boot directly to. (Stock UI, RA, maybe Emulation Station?) and then on every reboot you will boot directly to that element.

The above screen is a mock however this should give you a good idea what to expect.

Also if you need to boot to the boot menu after setting auto boot to stock UI… you can hold a button on boot to boot up boot menu.

This should make everyone happy, if you have it set to boot directly to stock UI you wouldn’t really know it’s been modified otherwise!

I don’t want to plug in a usb I just want it to run from internal storage!

That’s fine too. Storage is limited though and currently after the mod and RA install, we are hoping you will have approx 190mb for roms/cores/savestates. (This is what we are aiming for and could very much change by RC1 so don’t hold us to it!)

This will mean you will be using all of the rootfs_data partition on the NAND which original purpose was for savestates. If you use all the space you won’t be able to save any more. However we believe this is the best solution that caters for all.

I want the full experience with OTG and external usb. Is this possible?

Not a problem, OTG still needs some more testing but external storage is working fine. No power restrictions like the PSC either. You should be able to plug a usb stick in one of the ports or otg adapter. (You can also use a usb hub on either otg or front ports)

When the stick is inserted, project lunar will auto detect, mount and then overlay it self on top of the existing NAND partitions effectively increasing the available storage completely eliminating the worry about disk space.

Why can’t it just be like the (S)NESC and just drag and drop

If only. Unlike the (S)NESc where you could effectively dump a rom on the NAND and upload a .desktop file with an execute command…Or the PSC where you upload the rom, intercept the launch request and upload index data to an internal db…The Mega Drive mini is a lot more complex…

This is why. You are looking at the UI, emulator, configs, elements and roms within 3 files. That’s it. The data is also encrypted and compressed using M2’s own proprietary methods just to make life difficult. Any data/roms being fed back into the emulator also needs the same encryption and compression otherwise it will refuse to load.

So to give an idea on just adding one rom to the stock UI, we need to:

  • Extract the data file
  • Decompress the data files
  • Decrypt the data files
  • Inject need rom
  • Dynamically modify and rewrite parts of the Stock UI code
  • Add the artwork into an artwork file
  • Add to the file index data relating to rom
  • Re-encrypt all the data files again
  • Compress the data files
  • Bundle the data files

And this is generalising the process! Needless to say this is a lot more complicated than what we have worked with in the past however we have got it working and currently working on it. The end user should hopefully not even know this whole process is taking place in the background

How much internal storage is available?

We are hoping 190mb as explained above.

How will the hack work?

It’s still TBD. The general idea is that you plug your console into the pc holding the reset button, run our desktop program which will backup and install and then you are good to go.

This is a separate project from hakchi and will be it’s own module. (Please take note above about the complexity of the mod. Because of this we are effectively having to create tools from scratch)

This desktop UI will most likely be primitive but easy to use on first release. It will eventually become more fully fledged as we progress and the intention is that it will eventually become a single module of a multi platform tool in the future.

TL;DR, it’s not going to be all singing and dancing on day one but it will be easy to use and functional. We have a roadmap and a vision, given enough time and support we will endeavour to make it as good as we can for you all.

When is it coming out?

When it’s ready. There is no deadline and we are in no rush to be the first either. We will be posting updates as and when we can to keep you all updated. However when we near RC1 we might go radio silent whilst we concentrate, eat pizza and work till the early hours to make it RC viable.

Right now there is at least one dev working on the project 24/7 so we are currently working as hard as we can!

Can you send me the roms/artwork?

No! Please, please, please stop asking. We do not endorse or encourage the distribution of copyrighted materials. It’s against the law. We write OSS and we honour the companies who put out these devices and don’t wish to get in trouble with them.


THANK YOU! The support from everyone has been overwhelming and generally super positive. We also appreciate your patience and we hope we can give you all some extra enjoyment out of your mini in the future.

P.s please note whilst we want as many features available on release as possible. Everything is subject to change, elements might get cut or delayed due to time constraints etc. Same goes for internal storage and hack method, until we put the project through it’s paces it’s unknown if we have thought about every issue/problem.

Bonus screenshots and video


SEGA Mega Drive / Genesis (Project Lunar) Hack Update Part 4

RE-enabling Debug mode, re-implementing hidden features, hidden ROMs on consoles  (with complete rom listings for EUR/JPN/US), POC adding elements to Stock UI

Today’s update will be a mass dump of screenshots and one liners of things that were dumped on the discord as and when they were discovered. We have currently been working on rewritting aspects of the stock UI and injecting them back into M2Engage to re-enable some hidden features and things.

Full ROM lists for the JPN/EUR/US consoles

Turns out there are hidden roms on the JPN and EUR consoles! Full listings are below (We are still waiting to dump the ASIAN version) < These are the 50hz ROMs on the EU console. (Funnily enough if you changed the language to JPN for example, it will likely play the 60hz versions of the roms… < EU MD rom list < JP MD rom list < US MD rom list

Re-enabling DEMO mode

Turns out they left DEMO mode in there. Enabling it limits you to 10 games, deactivates automatic game demos, menus and save/loading.

Re-enabling DEBUG mode


Unfortunately (at least based on the dumps from day 1 retail units) the NAND is missing the main debug menu but enabling it still enables a bunch of other debug features. One of which shown above with the build datetime for M2engage and contents. There is also a bunch of button tests that show up with the pause menu when playing games.

Manipulating the UI/Adding more elements

Here we are setting the transparency for the pop up windows (Which IMO look a lot better with semi transparency!) and adding extra rows to the title select to allow for more elements. It turns out by default M2 hardcoded the UI to only allow a hardcoded number of titles on the title select screen. This is something we will need to patch out and most likely rewrite (because the code is somewhat crap) to allow a dynamic number of elements on the title screen. However as a POC this is promising stuff.

Re-enabling a bunch of hidden features (Jukebox, multiplayer, leaderboards, debug menu and more)

Pre-warning not a lot of this stuff is usable, atleast in the hacked in state which we re-enabled it however it’s fully navigatable and animated. Given some extra time and effort it is very possible to not just re-enable some of this stuff but maybe actually make it fully functional.

A lot of people asked what button combination this was. (It wasn’t one) We had to recode a bunch of the UI to re-enable it. Also there appears to be a SECRET_MENU. We ran out of time to look into it further but it seems to enable options to enable and toggle a SECRET WALLPAPER and 3D MODE FILTER. We have no idea if this works and we doubt the SECRET WALLPAPER asset still exists but it’s cool it’s there.

Oh there is a very strong indication that the port of M2engage used on the mini is based off the one used by M2 on their XBOX360+PS3 Classic Collection series as there is a LOT of the xbox 360 code still there.

That’s it for now. Hope you enjoyed this post


p.s. if you haven’t already please subscribe to our main subreddits and discord to keep up to date with any updates. (It  helps us out alot, but please don’t feel obliged to!)

SEGA Mega Drive / Genesis (Project Lunar) Hack Update Part 3


Hi all, just a small update on the project as we are still being asked for more news. Because we are busy with the project, this will be just a small (unstructured) blog update. We will just bullet point things that have happened since the last blog post so apologises on the quality of post.

  • Things are full steam ahead as have now gotten our hands on the EUR/JPN/US models and have managed to dump them all and learn all of their secrets and stuff we needed to know. Yay!
  • We are still working on the best way to inject the mod. We have a Custom Kernel almost there so that’s currently still being worked on.
  • Currently a lot of work is being piled into the payload (the meat of the hack) so far we have coded up and tested:
    • Enabling RNDIS – Added SSH + SFTP support
    • Added fully loaded busybox
    • Enabling NAND RW access
    • Disabling ROOT password
    • ZRAM Compression optimisation
    • Fixed the clock speeds to 1.344ghz
    • Added MOTD + other ssh helpful stuff
    • Full kernel backup and FileSystem backup
    • On console repartitioning and FS setup for more internal storage
    • Added RetroArch 1.7.9 with working gamepad support
    • Other stuff and things
  • We did a full test run with the 1.344ghz clocking by leaving a MD mini clocked at 1.344ghz running for 48hours running rom demos via the stock m2engage emulator. We never exceeded 48c and SSH+SFTP remained open without crash so we believe this is more than viable and safe to use. (That being said we won’t take any responsibility for any damage it may cause and it will be an optional toggle if you wish to use the “Blast Processing” mode.)
  • We asked the members on the discord for a couple of games that had lag spikes in and we recorded a couple of videos running them at 1.344ghz and it appears the lag went away. You can find those videos here:
  • To Answer a people regarding 32x and Mega CD. Yes it’s possible and feasible, here was a demo of 32x games running on the MD mini at stock 1.0ghz for a base level test. (We was going to do a megaCD one too but had bad image at the time)

So, there is a lot going on right now and the project is still underway so please don’t panic if we aren’t posting updates everyday. Again we aren’t going to rush this, set any deadlines or make any big promises. If we are the first people to release a hack then great, however that’s not our aim, our aim is to get something out that on day 1, people will be able to appreciate.

If you haven’t already, jump in the discord where you can discuss about the Megadrive or ask any of the devs questions here: it’s also nice to have the community discussing and keeping the chat rooms buzzing!

Lastly two open questions for you all…

  • Check our the ASCII logo above image. Can you do better with our Project Lunar logo? The requirements is that it must be ascii, max 38 char wide and 12 lines high. Send them in comments below!
  • If you also check the screenshot you will also see the available space on the NAND as it currently stands in MB. It’s not a lot… Also each save state can take upto 850kb and it works out to 3/4 of the DATA partition. We want to offer a no USB solution however our gut feelings is that it would be safer and easier (also ware out the nand less) if we did a small payload on console and have the roms/cores/ra loaded on a USB in a number of ways:- USB drive via OTG cable out back
    – USB drive via one of the front ports (limited to one controller)
    – USB drive via a hub in either OTG or front portI know this is a downer for some however due to the layout of the nand OOTB and how the stock UI/Emu operates it won’t give us much of leg room to work with. This being said we will still endevour to make internal only a viable solution. The question is…Is this a big game killer for you? If so let us know. If it turns out all of you only want internal only then we will look into this with more urgency.

Thanks again for all your support!