Alpha v0.3.1 Released

It’s been a while since the last release, partially because I’ve been working on other projects (including CEmu, which now fully supports all versions of TI-Boy CE), but I’d like to finally push out the changes I’ve been sitting on for a while.

Alongside some bugfixes for several games, small optimizations, and interface improvements, the major feature of this release is a smoother upscaling mode. This mode uses flicker-based blending to approximate linear upscaling (not bilinear, since the horizontal scaling is always an integer upscale).

The ROM converter’s trimming logic has also been updated to allow further reducing the size of some ROMs.

You can download the release from GitHub.

Changelog

Added

  • Linear upscaling mode for fullscreen, using flicker-based blending.
    • The previous, slightly faster, nearest-neighbor upscaling mode is still available.
  • Enhanced ROM trimming, allowing the ROM converter to further reduce the size of certain ROMs.
  • Joypad interrupt support, along with increased key polling rate.
  • Screen rotation option, to allow flipping the calculator 180 degrees to put the arrow keys on the left.
    • The configured arrow keys are also automatically rotated in this mode.

Changed

  • Online ROM converter is now compiled to WASM instead of JavaScript.
  • User-configured A, B, Menu buttons can now be used to control the menu.
    • Also, the control configuration menu can now be navigated using all four arrow keys.
  • Expansion of 15-bit color to 18-bit now uses an intensity bit, producing more consistent grays.
  • LCD SPI initialization for Python models now uses a direct method instead of reinitializing all hardware.
  • Various optimizations.
    • Use the hardware stack protector to optimize call stack emulation.
    • Reduce complexity of DAA emulation, with more consistent timing for different cases.
    • Optimize zero flag reset for ADD SP instructions.
  • Internal restructuring to ease development of future features.
    • Modularize large code files into smaller, categorized files.
    • Make direct memory reads hookable, which supports the enhanced ROM trimming but has more potential uses.
    • Make accesses to save state data indirect, allowing for prior memory insertion (e.g. dynamic library loading).

Fixed

  • Fix incorrect rounding for ROM bank trim length. Fixes Dragon Warriors Monsters 2: Cobi’s Journey.
  • Treat STOP opcode as 2 bytes. Fixes Dr. Rin ni Kiitemite! - Koi no Rin Fuusui.
  • Fix stack usage in RST slow case, fix direct stack pointer adjustment. Fixes The Machine.
    • Also, prevent hard crashes if a bug causes the SPS and SPL stacks to desync.
  • Allow throttling non-rendered frames to reduce dropped inputs.
  • Fix flickering in screen transitions and menu redrawing.
  • Fix some cases where the emulator message overlay would become corrupted.
  • Prevent turning off the calculator during the Garbage Collect prompt, which would leak memory.

Comments