waterbear is an assembler/disassembler for the Dreamcast VMU.
It aims to be a robust, easy-to-use tool, and meant to make VMU programming bit more approachable.
The error messages are designed to make it easy to find out what went wrong where:
% waterbear assemble example.s -o example.vms [ERROR] Failed to assemble example.s ✘ Name already exists: my_var The name found here... example.s:3:0-12 my_var = $49 ^^^^^^^^^^^^ Duplicate ...was already declared here example.s:2:0-12 my_var = $48 ^^^^^^^^^^^^ Original
waterbear has a macro system.
%macro Safe_8bit_Add %op ; Adds an 8bit number to acc and prevents overflow by maxing acc ; if detected add %op bn psw, 7, .no_carry% mov #$ff, acc .no_carry% %end
The error message will help with macro expansion as well, walking you through which macro expansions occured to generate the invalid code.
% waterbear assemble example.s -o example.vms [ERROR] Failed to assemble example.s ✘ Wrong arguments for instruction add. example.s:9:8-22 add %op, 7 ^^^^^^^^^^^^^^ | | ...expanded from | | example.s:16:2-20 | Safe_8bit_Add %val | ^^^^^^^^^^^^^^^^^^ | | ...expanded from | | example.s:19:0-14 | Foo 100 + 1000 | ^^^^^^^^^^^^^^ Allowed forms for instruction add: add #i8 add d9 add @Ri
In this example, you can see the
...expanded from sections, showing
each step of multiple nested macro expansions.
You can download prebuilt binaries from here: waterbear latest release.
To assemble a file, use the
waterbear assemble command:
waterbear assemble example.s -o example.vms
These are people who have either directly or indirectly helped with the development of waterbear.
|Falco Girgis||ElysianVMU - VMU Emulator|
|Kresna Susila||VMU assembly programmer/game developer|
|Marcus Comstedt||Author of the aslc86k assembler, softvms emulator, hardware documentation, and tetris VMU game|
|John Maushammer||Author of the lcdis disassembler|
Copyright © 2015-2019 Walter Tetzner