Forums

Sega Master System / Mark III / Game Gear
SG-1000 / SC-3000 / SF-7000 / OMV
Home - Forums - Games - Scans - Maps - Cheats - Credits
Music - Videos - Development - Hacks - Translations - Homebrew

View topic - A new version of Emulicious is available

Reply to topic
Author Message
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
A new version of Emulicious is available
Post Posted: Fri Jul 19, 2019 9:35 pm
A major update of Emulicious is available!

This new version of Emulicious enables you to load your own source files into the debugger. This means that you no longer have to step through a disassembly of your code when developing a game. Instead, you can step through the code you wrote. It has been tested with the source code of all homebrews which provide source code (not only limitted to assemblers, i.e. it also works with SDCC).

Additionally the outline has been improved and now shows different icons for code and data. You can even decide if you want to hide code or data labels from the outline. The Reference Hierarchy also uses the new icons now.

This version also adds an option to setup the volume levels (Master System 1 or Master System 2) to use for Master System emulation.

A full list of changes can be found below:


  • The debugger now allows to load sourcefiles so you can work with your own code now
  • The disassembler now groups consecutive runs of equal bytes with dsb directives
  • Added Volume levels to Sound menu
  • The Outline can hide code or data now
  • Outline and Reference Hierarchy use icons now to differentiate between code and data
  • Coverage data is now persisted
  • The memory editor now allows to save the current selection as a binary file
  • On Mac OS when Emulicious is closed via Cmd+Q it will now also save its settings
  • Fixed issues with symbols loaded from SDCC map files
  • Fixed wrong position of current address in overview ruler
  • Several minor bugfixes and improvements


Users of Emulicious can receive the update via the update system, others can check it out at
http://www.emulicious.net
  View user's profile Send private message Visit poster's website
  • Joined: 29 Mar 2012
  • Posts: 516
  • Location: Spain
Reply with quote
Post Posted: Sun Jul 21, 2019 7:46 pm
I already had the chance to test the new features, and they're super useful!
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Thu Sep 26, 2019 4:19 pm
There was an issue with the automatic updates: On startup Emulicious shows an error that it failed to update and suggests to manually update by downloading the current version from the website.

The issue is fixed now but in order for the automatic updates to work correctly again you will have to manually update Emulicious now.
You can do that via Help->Configure Updates...->Check for updates->Update Now by downloading the current version from the website.

Sorry for any inconvenience this has caused.

Edit: The update needs to be downloaded from the website in order to fix automatic updates.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Fri Sep 27, 2019 6:12 pm
A minor update of Emulicious is available.

This update introduces the possibility to specify what message to log when a breakpoint is hit. These messages can consist of multiple expressions separated by commas.
An example is
"Entered WaitForVBlank at scanline ", scanline

(The quotation marks need to be there to indicate a string)
This will yield log messages such as the following:
Entered WaitForVBlank at scanline 100


Unfortunately, there was an issue with automatic updates. Due to this issue you might need to manually update to the new version by downloading Emulicious from its download page https://emulicious.net/downloads/.
  View user's profile Send private message Visit poster's website
  • Joined: 22 Sep 2019
  • Posts: 27
Reply with quote
Post Posted: Tue Oct 08, 2019 5:05 pm
I believe I've come across a bug in the disassembler/debugger.

It seems when dealing with word length data, at least sometimes it is making the data lower than it should be by $4000. From the examples I've found, it seems to be happening when it thinks the data is an address, and when that address would be over $8000. As a result, it also creates unnecessary labels for these addresses.

For an example, see Captain America and the Avengers (UE).gg address $5BD7.
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Wed Oct 09, 2019 6:28 pm
Wafer wrote
I believe I've come across a bug in the disassembler/debugger.

It seems when dealing with word length data, at least sometimes it is making the data lower than it should be by $4000. From the examples I've found, it seems to be happening when it thinks the data is an address, and when that address would be over $8000. As a result, it also creates unnecessary labels for these addresses.

For an example, see Captain America and the Avengers (UE).gg address $5BD7.

