Camen Design Forum

MaSS1VE: The Master System Sonic 1 Visual Editor


Should any be wondering where this project has been going for the past year, I've been working on a new Z80 assembler to be able to assemble the Sonic 1 disassembly I've made. A new language / assembler is needed because existing assemblers are limited to a line-by-line scope and cannot handle a large, dynamic assembly without tedious amounts of high-maintenance. Project page:

Recently, the new assembler ("OZ80") was able to assemble Sonic 1, sans the dynamic / macro parts of the OZ80 code. This screenshot shows a comparison between the original Sonic1 ROM and a ROM produced by OZ80, demonstrating that OZ80 is assembling the ROM in-step, but not yet filling in the dynamic values (jump addresses).

In order to handle the dynamic parts of the assembling process, we need a virtual machine. At first I attempted designing my own syntax for one, but this was more effort than it was worth, so I opted to implement a Forth system (read about Forth here: )

Forth systems make good VMs because there are very simple to implement on just about any architecture. Here's a screenshot of SIXTH, my VB6-Forth-like, playing with the stack.

So the chain of turtles currently looks like:

*MaSS1VE > Sonic 1 disassembly > OZ80MANDIAS (assembler) > SIXTH (VM)*

Which is why MaSS1VE itself has not seen much work recently, but the overall picture is still being work on nearly daily. Once I have a working assembler, I can better probe the workings of the game, which allows me to implement the features of MaSS1VE.

A long way to go still...


(Leave this as-is, it’s a trap!)

Only the original author or a moderator can append to this post.

Pro tip: Use markup to add links, quotes and more.

Your friendly neighbourhood moderators: Kroc, Impressed, Martijn