Releases: CE-Programming/CEmu
v2.0: Major core and GUI improvements + new features
After many years and around 450 commits, it's finally here... CEmu is more accurate and more powerful than ever before :)
Downloads:
- Windows (64-bit): Qt6 (recommended for Win10+) ; Qt5 (Win7+)
- Windows (32-bit): Qt5 (for older PCs)
- macOS (64-bit): Qt6 arm / Qt6 intel ; Qt5 intel (10.15+)
- Linux (64-bit, glibc 2.29+): Qt6 shared libs ; Qt6 static libs
All binaries are provided by our CI (GitHub Actions). Packages for various Linux distros are available from OBS.
What changed
Note that this summary is a mixed bag of new features since the latest release, as well as fixes to things added since then, as a lot of you were (rightfully) using nightly builds.
Core:
- Support for real host->emu transfers (USB emulation), by @jacobly0. i.e. you can now transfer Apps and OSes normally
- Support for rev M+ hardware (excluding Python coprocessor), by @jacobly0 and @calc84maniac.
- Major LCD emulation improvements, by @calc84maniac.
- Major watchdog timer rewrite based on hardware research, by @calc84maniac.
- Prepare future Python-related features, by @jacobly0 and @calc84maniac (SPI, UART...)
- Big endian support, by @calc84maniac
- Make keypress emulation thread-safe, by @calc84maniac
- Lots of other misc. fixes and improvements (timing, accuracy, performance, rst/trap edge cases...)
GUI:
- Proper dark mode support (be sure to use Qt6 builds)
- Improved display of emulation speed and screen refresh rate
- Screenshots/recordings now have correct screen brightness
- Fix fullscreen mode when using multiple monitors
- Add upscale method and fullscreen aspect ratio settings
- Add vertical printing to Keypress History
- Add calculator skins for newer models, and some new color variants
- Add some debugging features for TI-Basic (step-by-step execution, live variable preview etc.)
- Fix name of a few OS variables in some cases (some were labeled
Ans
, formula lists support...) - Fix crash upon trying to export natural keymap (you can't)
- Fix byte display order in disassembler for index bit instructions
- Fix R register in debugger.
- Deduplicate imported equates in the debugger
- Add/improve variable content preview (tivars_lib_cpp updates)
- Add disassembler option for tabs between the opcode and operands
- Fix "Pause emulation" preventing CEmu from closing
- Add SmartPad keymap (for use with the calc app)
- Add
screenshot
IPC command/option - macOS: fix screenshot drag'n'drop
- Add
--reset
CLI option to clear the config - New/improved translations by @Stephan-P (NL), @wolfarmoon (ES), @Jerry23011+@LifeEmu (CN)
- Better version update check
- Lots of various fixes
CI / Build:
@calc84maniac and @adriweb have been improving the build system and CI workflows:
- Move the CI to GitHub actions (now provide builds for all three OSes)
- macOS: native builds available for both Intel and Apple Silicon
- macOS: the builds are now codesigned and notarized automatically
- Take care of some LTO issues
- Update to latest Qt5 and Qt6
- CMake support (with vcpkg integration)
Full Changelog: v1.3...v2.0
By the way, here is what TI-Basic debugging looks like, along with a short animation of live variable view while debugging:
❤️ We thank all of our contributors, and you, users, as well - Enjoy the new release!
CEmu nightly (auto-updating binaries)
Warning
This is where all the latest development happens! (build is from the master branch)
Only use this if you want the bleeding edge (but still probably stable) or encounter any bugs as they might be squashed here.
Downloads
- Windows (64-bit): Qt6 (recommended for Win10+) ; Qt5 (for older OSes)
- Windows (32-bit): Qt5
- macOS (64-bit): Qt6 arm ; Qt6 intel ; Qt5 intel
- Linux (64-bit, glibc 2.29+): Qt6 shared libs ; Qt6 static libs
Builds are provided by our CI (GitHub Actions) directly.
v1.3: lots of fixes, improvements, and additions!
Warning
This stable release is rather old now, but CEmu is far from dead, we just don't make releases often - if you want to try the latest features, check out the nightly!
Here's the long-awaited release, filled with new somewhat-minor features, improvements, and bugfixes!
Fun fact: did you know that we recently went over 211 commits? 🤓
Note that v1.3 should be last release before any new major one (planned to be v2.0 with source-level debugging, for C and TI-Basic code, no kidding!)
Additions
- New "natural" keymap (accents, symbols etc. from your computer)
- Custom keymap support (choose your own keybindings)
- New simple and light GUI in SDL
- New core "run API" making deterministic execution possible
- New grid option and config GUI for memory visualizers (#308)
- Visual indicator of console/dock output (#313)
- New command-line options:
- Full-screen modes (
--fullscreen
) - Program to launch (
--launch
)
- Full-screen modes (
GUI and core improvements
- The core loop is now faster
- Better Flash emulation (more modes handled, improved protections)
- Allow changing of clock rate
- Table widgets are now draggable
- Reset the calc if the flash wait states are 0
- Better LCD state saving and restoring and improved event handling
- Cleaned-up core codestyle and made it C89-compatible
- Improved recent variables view
- Overhauled break/watch/port (reordering, ranges support...)
Other improvements
- Autotester inside the emu thread and deterministic (#178)
- Various performance and stability improvements
- Use the new value for the maximum appvar size in the dumper
- On MacBook Pro machines with Touch Bar, display some shortcuts
- Updated tivars_lib from upstream:
- Code cleanup and potential crash fixes
- More format checks
- Only reindent tokenized variables
- Fix appvar preview in hex (#312)
- Support Python AppVars format
Bug fixes
- Fix held keys detection on boot
- Fix actual FPS display
- Fix drawing of off LCD
- Fix screen breakage when resetting calculator
- Fix address clicking in memory visualizers (#308)
- Fix breakage caused by showing too many errors simultaneously (#317)
- Hack around a libpng-apng bug (1-row frames)
- Disable launch button while an autotest is running
- Fix forgotten prettification of protected-programs in the viewer
- Avoid creating useless temp files when clicking the screen
Build-related improvements
- Qt version updated (5.12, 5.13)
- Fix some missing icon resources
- Fix Emscripten build and runtime
- More travis cleanup and minor improvements
- Linux builds on OBS are now available for even more distributions and versions!
(Note that this will be the last release supporting versions having "old" Qt)
v1.2: a few fixes and minor additions
Additions
- You can now toggle highlighting/wrapping/formatting in the variable previewer
- Support for the "temporary equation" var format has been added to the var list/previewer (#287)
- RAM can now be imported/exported as well
- New button to directly take a screenshot into the clipboard (#291)
- You can now drag'n'drop from the LCD to somewhere else to export a screenshot (#290)
- Core: implemented SPI write memory.
GUI improvements
- The variable list's previewer uses @jacobly0's TI-like font
- The scroll position is kept as much as possible in the variable previewer
- Much better handling of touch-enabled laptop displays (#282)
- The keypad history window is now a dock, solving some minor issues (#301)
- On macOS, if you build with Qt 5.12+, Xcode 10 and a 10.14 SDK, dark mode is supported (watch out)
Other improvements
- Core: better random-read performance (unmapped areas...)
- TI-Bundle support has been fully reworked to be much simpler
- The autotester can now handle the new libs group format
- The autotester, when in debug mode, dumps memory upon failure
- Misc. GUI code cleanup
Bug fixes
- Added some missing tokens to the TI-Basic syntax highlighter
- Cleaned up threading code and fixed race condition causing random emulation perma-freezes
- Fixed docks possibly growing/moving a bit after reopening CEmu (#288)
Build-related improvements
- For Windows, the MSVC builds (AppVeyor) now use Qt 5.11, and MinGW builds (Jacobly) Qt 5.12
- For macOS, builds now use Qt 5.12
- Travis and AppVeyor CI build processes got simplified and are now faster
- Linux builds on OBS now also have binaries for Fedora 29 and Ubuntu 18.10
v1.1.1: minor update check fix + typo
Whoops, there was an issue on some Windows builds regarding update checking, sorry!
(Also, a typo was fixed in the welcome message)
v1.1: many additions, improvements, and bugfixes.
We've had some nice feedback and bug reports after the v1.0 release!
This new "minor" update (actually, it's pretty big) addresses most reported issues, add new things, and improves others.
Additions
- Handling of invalid ROM types (for example, if a non-CE ROM is loaded)
- Setting to choose the update rate of the FPS and emulation speed indicators
- New
no-settings
CLI argument (in order not to load or save them) - Ability to force-redistribute the panes by double-clicking on their borders
- FP and OP stacks viewer/editor (new pane), assuming normal OS execution
- Message types and colors support in the console pane
- TI-Basic syntax highlighting added to the variable viewer
- GetStringInput var ('$') support in the variables pane
- Button to toggle the ASCII side of the memory view
- Support for transferring bundle files (.b83/.b84)
- Added more icons everywhere
- Full screen modes (F11 key)
GUI improvements
- Better layouting behaviour of some panes regarding resizing and extra space/margin
- Use a more appropriate location for the FPS indicator (bottom right of the status bar)
- Use a higher-resolution icon set
- The bottom corners of the keypad are now rounded
- Append the git SHA next to the CEmu version labels
- Updated the about window with more credits and better layout
- The memory and stack views now support infinite scroll
- Dock grouping is now optional and togglable in the settings
Other improvements
- Check write permissions on the settings folder and use portable configuration as fallback
- Use a more appropriate path for settings storage
- Try to migrate as many settings as possible between versions
- The disassembler code has been replaced by a new one written from scratch by @jacobly0, zdis
- The built-in memory view code has been rewritten and is now much shorter and to the point
- The built-in console has been revamped, it supports more things and is faster now
- Simplified and reworked debugging-related code in the core (stepping, watch/breakpoints...)
- Improved variable content preview support (underlying library updated)
- Improved timer-related code in the core
- Improved OS keypad scanning hardware-like accuracy
- Qt 5.10.1 + a newer MSVC version are now used to build the default Windows binaries
Bug fixes
- Don't show the no-update-available popup for the auto-check (was already backported into 1.0)
- Fix portable mode behavior and paths (especially on macOS)
- Fix invisible new "Memory view" window (Windows-only bug)
- Fix various threading related issues
- Fix incorrect screen recording speed
- Fix floating windows' behaviour and default look
- Fix sorting issue with the state list
- Fix CLI sending and use a delay compatible with old ROMs
- Fix state restoring conflicting with translations
- Fix incorrect interrupt trigger on a specific LCD condition
- Fix LCD displaying garbage data under specific conditions when SPI was used
- Fix LCD dock being cropped off by 1 pixel at the top in some conditions
v1.0: First official release!
Version 1.0 is here!
Many new features have been developed the past few weeks/months, you should definitely update to this version.
Note: if you had a previous version installed, we advise you to click "Yes" on the startup popup telling you some old (and probably incompatible) settings should be deleted.
Downloads for various OSes are listed above. For Linux releases hosted on the OBS, please go here.
More download options are also available on this page.
CEmu is a third-party TI-84 Plus CE / TI-83 Premium CE calculator emulator, focused on developer features.
The core is programmed in C and the GUI in C++ with Qt, for performance and portability. CEmu works natively on Windows, macOS, and Linux.
Here are some screenshots showcasing some of the features and various layouts, on these OSes:
Calc-only layout | A mixed layout with various panes | A debugging-oriented layout for developers |
---|---|---|
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 (PNG)
- Screen recording (animated PNG)
- File sending/receiving (not for Apps/OS yet)
- Multiple keybinding presets
- Keypress recording and history
- 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
- Custom display refresh rate, FPS indicator
- Custom emulation speed/throttling
- 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
- Variable Allocation Table (VAT) viewer
- Variable list with preview and program launcher
- 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)