It does not make the address lower than it should be. This is a concept called mapping. You can read about it here: http://www.smspower.org/Development/Mappers
In this case bank 1 is mapped on slot 2. So the addresses $8000-$bfff (slot 2) accessed by the Z80 are mapped to the addresses $4000-$7fff (bank 1) in the ROM.
  View user's profile Send private message Visit poster's website
  • Joined: 22 Sep 2019
  • Posts: 27
Reply with quote
Post Posted: Thu Oct 10, 2019 12:49 pm
I don't think I've explained myself very well. I'm aware of mapping and I've been using it myself.

I think the best way I can explain myself is to describe it as steps to recreate:

1. Disassemble Captain America in Emulicious
2. Make no changes to the assembly
3. Build it again in WLA DX
4. Compare the binaries in a hex editor - some bytes in the new binary will be too low

The problem isn't just limited to that game either, I first spotted it in Sailor Moon and I've come across it in a few others. Other games come out and the binaries are identical, which is the behaviour I would expect.
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Thu Oct 10, 2019 1:15 pm
Wafer wrote
I don't think I've explained myself very well. I'm aware of mapping and I've been using it myself.

I think the best way I can explain myself is to describe it as steps to recreate:

1. Disassemble Captain America in Emulicious
2. Make no changes to the assembly
3. Build it again in WLA DX
4. Compare the binaries in a hex editor - some bytes in the new binary will be too low

The problem isn't just limited to that game either, I first spotted it in Sailor Moon and I've come across it in a few others. Other games come out and the binaries are identical, which is the behaviour I would expect.

Yes, this explanation is clear now. :)
You are right. That should definitely not happen and I will look into it! You already named Captain America and Sailor Moon and said you also encountered it in a few others. Any chance you can remember the full list and send it to me via pm or mail? It's also ok if the list contains a few false positives. :) It will help me track the issue down and fix it.
  View user's profile Send private message Visit poster's website
  • Joined: 22 Sep 2019
  • Posts: 27
Reply with quote
Post Posted: Thu Oct 10, 2019 1:28 pm
I'll certainly have a look, as I need to go back over the ~10 or so hacks I've done in the last couple of weeks to check if this issue has affected them.
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Thu Oct 10, 2019 1:38 pm
Wafer wrote
I'll certainly have a look, as I need to go back over the ~10 or so hacks I've done in the last couple of weeks to check if this issue has affected them.

That's what I mean by false positives. You can just send me the full list and I will find the relevant ones. :) I don't want you to have extra effort because of this.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Sat Oct 12, 2019 3:22 pm
An update is available that fixes the issue in the disassembler that Wafer has experienced and described here.
Thanks to Wafer for pointing it out. :)
  View user's profile Send private message Visit poster's website
  • Joined: 12 Feb 2013
  • Posts: 66
Reply with quote
Post Posted: Sun Oct 13, 2019 1:27 pm
Calindro wrote
An update is available that fixes the issue in the disassembler that Wafer has experienced and described here.
Thanks to Wafer for pointing it out. :)


Nice! Thanks for the quick fix.
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Sat Oct 19, 2019 10:34 am
An update of Emulicious is available!

This update adds undo/redo functionality for debugger run actions. When you notice during stepping that something in your code went wrong you can just undo your last steps and try again.

Furthermore, a Discord Server for Emulicious was launched. A menu item to join this server was added to the Help menu. This server can be joined via the following link: https://discord.gg/YuKjBUF

Additionally, the file Expressions.txt was added which contains explanations and examples on how to use expressions in Emulicious.

Users of Emulicious can receive the update via the update system, others can check it out at
http://www.emulicious.net
  View user's profile Send private message Visit poster's website
  • Joined: 12 Feb 2013
  • Posts: 66
Reply with quote
Post Posted: Thu Oct 24, 2019 10:18 am
Can palette entries shown in the palette viewer be changed so that the new values are reflected immediately in the running program?
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Sat Oct 26, 2019 11:40 am
TheNameOfTheGame wrote
Can palette entries shown in the palette viewer be changed so that the new values are reflected immediately in the running program?

