Emulicious is a free to use multi-system emulator for Windows, Linux, Raspberry Pi OS, Mac OS(X) and any other operating system supporting Java SE.
You don’t need to install Java on your system in order to run Emulicious. It only requires the Java binaries to run. For Windows users there’s a download including current Java binaries (see Emulicious Downloads Section).
Emulicious is on Discord. Click here to join the Emulicious Community on Discord.
Emulicious consists of the following emulators:
- A Nintendo Game Boy Emulator
- A Nintendo Game Boy Color Emulator
- A Sega Master System Emulator
- A Sega Game Gear Emulator
- An MSX Emulator
Even though Emulicious aims for precision and accurate emulation it still provides some additional features and tools:
- Automatic Updates
- Adjustable Turbo
- Adjustable Throttle
- IPS Patching
- Savestates
Tools:
- Debugger (including an interactive disassembler with automated code/data separation and reverse stepping/backward stepping)
- Profiler
- Tracer
- Coverage Analyzer
- Memory Editor
- Palette Viewer
- Tile Viewer
- Tilemap Viewer
- Sprite Viewer
- Sound Viewer
- Data Plotter
- RAM Search
- RAM Watch
- Memory Tracer
- Remote Debugging
The debugger provides many features that can be useful for ROM hacking and Homebrew development. It provides customizable syntax highlighting, trace logging, breakpoints and watchpoints. It also allows to load source files to show instead of a disassembly of your ROM. A Reference Hierarchy helps in understanding a program flow, the profiler helps in identifying performance hotspots. A powerful expression syntax allows the definition of useful conditions for breakpoints/watchpoints. Breakpoints halting on accesses of uninitialized memory and inconsistent states after interrupts can help to avoid unnecessary programming mistakes.
Emulicious also allows remote debugging with tools such as Visual Studio Code. The Visual Studio Code extension can be found on VS Code Marketplace
Emulicious also supports running Analogue Pocket roms (*.pocket).
Accuracy Tests
Emulator accuracy is important for every type of user. It is important for
- Casual Gamers: An inaccuracy in emulation can not only have visible or audible effects but in some games it can make specific situations not work correctly. For example, the game Another World has a scene where the game relies on a specific behavior of an instruction. When that instruction does not behave correctly, the scene is not beatable. Another example is a Game Boy game that would crash in a specific situation if the emulation is not accurate (See https://github.com/TASEmulators/BizHawk/issues/2482).
- Homebrew Developers: When developing a game, tech demo or tool for your favorite system, it would be very cumbersome to try it on the hardware after every little change that is made, just to ensure that it still works correctly. An emulator allows testing new builds immediately and thus saves a lot of time. But it only saves time if you can rely on its accuracy because otherwise you might encounter problems that only occur on hardware and thus require you to get back to testing on hardware.
- Romhackers: When hacking a rom, you need to be sure that after your modifications the game still works correctly on hardware.
If you are interested in the accuracy of Emulicious, the gbdev community has developed an extensive corpus of testroms that can be used for testing emulator accuracy. Additionally, a user called Daid has automated running most of these testroms automatically on all the relevant Game Boy emulators. The results of these automated runs can be found on https://daid.github.io/GBEmulatorShootout/.
Want to support Emulicious?
I’m developing Emulicious in my free time and I do spend a lot of my free time on it. So any kind of support is more than appreciated.
So what can you do? You can
- Use Emulicious: You might wonder how using Emulicious would support the development of Emulicious, so let me explain. First of all, every user of Emulicious increases my motivation to work on it. This is simply the case because it reminds me of who I do this for and why. 🙂 Additionally, when you use Emulicious, you may encounter bugs that you can report, which leads me to the next point in this list.
- Report Issues: While I do use Emulicious myself, I do have my own use cases and my own user behavior and thus will only be using a subset of the features of Emulicious. Emulicious has grown big with lots of possible configurations and tools so when you encounter an issue, it is very likely that I am not aware of it so please report it. I will fix the issue as soon as possible, so not only you but also others will be able to benefit from the fix.
- Spread the Word About Emulicious: Since I spend most of my free time on researching hardware behavior and developing Emulicious, I do not have much time to advertise Emulicious. So if you want to support Emulicious, you can simply spread the word about, talk about it, write about it, recommend it or whatever comes to your mind that can grow its user base. This is important because it will make more people use Emulicious and thus support me with the first point which in turn can also support me with the second and third points. 🙂
- Show Appreciation: It might sound silly but I appreciate any kind of appreciation that you show. So if you want to make me happy, you can send me a nice message. 🙂