11 March 2016 - Forum Rules

Main Menu

Solomon's Keychain - Vanilla Solomon's Key editor

Started by kaimitai, December 20, 2022, 01:32:35 PM

Previous topic - Next topic


I wanted to announce a project which is nearing its first release; an editor for Solomon's Key. I have made tools for DOS games before, and these can be found on my Github for anyone interested.

This time I am working on my first NES ROM hacking tool, and I chose to work on a game I played a lot as a child. This project presented me with some new challenges, but I currently have a very capable editor for Solomon's Key levels, as I was able to map all level data in the ROM, a lot of which didn't make much intuitive sense. (Along with the editor I will publish my ROM map document as part of the docs)

The editor supports editing level metadata, item data, enemy data and some overall game metadata. Any item in any level can be selected and moved around with the mouse, and using a tile picker new elements can be placed.

The editor comes with a big configuration xml which can be used to customize the editor, from tile picker layouts down to how the graphics are extracted from the ROM.


I was working on a hack of Solomon's Key back in 2006, haven't touched it since. When I used SKedit years ago it expanded my ROM, I'd like to give your editor a shot with my hack.

In case you wanna check out my hacked levels, here's my YouTube video of what I did back then.

But I do hope to see more eye candy of your SK editor soon. :D 


Thanks for your reply. I have visited your YouTube before actually, as I was checking out the various hacks out there while developing my editor. I am on vacation until mid January, so I haven't had the time to finish it up yet, but as soon as I write the documentation and finish my last test cycle I will release and post in this thread. I expect around Jan 20.

It is interesting that you mention SKedit, as that editor will expand the ROM. This is for good reason though, as it allows inserting more stuff in the levels - and creates demon mirror enemy sets and drop rates per level, rather than the 16 which are available in the original game.

I plan on supporting the SKEdit format in the future, but I had no luck reaching the developers of that editor - which means that I have to reverse engineer their work.

My first release will only allow "vanilla" hacks, which means that people who want to use this for level editing need to work under the same constraints as the original developers, at least for now.

One more screenshot:


We're getting close to the first release, but I wanted to make good on my promise of a ROM map document for the game first. This doc might be fairly technical, but it is by far the most correct and comprehensive ROM map available as far as I know:'


I am happy to announce the initial release of the editor.


Direct Link to the repository releases (with win-x64 precompiled binaries):


New release available:

I added support for automatically determining the ROM region and applying the appropriate config parameters.

Going forward I will work on supporting a different ROM mapper as an option for increasing ROM size, to make the editor "skedit-compatible".


We're not sleeping on the laurels after releasing the editor; development for supporting expanding ROMs is well underway. The feature branch for "skedit-compatibility" supports parsing such ROM-files and loading them into the editor.

We will work on saving expanded ROMs back to file (fairly trivial since we know how to parse them) but this is an optional feature; vanilla hacks will remain fully supported.

A screenshot of level 17 of skedit-hack "Solomon's Key - Unlocked" by Aether Knight.


Major improvements have been made, and a new release v1.0 has been published on github!

  • Added support for ROM expansion, to exceed the original size limits! (adds compatibility with skedit)
  • Added support for editing demon mirror drop rate schedules and enemy sets directly from the Selected Demon Mirror-window
  • Added support for drawing background blocks regardless of editing mode (using keyboard buttons 1-3)
  • Made it possible to hide all metadata elements (placing them at position (0, -1))
  • Added support for setting item/enemy code directly - among all possible codes - from the "Selected Element"-window
  • Can now turn off foreground rendering by holding keyboard button Escape

I have accomplished all my major goals with the editor; seamless support for editing all ROM types in a user-friendly way. Barring any serious bugs, this will be the last release in a while.


After using the editor during the last week, I added some features I was missing.

Version 1.1 has been released, and we will now go into maintenance/bugfix mode. I have posted some open questions about the ROM map that I may start investigating more.

Changes since v1.0:

  • The rendering order of layers and elements depend on whether the ROM has been expanded or not. The editor should now correctly reflect the actual output in either case
  • Foreground rendering can be toggled on/off per layer (metadata, items and enemies)
  • Associate all items and enemies (including glitchy elements) with graphics and descriptions
  • Support for clearing all level data for a given level, to quickly provide a "blank canvas" for editing
  • The Demon Mirror Enemy Set editor interfaces will use the tileset of the currently loaded level when presenting the enemy graphics
  • Support for giving ROM region code as a command-line parameter, to override the automatic region deduction
  • Added a new section in the readme; technical documentation of the data layout of expanded ROMs