There's no easy way to do that, yet. What do you want to use that for? :)
  View user's profile Send private message Visit poster's website
  • Joined: 12 Feb 2013
  • Posts: 66
Reply with quote
Post Posted: Fri Nov 01, 2019 11:02 pm
Calindro wrote
TheNameOfTheGame wrote
Can palette entries shown in the palette viewer be changed so that the new values are reflected immediately in the running program?

There's no easy way to do that, yet. What do you want to use that for? :)


I was trying out various palettes for some GG2SMS hacks. It would be much easier if I could do it in-game via the palette window.
  View user's profile Send private message
  • Joined: 12 Feb 2013
  • Posts: 66
Reply with quote
Post Posted: Sat Nov 02, 2019 2:10 pm
I noticed F8 and F9 resume/suspend only work if the debugger window has focus. Could it be made to work with the emulator window also? Would be useful when debugging.

Also, in the debugger window when I use the CTL-G or CTL-F (Goto and Find) features, the debugger window doesn't get focus after the input box is closed. Could this be fixed please as it gets annoying lol :)

It's very good software. Thanks for developing it.

P.S. One more thing - Can I add custom labels to the disassembly as I figure routines out? It would help to keep track of things.
  View user's profile Send private message
  • Joined: 12 Feb 2013
  • Posts: 66
Reply with quote
Post Posted: Sat Nov 02, 2019 11:17 pm
A couple more questions as I have been using the program a lot.

Can the system areas be dumped like in MEKA - RAM, VRAM, Palette, Sprites. CPU Regs, VDP Regs, etc? Sprites and SATs would be good to be able to save out.

Is there a way to see the VDP registers? I see the option, View->Show Registers on the Memory Editor window but enabling/disabling the option doesn't appear to do anything?

Can the profile be set to profile accesses to the VRAM? This would be good when trying to unroll graphic routines.
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Sun Nov 03, 2019 2:21 pm
TheNameOfTheGame wrote
Also, in the debugger window when I use the CTL-G or CTL-F (Goto and Find) features, the debugger window doesn't get focus after the input box is closed. Could this be fixed please as it gets annoying lol :)

How can this be reproduced? Whatever I try, as soon as I close the Find dialog the debugger window gets focus. I tried closing it while another window of Emulicious has focus and I tried closing it while another program's window has focus. Everytime the debugger window gets focus after closing the Find dialog.
For the Goto Dialog there's even less to try because it's a modal dialog so there's not even a way to focus another window of Emulicious.

TheNameOfTheGame wrote
P.S. One more thing - Can I add custom labels to the disassembly as I figure routines out? It would help to keep track of things.

Yes, you can manually create a symbol file for that. When using a symbol file you can enable the automatic reload on change to continuously work with your new custom labels.

TheNameOfTheGame wrote
Can the system areas be dumped like in MEKA - RAM, VRAM, Palette, Sprites. CPU Regs, VDP Regs, etc? Sprites and SATs would be good to be able to save out.

In the Memory Editor there are 2 save options. The first one saves the whole range while the other one saves only the selected bytes.

TheNameOfTheGame wrote
Is there a way to see the VDP registers? I see the option, View->Show Registers on the Memory Editor window but enabling/disabling the option doesn't appear to do anything?

By enabling/disabling this option you enable and disable displaying the registers in the Memory Editor.

TheNameOfTheGame wrote
Can the profile be set to profile accesses to the VRAM? This would be good when trying to unroll graphic routines.

What's the profile?
  View user's profile Send private message Visit poster's website
  • Joined: 12 Feb 2013
  • Posts: 66
Reply with quote
Post Posted: Sun Nov 03, 2019 5:40 pm
Calindro wrote
How can this be reproduced? Whatever I try, as soon as I close the Find dialog the debugger window gets focus. I tried closing it while another window of Emulicious has focus and I tried closing it while another program's window has focus. Everytime the debugger window gets focus after closing the Find dialog.
For the Goto Dialog there's even less to try because it's a modal dialog so there's not even a way to focus another window of Emulicious.

