Hello everyone. Smile Early last month I started work on a CE calculator emulator, and it has now progressed to a nice development stage. Jacobly, Adriweb, and Lionel were very helpful along the way, and fixed a lot of the bugs I always seemed to make, and of course did an amazing job at implementing a lot of the more wild things. But now it is in working stages; support for ROM dumping from a real calculator is supported, it can boot and operate exactly like a normal TI-OS, except for file transfers, which requires emulating USB, which will take some time. There is no release yet; only a source release (which you can build yourself and play with if you so desire), and if you have sufficient knowledge in anything you feel could help out, feel free to send a pull request my way or ask nicely and I can add you as a collaborator. Smile Rather than talk some more about it; Adriweb came up with a nice article that will explain a lot, I hope. Still a lot to do, but yay.

So, give it a test drive, and report any bugs/features/comments that you have or would like implemented, and they will be appended to the todo list. Enjoy. Smile

It has its own ROM dumping method, much like the rom8x of days past, but now a nice GUI to tell you everything. And a progress bar. Those are cool. Of course, Lionel and jacobly added ROM dumping support to TILP here.

Source code on GitHub : https://github.com/MateoConLechuga/CEmu


Code:
Cross news post:


CEmu: What is it?
To sum up: a portable and open-source TI-84 Plus CE and TI-83 Premium CE emulator.

The 84+CE and 83PCE (TI-eZ80 series) hit the market over half a year ago. However, there was no third-party emulator, and the official emulator in TI-SmartView CE does not provide the features most community programmers have come to expect from well-behaved emulators: an accurate emulation core, a debugger with a way to inspect and modify registers and memory, a disassembler, etc. Teachers, who are SmartView's main target audience, hardly need such features.
The lack of a proper emulator is a significant roadblock to making TI-eZ80 native code programming popular in the community, which is a shame because the platform is a great improvement over the 84+CSE: faster CPU, more RAM, etc. Therefore, for the community’s sake, such a situation shouldn’t last for long - hence, the making of an emulator Wink

CEmu is open source (and even free software, under the GPLv3), like nearly all community-made emulators, and made in C/C++. A native code emulator makes perfect sense for both efficiency and versatility; in the longer term, retargeting the code at browsers (JavaScript, WebAssembly) is possible nowadays, thanks to Emscripten.

The team behind CEmu
Matt “MateoConLechuga” Waltz started the project and remains the main contributor.
More recently, Jacob "jacobly" Young was invited to join the fun, and he has so far worked quite a bit on improving the CPU and ASIC core (as well as integration thereof with the UI), mainly.
The CEmu code base leverages both Firebird (TI-Nspire emulator) and z80e (TI-Z80 emulator for KnightOS, and to which jacobly is a contributor) open-source projects.
There are also other contributions, from non-TI-(e)Z80 experts: Adrien “Adriweb” Bertrand, Lionel Debroux, Fabian “Vogtinator” Vogt.
And in the future… well, potentially anyone with sufficient knowledge, that’s precisely part of the power of open source Smile

If you want to chat, we're on IRC (EFNet), on channels such as #ez80-dev and #cemu-dev Smile

Features
  • Portable emulation core written in C
  • Decent emulation accuracy yielding the ability to boot all of TI’s CE OS's, browse around, execute self test successfully, and run programs.
  • Portable GUI written in C++ using Qt (making it run on Windows, Mac OS X, Linux, Android, and iOS!)
  • Docks/Tabs-based graphical UI (which you are able to customize)
  • Integrated setup wizard with ROM dumper for your calculator (there’s another one in TILP beta)
  • Simple debugger (read CPU registers, flags, ASIC state) and port monitor/writer
  • Animated (GIF) and still (PNG) screenshots

What it looks like
Here is what a recent build on Mac OS X looks like:

Of course, using the docking system, all windows are completely resizeable, movable, and translatable.

Short-term todo list
  • Continue implementing the ASIC emulation core: remaining devices/ports, etc.
  • Implement file transfers (implementing USB is not an easy task, so that will probably take a while)
  • Make the debugger more useful: disassembly view, stepping, breakpoints…
  • Finish 83PCE support (e.g. keypad and skin - emulating the 83PCE already works)
  • Test the emulator and hunt bugs, even more!


