# tms9918a_emu Texas Instruments TMS9918A VDP emulator library for Rust [GitHub](https://github.com/ry755/tms9918a_emu) | [crates.io](https://crates.io/crates/tms9918a_emu) | [API Documentation](https://docs.rs/tms9918a_emu) ![TMS9918A](https://upload.wikimedia.org/wikipedia/commons/d/de/TMS9918A_02.jpg) tms9918a_emu emulates a [Texas Instruments TMS9918A](https://en.wikipedia.org/wiki/Texas_Instruments_TMS9918) video display processor and provides a basic framebuffer as `Vec` which can be used with other creates, such as [minifb](https://github.com/emoon/rust_minifb), to create a window. High-level functions are provided as well as low-level functions, making it easy to control the VDP without needing to use the control and data ports. This emulator is a work-in-progress and currently only supports the Graphics I and Text video modes, and sprites are unsupported in all modes. In its current state, this emulator is more of a TMS9918 (non-A variant) emulator. ## Example This is a small [example program](examples/high_level_text/src/main.rs) which uses Text mode to display a hello world message in a minifb window, showing how to use the high-level functions: ![High-level Text mode example](examples/high_level_text/images/screenshot.png) A similar [example program](examples/low_level_text/src/main.rs) is available which shows how to use the low-level functions to display the same hello world message. ## License Licensed under either of * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) at your option. ## Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.