Skip to content

Releases: CE-Programming/CEmu

v2.0: Major core and GUI improvements + new features

05 Sep 22:54
Compare
Choose a tag to compare

After many years and around 450 commits, it's finally here... CEmu is more accurate and more powerful than ever before :)
cemu_v2_bento

Downloads:

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:

TI-Basic debugging live variable view basic debugging


❤️ We thank all of our contributors, and you, users, as well - Enjoy the new release!

CEmu nightly (auto-updating binaries)

13 Jan 13:53
Compare
Choose a tag to compare
Pre-release

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

Builds are provided by our CI (GitHub Actions) directly.

v1.3: lots of fixes, improvements, and additions!

22 Jun 15:28
Compare
Choose a tag to compare

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)

Memory visualizer configuration

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...)

Watchpoints with ranges

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

MacBook Pro Touch Bar support Python AppVars support

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

10 Dec 19:25
Compare
Choose a tag to compare

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

01 Sep 20:35
11df959
Compare
Choose a tag to compare

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.

25 Aug 19:16
Compare
Choose a tag to compare

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!

12 Feb 19:19
bf9fa4b
Compare
Choose a tag to compare

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)