hmm, maybe it's my window manager on linux then.

Calindro wrote
By enabling/disabling this option you enable and disable displaying the registers in the Memory Editor.
Ok, but I don't know where to look to find them. Are they at a specific location under the VRAM tab or should they be displayed somewhere else? Because when I select the option, I don't see any difference in the Memory Editor window.

Calindro wrote
What's the profile?
Sorry, that was a typo, I meant the profiler.
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Mon Nov 04, 2019 11:11 pm
TheNameOfTheGame wrote
hmm, maybe it's my window manager on linux then.

I just tried it on Ubuntu with GNOME and it behaved the same way as on Windows. So there I also did not find a way to reproduce your issue.

TheNameOfTheGame wrote
Ok, but I don't know where to look to find them. Are they at a specific location under the VRAM tab or should they be displayed somewhere else? Because when I select the option, I don't see any difference in the Memory Editor window.

At the bottom of the window you can select a register to follow. That should be the easiest way to see the registers being displayed in the Memory Editor.
  View user's profile Send private message Visit poster's website
  • Joined: 12 Feb 2013
  • Posts: 66
Reply with quote
Post Posted: Tue Nov 05, 2019 12:11 am
Yes, I'm using xfce4 and openbox. That's probably where the issue is.

As far as the vdp registers, I still don't see them. Here is the memory editor window as it shows on my system. I guess I was expecting a list of the vdp registers on the side of the editor window with the current values similar to how the debugger shows the z80 registers.

  View user's profile Send private message
  • Joined: 12 Feb 2013
  • Posts: 66
Reply with quote
Post Posted: Sat Nov 09, 2019 1:25 am
Can someone give me an example please of how to set up the symbol file so that the default labels can be over-ridden with custom descriptions?

I can't seem to find anywhere that explains it.
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Sat Nov 09, 2019 7:50 am
TheNameOfTheGame wrote
Can someone give me an example please of how to set up the symbol file so that the default labels can be over-ridden with custom descriptions?

I can't seem to find anywhere that explains it.

Here you can find an example created by Bock:
http://www.smspower.org/forums/14446-WonderBoyIIITechnicalQuestions#84596
  View user's profile Send private message Visit poster's website
  • Joined: 12 Feb 2013
  • Posts: 66
Reply with quote
Post Posted: Sat Nov 09, 2019 1:35 pm
Last edited by TheNameOfTheGame on Sat Nov 09, 2019 2:19 pm; edited 1 time in total
Calindro wrote
TheNameOfTheGame wrote
Can someone give me an example please of how to set up the symbol file so that the default labels can be over-ridden with custom descriptions?

I can't seem to find anywhere that explains it.

Here you can find an example created by Bock:
http://www.smspower.org/forums/14446-WonderBoyIIITechnicalQuestions#84596


Thanks, I read it but it's still not working for me. Not sure what I am doing wrong. This is the first time I've worked with Emulicious. Here's what I want to do:

1) Allow Emulicious to disassemble the program and create its labels.
2) Have a .sym file that overlays or over-rides only the symbols in it so I can slowly document routines and variables while keeping all others just as Emulicious created them.

Is this possible?

For example, the program has a routine at $1BE9 for moving some data into the vdp.

Emulicious creates the label:
_LABEL_1BE9_

So in my symbol file I put the line:
0000:1BE9 TILE2VRAM


and so I want all instances of _LABEL_1BE9_ to change to TILE2VRAM. Then I go to the menu File->Load Symbols and choose the symbol file.

But the label _LABEL_1BE9_ never changes. What can I do?
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Sat Nov 09, 2019 1:40 pm
TheNameOfTheGame wrote
Calindro wrote
TheNameOfTheGame wrote
Can someone give me an example please of how to set up the symbol file so that the default labels can be over-ridden with custom descriptions?

I can't seem to find anywhere that explains it.

Here you can find an example created by Bock:
http://www.smspower.org/forums/14446-WonderBoyIIITechnicalQuestions#84596


