Emulicious to nowy, przynajmniej dla mnie, projekt multiemulatora systemów SEGA (master system, game gear) i Nintendo (Gameboy BW/Color) napisany w Javie. Celem emulatora jest dołączenie do aplikacji typu cycle exact, jednak po drodze do tego multiemulatora dodano parę ciekawych narzędzi - podgląd spritów, kafelków i całkiem użyteczny debugger.
- The disassembler now also identifies accesses to ports and creates labels for them as well.
- Profiler data is now persisted between runs of Emulicious.
- When hovering a sprite in the Sprite Editor it now also gets highlighted in the main window.
- New errors have been added to expressions that should help with writing correct expressions.
- Savestates. Savestates can now be used with hotkeys. The number keys 1-9 load the savestate from the corresponding slot. Holding the CTRL key while pressing the number keys saves into the corresponding slot. If you accidentally loaded a state instead of saving to it you can just undo the load and return to state before loading.
- A RAM Search tool (also known as Cheat Search) has been added to Emulicious. It filters RAM addresses based on the comparison of the current value with its previous value. It helps to identify variables within RAM such as the number of lives, the current position, and so on.
- A plotter has been added that can plot the data of a specified range in ROM. It can help to identify tables such as sine/cosine tables or other pattern data.
- A RAM Watch tool has been added. It keeps track of the values of specified variables / values in RAM and plots them.
→ NOWSZY [Java] Multi - Emulicious 30/11/2021
A major update of Emulicious is available.
The focus of this update has been UI improvements. The update adds options to configure fonts and provides dark-themed syntax highlighting.
The full list of improvements:
- Added options for font configuration
- Added an option to disable UI scaling
- Added dark-themed syntax highlighters
- Greatly improved the UI of the Debugger’s Variables tab
- Fixed a bug in the trace logger that could prevent it from logging instruction
- Fixed that the Memory Editor did not accept entering capital hex letters (thanks to Revo)
- Fixed font color in some debugger menus on Mac OS (thanks to Martz)
- Added support for software breakpoints (ld b,b) for the remaining systems
- Added an option to display memory values referenced by instructions in the Debugger
- Added an option to arrange the video viewers in tabs
- Added an option to freeze memory values from the Memory Editor
- Added Memory tab to the Debugger
- Added breakpoint properties to the Breakpoint tab in the Debugger (thanks to dan jia)
- Improved performance of plot widgets (e.g. used in the Sound Viewer)
- Fixed missing symbols from linked libraries with C debugging (thanks to Zalo)
- Fixed the appearance of some icons
- Added a Sound Device Selection (thanks to martendo)
- Fixed Undo/Redo in the RAM Search tool (thanks to GOMF)
- Fixed an issue with symbols from an RGBDS tiny rom build (thanks to tbsp)
- Fixed that F2 could not be used to toggle breakpoints (thanks to martendo)
- Fixed an issue that could make the debugger misbehave when sound is unsupported (thanks to superdisk)
A major update for Emulicious got released. This update comes with several UI improvements for the Debugger.
Finally, the Variables that has only been available during remote debugging are now also available in the built-in debugger.
The full list of improvements and fixes follows:
- Added a Variables tab to the Debugger
- Added a Breakpoints tab to the Debugger
- Added a Console tab to the Debugger
- Added a Call Stack to the Debugger
- Added a Toolbar to the Debugger
- Added Control Flow Arrows to the Debugger
- Added an option to the Debugger’s context menu to watch the selected expression
- Added support for ld d,d message logging for Game Boy
- Reorganized the MSX menu (thanks to theNestruo)
- When MSX is emulated, do not open the menu when ALT is pressed (thanks to theNestruo)
- Fixed wrong colors of underline in Memory Editor
- Fixed an issue with the initial layout (on first start of Emulicious) of the Tile Viewer
- Fixed an issue with Remote Debugging that could disconnect the remote debugger on launch if a ROM was already loaded
This update fixes several issues. For example, some users (mainly Linux users) have reported that the initial sizes of the viewers were too small. So when they first opened them, they weren’t usable until they resized them. This issues should be fixed now.
Furthermore, a new speed option has been added: Sync To Audio. This option syncs the emulation to the audio samples. This option can help users that have sound issues like crackling noises or stuttering sound.
The full list of improvements follows:
- Improved the stability of the profiler
- Added TMS palette as alternative palette for the Tile Viewer for SMS (thanks to sverx)
- Added tooltips for the additional registers in the debugger
- Added Sync To Audio as a new speed option
- Added an option to the Memory Editor to copy the currently selected address
- Fixed inproper initial window sizes for the viewers on some (mostly Linux) systems (thanks to basxto)
- Fixed an incompatibility with Java 16, thank you Oracle… (thanks to RicardoLuis0)
- Fixed that for small window sizes of the debugger, it did not properly scroll to the current address (thanks to Kabcorp)
- Fixed an issue with Game Boy’s sweep sometimes falsely muting the channel (thanks to DevEd and kivan117)
- Fixed that on SMS the Tile Viewer used a wrong tile as the bottom tile of 8×16 tiles in 2nd bank of tiles
- Fixed that an expression reading from non-existant cartridge RAM crashed the debugger (thanks to TypeDefinition)
- Fixed wrong row/column numbers in Tilemap Viewer when grid is enabled
- Fixed that sometimes the breakpoint console stopped updating
- Fixed that Game Gear ports did not trigger port breakpoints (thanks to sverx and djbass)
This update improves the Sprite Viewer to properly support displaying 8×8 and 8×16 sprites at the same time. It also makes the addresses in the video viewers clickable. A click on an address opens the corresponding address in the Memory Editor.
Other than that, some issues got fixed. The full list of changes follows:
- Improved Sprite Viewer to support 8×8 and 8×16 sprites at the same time
- Made the addresses in the video viewers clickable to open them in the Memory Editor
- Fixed an issue that had prevented some of the additional registers in the debugger from being edited
- Fixed that sometimes directly after disabling turbo an old frame was shown
- Fixed an issue that caused the state of some of the exception breakpoints not to be persisted
- Fixed that the Coverage tool did not update when a new rom was loaded, only after new data was gathered
This month I did not have as much time to work on Emulicious as in the previous months. So this update only is a minor update with a few improvements.
The list of improvements is as follows:
- Improved Game Boy Color color correction and made it configurable (thanks to Eievui)
- Fixed an issue with sound not playing on some computers running Linux (thanks to lhs_azevedo)
- Minor improvements of the combined video viewer
A major update of Emulicious got released! The main goal of this update was to improve the usability of Emulicious. The highlights of this update are that the windows stay open now when a rom is loaded and that the video viewers can now be combined into a single window.
The full list of improvements follows:
- Added an option to the tracer to write its log to a file
- Added selection to the video viewers
- Added an option to combine the video viewers into one window
- Added grids for the video viewers
- Added more options to the Debugger’s View menu (one is to reduce the spacing between rows)
- Added support for GameBoy BESS savestates that are interoperable with SameBoy and BGB (thanks to LIJI)
- Added a workaround for the path issue when remote debugging from WSL (thanks to tbsp)
- Added ROM bank and SRAM banks to the additional registers of the debugger
- Fixed an issue with remote debugging that could make VS Code disconnect from Emulicious
- Fixed Reload ROM shortcut did not always work
- Fixed copy&paste in Go To boxes (thanks to Kabcorp)
- Keep the tool windows open when a rom is loaded
- Made the sources in the viewers clickable to directly open them in the Memory Editor / Debugger
- Overhauled the Tile Viewer (thanks to Daid)
- Improved support for RGBDS 0.5.0
- In Memory Editor, show up to two labels before showing ellipsis (thanks to Advert665)
- Fixed a bug that could make the Tracer ignore its conditions
- Highlight uninitialized memory in Memory Editor
- Highlight the tile in the Tile Viewer that is currently hovered in one of the other viewers
→ NOWSZY [Java] Multi - Emulicious 30/03/2021
A major update of Emulicious got released!
The full list of changes follows.
- Added CPU usage meter to debugger
- Added procedure cycles to Profiler’s Hotspot view
- Avoid collapsing nodes in Profiler’s call tree when the order changes (thanks to toxa)
- Added option to Memory Tracer to display file offsets in for ROM (thanks to EmuBoarding)
- Added an option to control whether to bring the debugger to top upon suspend (thanks to tbsp)
- Added options for sound sample rate and sound buffer size (thanks to Kabcorp)
- Added option to decide whether to keep ingame save data (SRAM) when loading a savestate (thanks to Maxim)
- Added color schemes for the Game Boy monochrome colors (thanks to Eievui)
- Show data types in their respective color in the status bar of the Memory Editor (thanks to Advert665)
- Fixed on Linux, sometimes the main window stayed black until a resize of the window (thanks to basxto)
- Fixed Game Boy RTC did not always load properly from .sav files (thanks to kivan117)
- Fixed SHIFT + key did not treat key as pressed (thanks to .exe)
- Fixed that after changing the layout of the Tile Viewer, its cursor did not work properly for the new layout (thanks to Kabcorp)
- Improved the performance of the disassembler
- Several other minor fixes and improvements
→ NOWSZY [Java] Multi - Emulicious 30/01/2020
This update is focused on usability improvements. The keys of the emulator and the debugger can now be configured. This allows everyone to use the keys they prefer. Additionally, the registers in the debugger have been extended and can now be exchanged and reordered.
The full list of changes follows.
- Added more registers to the debugger and made them exchangable
- Added a Key Setup to customize emulator/debug keys
- Show banked addresses in the Memory Editor
- Improved support for installing Emulicious into a folder where it doesn’t have write access (thanks to basxto)
- Fixed the working directory of Emulicious when it gets invoked via Emulicious.exe (thanks to tbsp)
- Fixed an issue where the Outline would show opcodes as labels (thanks to Maxim)
- Fixed Emulicious reverted to scale=1 when it gets closed without loading a ROM (thanks to eruiz)
- Fixed initial state of VBK in Emulicious BIOS for GBC (thanks to .exe)
→ NOWSZY [Java] Multi - Emulicious 27/12/2020
In the past two MacBook users of Emulicious had reported sound issues with Emulicious. Thanks to the report by glinesbdev, this update finally fixes these sound issues!
The full list of improvements follows:
- Fixed issues with sound on some Mac Books (thanks to glinesbdev)
- Added „bankS“ variable to query the current SRAM bank
- Added Profile To Next Line option to debugger’s context menu (useful for profiling call sites)
Emulicious [minor upd] 2020-12-17
- Don't patch in the hacky disk tracking into VRAM when CALL FILES(0) is active - fixes Atlantis
Emulicious [minor upd] 2020-11-30
- Added an option to always keep main window on top (can be useful for VSCode debugging)
- Reduced cracking sounds when emulation lags (e.g. when the debugger is opened)
- Added emulation of the GG X-Terminator cheat device for the Game Gear
→ NOWSZY [Java] Multi - Emulicious 04/10/2020
Emulicious [minor upd] 2020-10-04
- Fixed issues when CTRL or SHIFT were used as buttons (thanks to Kilkakon)
- Fixed code pointer in C source-level debugging
- Fixed an error when trying to paste at the end of the memory editor (thanks to JonteP)
→ NOWSZY [Java] Multi - Emulicious 20/09/2020
A minor update of Emulicious, 2020-09-09
- This update adds remote debugging with VS Code. It allows source level debugging with ASM and C code, breakpoints in your own source code and inspection of variables and system state. I’ve already thought about adding external debugging support for some years now but never got around to actually implementing it. So 2 weeks ago I decided to finally look into it and started to implement it. The required VS Code extension can be found on https://marketplace.visualstudio.com/items?itemName=emulicious.emulicious-debugger
→ NOWSZY [Java] Multi - Emulicious 20/08/2020
A minor update of Emulicious, 2020-08-20
This update comes with the following improvements:
- Fixed Space key in fullscreen with MSX emulation toggled turbo
- Added different disassembler dialects (WLA-DX, RGBDS, Sjasm)
- Added comments on GB header in disassembly.
- Added support for Notepad++ syntax highlighters
→ NOWSZY [Java] Multi - Emulicious 17/07/2020
A major update of Emulicious, 2020-07-17
The update comes with some additions such as a Hot Spots view for the profiler, a CPU tab for the Memory Editor and a dialog to add watchpoints.
Furthermore, support for MIDI devices to be used with MSX emulation has been added and some bugs have been fixed.
The full list of changes:
- Fixed an issue in YM2413 emulation
- Added a setting to the disassembler to use uppercase mnemonics
- Added a dialog to add watchpoints to the Breakpoints window
- Added support for MIDI devices in MSX emulation
- Added CPU tab to Memory Editor
- Added Hot Spots view to the Profiler
- Added setup of file associations for Windows users
- Added exe executable for Windows users
- Improved performance of YM2413 implementation
- Added a proper icon (thanks to MasterEmerald)
- Added @@ operator to read from locations and :: operator to map to a bank (see Expressions.txt)
- Fixed graphical glitches in main window on Linux (thanks to sverx)
- Screenshots are now saved with selected Pixel Aspect Ratio
A minor update of Emulicious, 2020-06-05
- Added stretch to window option
- Fixed issues with glitches in viewers on Linux (thanks to sverx)
- Added integer scaling option to main window and viewers
- Added Pixel Aspect Ratio settings to emulation options
- Slightly improved startup time
A major update of Emulicious, 2020-05-14
This update comes with several additions and improvements. Most notably an additional system is now emulated, the MSX.
Four weeks ago I got interested in emulating the MSX and now I feel it is ready to be released. It supports most cartridge ROMs released for the MSX1. If a disk ROM and an alternative BIOS are provided it also supports program on floppy disks in the form of dsk images.
Emulicious’s debugger now also supports loading Sjasm lst files as source files. Sjasm is a Z80 assembler that is often used for MSX development but can also be used for other Z80 systems like the Mastersystem.
Furthermore, the profiler has been improved to better support the calling convention of C.
The full list of changes follows:
- Added MSX emulation
- Added support to load lst files containing Sjasm sourcecode in the debugger
- Improved Profiler to better work with C calling convention
- Remember last directory for loading sources/symbols
- Fixed an issue with breakpoints on ROMs larger than 4 MB (thanks to Antígeno)
- Improved Auto Palette option in Tile Viewer for SMS Mode 4
- Added View menu to Tile Viewer to choose different layouts
- Added Frame Advance to the main emulator (formerly only available in debugger)
- Improved Tilemap Viewer and Tile Viewer support for TMS Modes
- Added CTRL+SHIFT+BACKSPACE as hotkey for Reload ROM
- Added an option to automatically reload a ROM when it changes
- Fixed a bug that wouldn’t allow setting gamepad inputs if there
- are more than 2 gamepads connected (Thanks to Niloct)
- Several minor bugfixes and improvements
A minor update of Emulicious, 2020-04-03
- When using Table Files the Memory Editor now shows all symbols (e.g. [LF])
- Added missing label for the volume of the noise channel of the Mastersystem
- Fixed a bug where some persisted breakpoints did not work anymore
- Fixed that very long lines did not fully display in the debugger
- Added a status bar to the debugger showing size and cycles of selected lines
- Reduced delay caused by the debugger when changing a lot of bytes
- in the Memory Editor
→ NOWSZY [Java] Multi - Emulicious 02/02/2020
- The PAUSE key on the keyboard can now also be used for pausing the emulator (do not confuse with suspend)
- The disassembler now supports multiple labels at the same address
- WLA-DX’s _sizeof_ labels do not show up in the disassembly anymore
- Added support for child labels
- Breakpoints are based on expressions now instead of just addresses.
This improves the use of breakpoints for ROM development
- Fixed a bug with sustain in YM2413 emulation (thanks to Kagesan)
- Fixed a repain glitch in the disassembler table
- Added a Sound Viewer
- Fixed an issue in Memory Tracer for the Game Boy Color
- Improved batch file to work independently from the current working directory
→ NOWSZY [Java] Multi - Emulicious 17/11/19
- Added FM chip emulation for the SEGA Mastersystem
- Added a Clear Log button to the Breakpoint Window
- Added Palettes tab to the Memory Editor
- Added VDP and PSG tabs for Mastersystem/Game Gear to the Memory Editor
- Added OAM and HRAM tabs for Game Boy (Color) to the Memory Editor
- Added Memory Tracer support for Game Boy (Color)
- Added Watchpoints for the Memory Editor tabs
- Improved the UI of the disassembler table
- Improved Go To dialogs by adding auto-completion
- Improved Find dialogs by adding a history and several search options
- Fixed cropped images in screenshots taken from Game Boy games
This update comes with several additions and improvements. One of these addition is the emulation of the FM chip of the SEGA Mastersystem. When it is enabled in the menu Options->Emulation->Master System then games supporting this chip will play music on it.
People interested in developing, hacking or researching games will be happy to see the new tabs in the Memory Editor. For the Master System and Game Gear a tab for VDP register and a tab for PSG registers have been added. For the Game Boy and Game Boy Color a tab for OAM and a tab for HRAM have been added. All systems received a Palettes tab in the Memory Editor.
Additionally, the memory tracer (previously only available for Master System and Game Gear) now also supports the Game Boy and Game Boy Color.
Furthermore, the UI of the disassembler table of the debugger has been improved. Its first column now spans the whole width of the table.
Last but not least, the Go To dialogs and the Find dialogs have been improved. The Go To dialogs are now enhanced by auto-completion facilities and the Find dialogs received a history and several search options.