New Feature: Overlays

Today’s update adds a new feature to Emulicious: Overlays

You can find this new feature in the Overlays tab at the bottom of the Debugger. It allows you to overlay information on top of the main screen. So you can for example display hitboxes or other shapes on top of your game graphics. Or display some values for debugging directly on screen.

The Overlays feature supports Emulicious’s expression language in each of its textfield columns. So you can either simply use values of variables via expressions like @playerX or more complex expressions like @(hitboxes + @playerHitboxIndex * 4 + 1). You can even make the color depend on specific conditions via something like $ff0000 * (@playerX > 100) + $00ff00 * (@playerX < 150) to use red if player’s x position is greater than 100, green if player’s x position is smaller or equal to 100 and yellow if player’s x position is between 100 (exclusive) and 150 (inclusive). The expression abuses the fact that conditions evaluate to 1 when true and 0 when false. When both conditions are true, both values get added together and form $ffff00 (yellow). If only the first condition is true, we get $ff0000 (red). If only the second condition is true, we get $00ff00 (green). If neither condition was true, we would get $000000 (black).

The Trigger column lets you choose between VBlank, PrevVBlank and Breakpoint. If VBlank is selected, the values are polled when VBlanking begins. For something like hitboxes, by the time of VBlank, the game will already have calculated the player position for the next frame but not updated VRAM accordingly. So if the game values at VBlank are used to display the hitbox, the hitbox will appear one frame ahead of what is actually visible on the screen. To solve this, the PrevVBlank Trigger uses the game values at the time of the previous frame and thus the ones matching what is currently displayed on screen.

Selecting Breakpoint here allows you to use any breakpoint as trigger for your overlay. That way you can display values from at a specific point of your program. For example it allows you to create a custom usage meter by putting a breakpoint on the beginning of your procedure waiting for vblank and use the scanline variable to determine for how many scanlines your program is going to wait until VBlank.

If you find any other creative way to use the new Overlays feature, I’m happy to read about them. 🙂

The full list of changes follows:

  • Added Overlays feature to the debugger
  • Fixed that for palette entries that span 2 bytes, values didn’t get padded to 4 digits (thanks to ISSOtm)
  • Fixed description of HDMA5 read event (thanks to ISSOtm)
  • Fixed that on Linux the Memory Editor didn’t use the correct selection color on a Linux theme (thanks to ISSOtm)
  • Fixed the Add Watchpoint option in the Expressions table (thanks to bofner)
  • Fixed MBC1M detection (thanks to ProstatePunch and PinoBatch)
  • Fixed that the „Add Expression“ text was missing on a Linux theme (thanks to bbbbbr)
  • Fixed precedence of @@ operator (thanks to badcomputer)

UI improvements for Emulicious

This month comes with some UI improvements and fixes:

  • Improved the UI for some window managers on Linux (thanks to ISSOtm, lidnariq, neon, armixer24)
  • Improved the layout of the Tilemap Viewer (thanks to ISSOtm)
  • Fixed that for Game Boy Color reads from palettes always triggered inaccessible access exception (thanks to DNFan86555)
  • Fixed flickering in the status bar of the debugger when it takes more than 1 line (thanks to Kabcorp)

Small update of Emulicious

Free time has been rare this month so this update turned out a bit small. It mainly comes with a few bugfixes and improved YM2413 emulation:

  • Added support for YM2413’s phase hold test mode bit (thanks to 2Tie)
  • Fixed that for MSX emulation the tracer printed some addresses incorrectly (thanks to djogopatrao)
  • Fixed that the new keyboard shortcut for MSX defaulted to SPACE like on other systems

Update for Emulicious

An update for Emulicious is available!

This update adds value formatting for strings used in expressions and messages. For example: „Lives: {d:@lives}, Velocity X: {d:@velocityX}, {08b:@flags}, Type: {@type}, Name: {s:pointerToName}“

