/momiji

Basic m68k emulator

Primary LanguageC++Mozilla Public License 2.0MPL-2.0

momiji

A basic Motorola 68000 emulator infrastructure written in C++17. This is not production-ready and I will only ever implement a subset of the assembler.

"momiji" itself refers to the entire project, from the library (libmomiji), the GUIs (momiji-gl and momiji-qt) to the CLI tools (momiji-as, momiji-dump, momiji-diff, etc...).

Motivation

This was created out of frustration from using EASy68k. I wanted something that could be used to make tools and better GUIs, something that supported backtracking, diffs and other stuff. So I started working on this, initially as a REPL, then it evolved in a compiler and disassembler.

libmomiji

The core of the project. It includes a parser (<momiji/Parser.h>), a compiler (<momiji/Compiler.h>), a decoder/disassembler (<momiji/Decoder.h>) and finally an emulator class (<momiji/Emulator.h>) to make everything work together effortlessly.

momiji-tools

Brief description of the provided CLI tools:

Name Description
momiji-as A basic compiler
momiji-dump Yields a compiled program's trace
momiji-diff Creates a diff of two programs executions

Keep in mind that, at the time of writing, they are incomplete and really basic.

momiji-gl

Main GUI, using ImGui and tewi. This is where most features will be implemented. This doesn't work on OSX.

momiji-qt

A Qt GUI, provided for the people who can't run momiji-gl (like OSX users). At the time of writing, this is mostly under-developed.

Building

libmomiji

You need asl to build libmomiji. Just create a conan package for that and then:

mkdir build
cd build
conan install ..
cmake ..

And you're done with just the core.

momiji-gl

You also need tewi, you can either use the local submodule (git submdule update --init) or create the conan package.

Then just pass -DMOMIJI_BUILD_GL_GUI=1 to CMake:

cd build
cmake .. -DMOMIJI_BUILD_GL_GUI=1

momiji-qt

You obviously need Qt5.

cd build
cmake .. -DMOMIJI_BUILD_QT_GUI=1

momiji-tools

Since these are simple CLI tools you don't need anything special (apart from libmomiji, obviously).

cd build
cmake .. -DMOMIJI_BUILD_TOOLS=1

Obviously, you can build all of them at once if you feel like.