GithubHelp home page GithubHelp logo

andry-dev / momiji Goto Github PK

View Code? Open in Web Editor NEW
2.0 3.0 1.0 2.3 MB

Basic m68k emulator

License: Mozilla Public License 2.0

CMake 4.66% Shell 1.51% C++ 90.46% C 0.01% Dockerfile 0.31% JavaScript 1.63% HTML 1.27% CSS 0.16%
emulator cpp

momiji's Introduction

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.

momiji's People

Contributors

andry-dev avatar

Stargazers

Ilia Sharin avatar Andrew Johnson avatar

Watchers

James Cloos avatar  avatar Paul Wratt avatar

Forkers

paulwratt

momiji's Issues

Convert the icon from KRA to SVG

While Krita was useful to sketch the icon (both in bitmap and in vector), it's time to actually create an SVG that doesn't suck: the default exported layer from Krita is kinda bad in some spots.

It should be possible to fix things manually in a couple of hours.

Missing documentation

This entire project lacks any kind of documentation.

Goals

Write sane documentation that includes an API reference, tutorials, how-tos and explanations. Right now I'm experimenting with LaTeX in a local branch.

Motivation

I used, in the past, tools like Doxygen; while they are nice for keeping in sync declarations between code and the generated pages, they just create an API reference, nothing more nothing less. These kind of things give you a false sense of "documentation", it's no better than using grep on a codebase to figure out what functions are in there and what are the preconditions.
Unfortunately, I also used projects structured like that and the "documentation" was unhelpful, that's why I want to try and make something different.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.