/CEmu

Third-party TI-84 Plus CE / TI-83 Premium CE emulator, focused on developer features

Primary LanguageC++OtherNOASSERTION

CEmu Build Windows Build macOS Build Linux Build Status Discord Chat Link

CEmu is a third-party TI-84 Plus CE / TI-83 Premium CE calculator emulator, focused on developer features.
CEmu works natively on Windows, macOS, and Linux. For performance and portability, the core is programmed in C and its customizable GUI in C++ with Qt.

Note: CEmu is not a TI product nor is it TI-endorsed/affiliated. If you need an official TI CE emulator, TI-SmartView™ CE is for you.

Downloads

Development builds are available here: https://ce-programming.github.io/CEmu/download

Official stable releases are available here: https://github.com/CE-Programming/CEmu/releases

Note that Release builds have an update checking feature, which is disabled in development builds.

Features

Standard features

  • Built-in ROM dump wizard. CEmu does not rely on downloading an OS from TI's website nor does it have a custom boot/loader: a ROM from your own calculator is required. CEmu makes it very easy to get it.
  • Accurate and fast emulation (you can also customize the speed and even toggle throttling)
  • Resizable calculator screen
  • "Always-on-top" window option
  • Screen capture, copy, and drag'n'drop (PNG)
  • Screen recording (animated PNG)
  • USB emulation for transfers (including for Apps and OSes)
  • Customizable keybindings with multiple presets
  • Keypress recording and history
  • Full screen modes (F11 key)
  • Emulation states for efficient saving / restoring
  • CE skins (colors like the real devices)
  • Available in English, French, Spanish, and Dutch

Developer features

  • Main options available via CLI arguments
  • IPC features when launching several CEmu processes
  • Import/Export RAM, ROM, images...
  • Custom display refresh rate, FPS indicator
  • Custom emulation speed/throttling
  • Rich text console for easier logging/debugging
  • Code stepping, jumping...
  • R/W/X breakpoints, watchpoints
  • eZ80 disassembler (with equates support)
  • Port monitor/editor
  • General Timer monitor/editor
  • Memory viewer/editor
  • CPU state/registers viewer/editor
  • LCD state/parameters viewer/editor
  • Memory visualizer (as fully customizable virtual LCDs)
  • Stack viewer
  • OP1-7 viewer
  • FP and OP stacks viewer/editor
  • Variable Allocation Table (VAT) viewer
  • Variable list with preview and program launcher
  • TI-Basic program viewer with syntax-highlight and reformatting
  • Recent files list with ability to quickly resend
  • Cycle counter for benchmarking/profiling
  • Emulation of DMA and SPI (for optimal accuracy)
  • Misc. emulation (backlight, battery...)
  • Pre-I HW Rev. emulation toggle (IM 2 compatibility)
  • "Autotester" (automated unit testing, light scripting)

How to build

You can find information for building CEmu yourself from the source on this wiki page. If you encounter any problems, feel free to open an issue!

Getting Help

You can join us on the CE Programming Discord server in the #cemu-dev channel: Discord Chat Link.
If you prefer IRC, the chat is also bridged to the EFNet #cemu-dev channel (you can use a web client like IRCCloud, if you don't want to use a local application).

Depending on how active the channel is you might not get a response.
In that case, post your questions here, and we will get back to you as soon as possible.

Contributing

You're welcome to report any bugs you may encounter, in addition to any feature requests you may have. If you want to help, tell us, or send patches / pull requests!

If you'd like to contribute code, please consider using Artistic Style with the settings specified in the .astylerc file to format your code. Qt Creator can format code with Artistic Style with minimal setup.
We also welcome more translations. Qt Linguist is a great tool for that (here's a tutorial).

License

CEmu is licensed under the GPLv3.
Acknowledgements: Some CEmu parts are, directly, modified, or inspired, from z80e, Firebird, libtifiles, tivars_lib_cpp, KDMacTouchBar, and FatCow's "Farm-Fresh Web Icons".
The complete licensing information is available in the LICENSE file.