The full list of changes follows:

  • Added value formatting for strings used in expressions and messages
  • Fixed the priority of the RAM registers of the Master Everdrive (thanks to toxa)
  • Fixed an issue with video encoding set to use FLAC with older versions of FFMPEG (thanks to bbbbbr)
  • Fixed an issue that prevented includes with absolute paths to work in the source code parser (thanks to Sono)
  • Fixed an issue with adding breakpoints on ports/hardware registers (e.g. rSCX) in the Breakpoints tab
  • Report progress of video encoding in the titlebar and when Emulicious is closed
  • Made key shortcuts for Toggle Fullscreen and Toggle Turbo configurable (thanks to Disk Poppy Ninja and DEFENSE MECHANISM)

Issues with Emulicious’s Automatic Update

With yesterday’s update there has been an issue with the automatic update system. This issue should be resolved now (Thanks to Révo).

You can manually update Emulicious now by manually downloading the latest files from this website and extracting the contents of the zip archive into your Emulicious directory, or via Emulicious’s update system.

You can manually update Emulicious by selecting Configure Updates in Emulicious’s Help menu then clicking the Check Updates button then clicking the Update Now button.

Sorry for any inconvinience this has caused.

A Minor Update of Emulicious is Available

An update of Emulicious is available!

This update comes with a few bugfixes.

The full list of changes follows:

  • Fixed flickering screen in A Bug’s Life and Men in Black for Game Boy Colr (thanks to Scott Nash)
  • Fixed the palette displayed in the Sprite Viewer when emulating the original Game Boy/DMG (thanks to widge)
  • Fixed a glitch in the Variables tab that could render a checkbox for the name of a boolean value
  • Fixed issues with the Input variable of the Mastersystem

Easter update of Emulicious is available

An update of Emulicious is available! Happy Easter everyone!

This update comes with video recording. In order to record videos you need ffmpeg. On Windows, you can easily find a release build of ffmpeg on the internet. On Linux and Mac OS, you can install it via the respective package managers or download release builds from the internet.

The full list of changes follows:

  • Added video recording
  • Fixed that the Profiler window couldn’t open on Linux with GTK theme (thanks to Under4MHz and lidnariq)
  • Fixed a bug that could cause a crash when editing GB sound registers repeatedly (thanks to Sono)
  • Fixed a bug that prevented to load MEKA Savestates older than version 8
  • Fixed a regression that made the Tile Viewer have issues with modes where tiles have a width of 6 pixels (thanks to aoineko)
  • Fixed sprite cursor position for Game Gear (thanks to toxa)
  • Fixed reading back values from the MSX PSG (thanks to joe)
  • Fixed turbo shortcut in fullscreen mode for MSX

Very small update of Emulicious available

Unfortunately, I did not have much time to work on Emulicious this month so this month’s update turned out quite small.

It mainly comes with bugfixes.

The full list of changes follows:

  • Fixed a bug that could make the debugger cause high cpu load (thanks to 256)
  • Fixed that Advance Frame while paused with the debugger open could crash Emulicious (thanks to pw_32x)

Minor update of Emulicious

An update of Emulicious is available!

This update comes with some additional features and some bugfixes.

The full list of changes follows:

  • Added -turbo commandline flag to start Emulicious with turbo enabled (thanks to aoineko)
  • Added option to emulate the Everdrive without an SD card inserted
  • Added option to crop borders from screenshots (thanks to Kaisaan)
  • Added support for the MSX NEO Mapper (thanks to aoineko)
  • Fixed incorrect number of meassurements in General Profiler if start and end address match (thanks to sverx)
  • Fixed that a future timestamp in a .sav file caused the RTC time to change (thanks to beware)

Small update of Emulicious available

A new version of Emulicious is available!

This small update comes with a few bug fixes and an improved presentation of coverage.

The full list of changes follows:

  • Added 16×16 mode to Tile Viewer for display modes that support it (thanks to Jan Willem van Helden and aoineko)
  • Improved MSX mapper detection (thanks to bengalack)
  • Fixed a false-positive of data execution exception with C debugging (thanks to wimpie3)