7 releases (4 breaking)
Uses old Rust 2015
0.5.0 | Dec 23, 2016 |
---|---|
0.4.0 | Oct 8, 2016 |
0.3.0 | Sep 27, 2016 |
0.2.0 | Sep 24, 2016 |
0.1.2 | Sep 23, 2016 |
#599 in Debugging
22 downloads per month
185KB
5.5K
SLoC
A DCPU-16 emulator and DASM (dis)assembler
Features
- Full instruction set
- Tick accurate
- Devices support
- Clock
- LEM1802
- Keyboard
- m35fd
- Disassembler
- Assembler
- gdb-like debugger
- Image-to-LEM-compatible-format utility
Quick usage
Compiled versions for Windows and Linux are available at https://github.com/Yamakaky/dcpu/releases/. No dependencies are required.
Note: the Windows version of the emulation currently fails with an OpenGL error. If anyone knows why...
All binaries support a --help
flag for more infos.
Building
You need to install the rust compiler to build this software.
# cargo run --release --bin <bin> -- <bin-args>
Available binaries are assembler, disassembler, emulator and sprite.
Some features are only available on Rust nightly. To enable them, install Rust nightly then run;
# cargo run --release --features nightly --bin ...
Build features
The following build features are available ([x] means "enabled by default"):
-
bins
: only useful to build the binaries, should be disabled for the library. -
debugger-cli
: command line parsing for the debugger, should also be disabled for the library. -
glium
: OpenGL backend for the lem1802 + keyboard, can be useful in the library. -
nightly
: implementation ofserde::{Serialize, Deserialize}
for some of the types. Requires Rust nightly.
Build the C library
To build a dynamic library (.so
):
# cargo rustc --lib --no-default-features -- --crate-type=dylib
To build a static library (.a
):
# cargo rustc --lib --no-default-features -- --crate-type=staticlib
See src/c_api.h
for the available functions.
Convert images to LEM format
The sprite
utility can:
- Convert a font image (
--font-file
) and a palette image (--palette-file
) to a LEM1802-compatible format, either binary or hexadecimal - Convert an image (
--image
) to VRam + font + palette
Documentation
The library interface is documented here.
Dependencies
~6–17MB
~229K SLoC