Still in early Alpha, many features are in active development
The Hacker's Notebook is a program designed to solve two problems.
The first is a lack of hex editors available which are:
- Cross platform
- Intuitive
- Functional
- Fun to use
The second, is a lack of direction and consolidation of tools for basic rom hacking and documentation. More specifically, much of the exploration phase of rom hacking is tedious and error prone, and often relies on searching through data in a hex editor.
To address the first, The Hackers Notebook:
- Is built in WxWidgets, a cross platform GUI which is well known, looks appropriate on every platform, and uses C++
- Follows basic design principles for an intuitive program
- Has many functions specifically for rom hacking, but also provides the functionality of a hex editor and documentation builder regardless of use case
- Has the goal of making basic rom hacking fun by removing some of the barriers to entry and some of the more confusing aspects of rom hacking
To address the Second: The Hacker's Notebook seeks to consolidate many of the programs needed for basic rom hacking such as a hex editor, gfx viewer, palette editor, patch making tool, and basic documentation editor. This consolidation leads to a synergy between these tools as well. The hex editor can add document entries and create patches based on recent changes, while the documentation editor naturally creates bookmarks for the hex editor. The goal is that all three elements of the program (documentation, rom editing, patches) work in tandem to make the process of basic rom hacking (translation, gfx editing, palette editing, rom searching and documenting, simple patches, etc.) a seamless process that works the same way on any desktop operating system (in fact, it is being developed on MacOS, an operating system which is traditionally not well-supported in rom hacking tools).
Let's take a look at some of the features!
Documentation is a large part of the Hackers Notebook. A document entry consists of a title, category, optional longer description, and an address. This allows the user to quickly see what the address is, and if a longer description is needed, they can click the '?' button next to the entry.

The address of a documentation entry also doubles as a bookmark for the hex editor. Double clicking the address will take you to the specific offset within the hex editor. Documentation will also be able to export in different formats, be searched and sorted, and more. A documentation entry can also optionally contain the byte data within a specified range.
Creating patches for small changes, like so-called 'hex tweaks' has always been a little error prone. If you wanted to test out a patch or hex edit and you forgot to make a back up, you would have to manually reverse those changes to the rom. In The Hackers Notebook, patches are made to be applied and reversed with the click of a button. They are displayed with a checkbox to say whether the patch is applied, not applied, or does not match the current bytes in those locations. This allows the user to easily make and test patches without having to worry about reversing or remember what changes were made. And just like document entries, patch entries can also contain an optional longer form description.

The rom editor is at its core a hex editor (with support for tables and other features helpful for rom hacking), but it's got a trick up its sleeve. It can also render the rom in other ways. You don't only have to look at the rom as byte data, you can search through the rom while viewing it as characters (with support for multi-byte character tables), colour data, or even graphics data. This allows the user to quickly identify different parts of the rom, and ultimately, will allow for editing in each type of view mode. It currently supports editing in byte, character, and palette modes.

You can even edit colours with the native system colour picker, and it will automatically convert up and down from 24bit colour to whichever bit depth you have currently selected!
Here is a breakdown of the hex editor view in terms of wxWidgets objects. The dotted lines represent sizers.


