Emulator of the HP 48GX, HP 49, and HP 40 (fork of https://www.hpcalc.org/details/4382) https://www.hpcalc.org/details/4382
Find a file
2024-10-05 10:44:34 +02:00
dist missing - 2024-10-02 19:35:32 +02:00
docs [build] clean libChf build, remove win32 from it too; refactor Makefiles 2024-09-19 15:18:53 +02:00
docs-4.1.1.1 shuffle files around to organize things properly 2024-03-21 11:19:55 +01:00
src adjust contrast value of saturn engine 2024-10-05 10:44:34 +02:00
.clang-format copy .clang-format from x48ng and format all the code 2024-03-26 13:36:50 +01:00
.gitignore update gitignore; reorganize code in ui4x/ 2024-10-02 10:16:57 +02:00
COPYING new README.md and GPLv3-or-later 2024-03-21 12:46:02 +01:00
LICENSE new README.md and GPLv3-or-later 2024-03-21 12:46:02 +01:00
Makefile header files as dependencies in Makefile 2024-10-04 19:01:09 +02:00
README.md fix OFF display bug; add --black-lcd option 2024-10-05 09:54:08 +02:00

Emulator of the HP 48GX, HP 49, and HP 40

This is a fork of saturn v4.1.1.1 originally by Ivan Cibrario Bertolotti.

Original source are available at https://www.hpcalc.org/details/4382

The GUI has been replaced by a new one (taken from x48ng) in SDL2 and/or ncurses.

The main binary is dist/saturn with helpers/wrappers scripts available per model as:

  • dist/saturn48gx
  • dist/saturn48sx
  • dist/saturn49g
  • dist/saturn40g (not really functional (yet))

Building

Dependencies:

  • SDL2
  • ncursesw
make

Installing

make install DESTDIR=/

Using

Use the wrappers scripts.

The local data are stored under $XDG_CONFIG_HOME/saturn/

Known bugs

  • some bugs in emulation:
    • 48gx: ON-D A can hang because it tries to write data in ROM space
    • 48gx: VERSION spouts messages in the console (but works)
    • 49g: spouts messages in the console every second (but works)
  • ncurses UI: becomes unresponsive (but still quits gracefully on F7)

Todo

  • fix emulation bugs
  • 49g: find a way to enable the bigger screen (131×80)
  • 40g: make emulation work
  • sdl2 UI optimization: draw LCD on a distinct texture and then draw that texture on the main one