Thanks, I read it but it's still not working for me. Not sure what I am doing wrong. This is the first time I've worked with Emulicious. Here's what I want to do:

1) Allow Emulicious to disassemble the program and create its labels.
2) Have a .sym file that overlays or over-rides only the symbols in it so I can slowly document routines and variables while keeping all others just as Emulicious created them.

Is this possible?

For example, the program has a routine at $1AEA for moving some data into the vdp.

Emulicious creates the label:
_LABEL_1AEA_

So in my symbol file I put the line:
0000:1AEA TILE2VRAM


and so I want all instances of _LABEL_1AEA_ to change to TILE2VRAM. Then I go to the menu File->Load Symbols and choose the symbol file.

But the label _LABEL_1AEA_ never changes. What can I do?

Yes, that's how it works.
Note: If you put the sym file next to your rom file and make it have the same name (except for the file extension) it will load it automatically.

Maybe something is wrong with your sym file. Can you attach it?
  View user's profile Send private message Visit poster's website
  • Joined: 12 Feb 2013
  • Posts: 66
Reply with quote
Post Posted: Sat Nov 09, 2019 2:17 pm
Ok, thanks. I thought I was doing it properly, but it never changes the label in the Debugger window when I load the file.

I am just using a simple symbol file to test. I attached it below. The contents are just one line:
0000:1BE9 TILE2VRAM

Thanks for your help.

*Edit* It is now working! I had to uncheck the option File->Load Sources Automatically. Not sure why that was checked since I am not working with sources.
testsymbol.sym.zip (183 B)
test symbol file

  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 485
Reply with quote
Post Posted: Sat Nov 09, 2019 2:26 pm
TheNameOfTheGame wrote
Ok, thanks. I thought I was doing it properly, but it never changes the label in the Debugger window when I load the file.

I am just using a simple symbol file to test. I attached it below. The contents are just one line:
0000:1BE9 TILE2VRAM

Thanks for your help.

*Edit* It is now working! I had to uncheck the option File->Load Sources Automatically. Not sure why that was checked since I am not working with sources.

That option automatically loads the source file with the same name as the name of your ROM. I guess you have saved the disassembly next to your ROM with the same name as the ROM?
  View user's profile Send private message Visit poster's website
  • Joined: 12 Feb 2013
  • Posts: 66
Reply with quote
Post Posted: Sat Nov 09, 2019 2:28 pm
One other suggestion.

The hscroll and vscroll values are displayed in the tilemap viewer as decimal. This makes it hard to cross-reference to values in the code that are in hex. Could you show the hex values also besides the decimal values?
  View user's profile Send private message
  • Joined: 12 Feb 2013
  • Posts: 66
Reply with quote
Post Posted: Sat Nov 09, 2019 2:29 pm
Calindro wrote
TheNameOfTheGame wrote
Ok, thanks. I thought I was doing it properly, but it never changes the label in the Debugger window when I load the file.

I am just using a simple symbol file to test. I attached it below. The contents are just one line:
0000:1BE9 TILE2VRAM

Thanks for your help.

*Edit* It is now working! I had to uncheck the option File->Load Sources Automatically. Not sure why that was checked since I am not working with sources.

That option automatically loads the source file with the same name as the name of your ROM. I guess you have saved the disassembly next to your ROM with the same name as the ROM?


Yes, I had saved the disassembly just to see what it did. I am not using it though. I guess that was causing the problem. I deleted it now.
  View user's profile Send private message
  • Joined: 23 Aug 2009
  • Posts: 84
  • Location: Seattle, WA
Reply with quote
Post Posted: Fri Nov 15, 2019 2:12 pm
Another request to make the VDP registers available to view.
  View user's profile Send private message
  • Joined: 05 Jul 2017
  • Posts: 61
  • Location: Cornwall, United Kingdom
Reply with quote
Post Posted: Tue Dec 03, 2019 3:56 pm
Thanks for the update!

Quit menu not working for me on macOS.
Workaround is to use the red dot to close the window and therefore the app.
  View user's profile Send private message Visit poster's website
Reply to topic



Back to the top of this page

Back to SMS Power!