In the future…
  • Provide more translations (for now, it's available in English and French). If you want to help, tell us, or send patches / pull requests!
  • Make a web-based version of CEmu, like there’s a web-based version of z80e for trying out KnightOS. Compiling the CEmu core to JavaScript (and later WebAssembly), using Emscripten, is already known to work: Adriweb has been able to get an Emscriptened CEmu core to boot a ROM and get to the home screen (confirmed by dumping the LCD buffer) Smile
  • Think about CEmu's core’s integration on third-party projects, like TI-Planet's Project Builder - for instance, in C projects, in order to directly test the program, and eventually (if someone has enough time…) have live source-level debugging!
  • Look at this gdb-z80 project (code from 2011...); try to see if it can be updated for eZ80, and used with a CEmu GDB stub. Mainlining such code is highly preferable.
  • ...


Conclusion
To sum up: CEmu is the community's open-source, native, portable, TI-84 Plus CE / TI-83 Premium CE emulator, that has been developed over the past few weeks, and of course, still is currently under development.
We all hope you'll enjoy it Smile

Download : Soon ! There is no binaries to download yet, you'll have to be a little more patient Wink
Source code on GitHub : https://github.com/MateoConLechuga/CEmu

In the meantime, you can simply build one yourself from the source code (instructions here)

Merry (belated) Christmas! Smile
Even though I was a little bit involved in the dev too, congratulations, especially to Mateo and Jacobly Very Happy
Wow! very nice work man! Smile
Congrats on developing this
Congratulations, Mateo; this is very impressive work. I'm sorry you were not able to join in on the jsTIfied project as we had originally discussed (although I hope this may lead to some collaboration thereupon!), but this is a huge boon to the TI-84+CE development scene.

Edit: Out of curiosity, can you tell us a little more about how you developed the core? Did you, like jsTIfied, auto-gen the core from a specification and then tweak it as necessary? Do you emulate the pipeline?
KermMartian wrote:
Congratulations, Mateo; this is very impressive work. I'm sorry you were not able to join in on the jsTIfied project as we had originally discussed (although I hope this may lead to some collaboration thereupon!), but this is a huge boon to the TI-84+CE development scene.

Edit: Out of curiosity, can you tell us a little more about how you developed the core? Did you, like jsTIfied, auto-gen the core from a specification and then tweak it as necessary? Do you emulate the pipeline?

The CPU core is actually based on the core from z80e, the KnightOS team's emulator.
Wow! This is quite amazing! This will surely help me try C development for the CE! Great job, Mateo!

I saw that Qt5 has downloads for IOS and Android hosts. Does this mean that the Emulator will be available or those platforms?
Quote:
I saw that Qt5 has downloads for IOS and Android hosts. Does this mean that the Emulator will be available or those platforms?

Like Firebird, yes, that's certainly the plan.
Unicorn wrote:
I saw that Qt5 has downloads for IOS and Android hosts. Does this mean that the Emulator will be available or those platforms?

Yes, and have already been tested on such. They need proper mobile UIs though, but that's not too important.
Looks awesome, great job everyone involved. Super pumped for more CE apps/OS's/etc, and a mobile version would be amazing
I was wondering why there is a requirement to fully implement USB for linking?
tr1p1ea wrote:
I was wondering why there is a requirement to fully implement USB for linking?


Because proper emulation? I guess it would be fine to do direct injection of programs, but this won't work for apps.
There are no apps?
Edit: I understand you mean TI's built in apps Very Happy
Once you've completed everything else on your to-do list (which will certainly take some time) including the USB stuff, I would really be interested for you to add support for linking two calculators using the two-way mini USB cable. This would be extremely useful for creating multiplayer games, which I am considering.

Good luck on the project, and the customizable UI sounds/looks ABSOLUTELY AWESOME!
Linking real and virtual calculators, and virtual calculators together, is a feature provided by TIEmu and TilEm, thanks to the libti* stack. This feature has relatively few users, but is invaluable in several use cases, yeah.
Pimathbrainiac wrote us a news article (topic) about the CEmu project; thanks to him for doing his research and writing this exciting project up. In the midst of putting it together, we discovered that the keyboard can't dock underneath the LCD, but I believe jacobly may have done some work to fix that? I encouraged jacobly to post his progress here.
This is because you window or screen isn't big enough Wink I'll go fix that at some point, to allow for smaller keypad sizes. Thanks pimath! Smile Also, jacobly is doing some nice improvements to the keypad GUI, so that will look better.
MateoConLechuga wrote:
This is because you window or screen isn't big enough Wink I'll go fix that at some point, to allow for smaller keypad sizes. Thanks pimath! Smile Also, jacobly is doing some nice improvements to the keypad GUI, so that will look better.
Hmm, I'm skeptical about that. I was able to fit the keypad pane underneath the LCD (but of course Z-wise floating above it), but I couldn't get it to snap into the main window there, on a very tall 24" LCD in portrait orientation. I built CEmu under Ubuntu 15.10.

Edit: Oh, you have to make the window have enough empty space for the keypad, and *then* drop it in? That's slightly counterintuitive, but I can roll with it. Smile

Edit #2: Tried that, no dice. Sad
I had no problem achieving the same layout as in the screenshots. 1920x1080 screen.
KermMartian wrote:
we discovered that the keyboard can't dock underneath the LCD

Eh, it's perfectly possible, that's how I made my setup for the screenshot Wink



I just have to make the window big enough first, yes.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
» Goto page 1, 2, 3 ... 13, 14, 15  Next
» View previous topic :: View next topic  
Page 1 of 15
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement