Cemu Versions Save

Cheap EMUlator: lightweight multi-architecture assembly playground

0.7

10 months ago

Version 0.7 Changelog

Highlights

  • Moved to PyQt6
  • Updated minimum Python version to 3.10
  • Added GitHub Actions for publishing, formatting, and linting
  • Enforced black as the only coding style
  • Improved CI/CD
  • Command-line REPL based on prompt_toolkit
  • Cemu can now be used as a library
  • Ctrl+F can be used to switch to focus mode, showing nothing but code pane
cemu-repl

Improvements

  • All plugins and panes are now dockable widgets, which can be hidden/displayed from toolbar
  • Created a global backend context structure
  • Refactored code to use the global context
  • Use of GithubActions for testing, formatting and publishing
  • Added stale.yml config
  • Added issue templates
  • Added PR template
  • Added contribution and funding policy files
  • Added an action for codeql-analysis.yml
  • Updated readme with new logo and badges
  • Added byte alignment combobox to memory view
  • Removed debug prints and added docstrings
  • Added new commands in CLI
  • Fixed state transition bug in UI
  • Added Pytest run in CI
  • Added basic tests for ARM/Aarch64
  • Removed obsolete files
  • Started adding support for multiple OSes

Bug Fixes

  • Implemented type hinting throughout the project, resulting in many potential bug fixed
  • Implemented a proper callback system for logging
  • Fixed most errors from pylint
  • Fixed emulation issues
  • Mitigated a weird unicorn-engine bug in MIPS and SPARC, reporting an incorrect emulation end address
  • Fixed state transition bug in the UI

Miscellaneous

  • Made delivery on demand in CI
  • Fixed typos in CI actions
  • Updated build.yml file
  • Fixed py 3.10 version specification in CI
  • Restored files to permission 0644
  • Added warning message when no SP or PC was specified before starting emulation
  • Updated README.md, added more descriptive how-to, added REPL screenshot, and a fancy new logo
  • Fixed the calculation of $sp and $pc when the emulator sets up
  • Added extra tests

Please note that this changelog may not include all the changes and improvements made in the codebase.

Contributors

Full Diff

Changelog: https://github.com/hugsy/cemu/compare/0.6...0.7

0.6

1 year ago

What's Changed

  • Moved to Python 3.9
  • Better type hinting, fixed tons of logic bugs
  • Move to PyQt6
  • Added 'Focus Mode' (shortcut : Ctrl+F)
  • Updated & fixed dependencies from requirements.txt

New Contributors

Full Changelog: https://github.com/hugsy/cemu/compare/0.5...0.6

0.5

4 years ago

New features:

  • compile-as-you-go: whenever possible, cemu will attempt to display the assembly of the code being typed in the Code Editor pane
  • Switched to a dockable system for each pane, layout is fully customizable
  • Simplified the "Memory Map" pane, to allow adding/removing new section easily
  • A proper configfile allows to push further the customization (edit shortcuts and stuff)
  • Last but not least, thanks to the awesome LIEF Project by @romainthomas, it is possible to generate PE32/PE32+ executables directly from cemu!

img1 img2

Enjoy 🍻

0.4

4 years ago

Minor bug fixed Label support

0.3

5 years ago

New layout, multiple bug fixed, more OS agnostic.

Code was massively refactored to make it more extendable.

0.2.2

6 years ago
  • Mode, architecture and syntax can be dynamically provided via the file header, using @@@ separator:
  • Improved integrated Python interpreter
  • Many bugfix

0.2.1

6 years ago

This is a minor update to 0.2 release that fixes a bunch of installing issues when using PIP packager, when installing on OSX and some distributions of Linux, such as Kali Linux.

0.2

6 years ago

Changelog

  • Partial redesign of the architecture model
  • New architecture
  • Repository converted to PyPI compatible format
  • Added new menus: "Recent Files", "Shortcuts", "About"
  • Strings can be given as immediate, for example the following expression (x86-32) is now valid:
mov dword ptr [esp], "nib/"
mov dword ptr [esp+4], "hs//"
  • Syscall can be provided in the code pane, and will be replaced by the parser. Simply denote your syscall prefixed with __NR_SYS_: for example (ARM)
mov r7, __NR_SYS_execve
  • Many bug fixes