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 - Emulicious Major Update

Reply to topic Goto page 1, 2  Next
Author Message
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Emulicious Major Update
Post Posted: Thu Jun 26, 2014 9:35 pm
Hi guys,

Emulicious received a major update and brings a lot of new features!
It now also emulates SEGA Game Gear games. Besides that I have added emulation of the vdp legacy modes.

I've also added Savestate support using MEKA's Savestate format (with permission by Bock)

Some new tools are included as well:
  • A Palette Viewer and a Tilemap Viewer.

  • A Memory Tracer: It can tell where data in RAM/VRAM/CRAM originated from. If the memory tracer is active this information will be shown in the various viewers when pointing the cursor to a color, tile, nametable entry or sprite. The information that is gathered by the Memory Tracer can be used to print a simple text presentation of a crude ROM Map to a txt file.

  • A Debugger: Using a smart disassembler it seperates code from data. It also provides syntax highlighting using a chl file. With permission by Maxim his chl file is included in the package.


More information and download can be found on http://www.emulicious.net

Kind Regards
Calindro
  View user's profile Send private message Visit poster's website
  • Joined: 04 Nov 2004
  • Posts: 273
Reply with quote
Post Posted: Thu Jun 26, 2014 9:59 pm
I have some problems with the GUI not updating correctly, it's kind of weird... But GGT runs just fine.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Fri Sep 19, 2014 4:29 pm
Hi guys,

the tools of Emulicious got updated!

I've added a Memory Editor and I've improved the Profiler and the Tracer of the Debugger.

The Profiler can now be used to profile from point from point. For that you can provide a start and an end address. The data is provided as min/max/average.

The Tracer allows choosing what register to trace and can optionally be setup to only trace from one point to another.
Emulicious Memory Editor.png (34.64 KB)
Memory Editor
Emulicious Memory Editor.png
Emulicious Profiler.png (7.47 KB)
Profiler
Emulicious Profiler.png
Emulicious Tracer.png (15.92 KB)
Tracer
Emulicious Tracer.png

  View user's profile Send private message Visit poster's website
  • Joined: 08 Dec 2013
  • Posts: 200
Reply with quote
Post Posted: Fri Sep 19, 2014 11:20 pm
Superb work! I'm very interested in the profiling -- can you explain what the numbers mean please?

P.S. -- With the memory editor, are you able to mark addresses that get executed, and those that are read so that we can spot unused part of the ROM and what's code/data?
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Fri Sep 19, 2014 11:25 pm
Kroc wrote
Superb work! I'm very interested in the profiling -- can you explain what the numbers mean please?

Calindro wrote
The data is provided as min/max/average.

:)
So for cycles it means the first number is the minimum number of cycles it needed to execute the specified code, the second is the maximum number of cycles needed to execute the specified code and the third is the average number of cycles needed to execute the specified code.
For instructions it's analogous just counting instructions instead of cycles and for scanlines it counts how often the scanline changes while the code is being executed.

Kroc wrote
P.S. -- With the memory editor, are you able to mark addresses that get executed, and those that are read so that we can spot unused part of the ROM and what's code/data?

You see the blueish bytes in the memory editor? They are code :)
Also the statusbar shows the datatype of the selected byte.
  View user's profile Send private message Visit poster's website
  • Joined: 01 Feb 2014
  • Posts: 895
Reply with quote
Post Posted: Sat Sep 20, 2014 7:11 am
This is excellent.
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Sun Dec 07, 2014 9:38 pm
Hi guys,

I've just released another update of Emulicious!
I've added watchpoints (aka memory breakpoints) to the debugger.

The memory editor now supports table files that will be automatically loaded if their filename is the same as the rom's filename extended by .tbl
It also allows searching for hex values or text in the memory now.

I have also added support for anonymous labels to Emulicious's disassembler. You can enable/disable this feature in the Disassembler Settings.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Mon Feb 09, 2015 8:16 pm
Last edited by Calindro on Wed Feb 11, 2015 10:18 am; edited 2 times in total
Hi guys,

I've just released another update of Emulicious.

As always the disassembler has improved and a bug has been fixed that had prevented Phantasy Star from being disassembled correctly.

Besides that I have added a few new features:

  • Visualization of the trace - makes it easy to tell where you are coming from even without using the Tracer
  • Destination Highlighting - When hovering a control flow instruction the destination gets highlighted (CTRL + Left click navigates to the destination)
  • Reference Hierarchy - Helps you find all the references to a specified label (entries show pairs of (nearest label before address : address))
  • Find Dialog in the Debugger


Edit: I forgot to mention the new navigation features Back and Forward. You can now navigate to your previous selections either from the Navigate menu or by pressing ALT+Left / ALT+Right
Trace Visualisation.png (40.79 KB)
Trace Visualisation
Trace Visualisation.png
Reference Hierarchy.png (19.92 KB)
Reference Hierarchy
Reference Hierarchy.png
Destination Highlighting.png (39.29 KB)
Destination Highlighting
Destination Highlighting.png

  View user's profile Send private message Visit poster's website
  • Joined: 06 Apr 2011
  • Posts: 250
  • Location: Netherlands
Reply with quote
Post Posted: Mon Feb 09, 2015 8:47 pm
Awesome work!

I really love this emulator + debugger!
  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Mon Feb 09, 2015 10:32 pm
I had some trouble with the Graphic Board where it has code like:

ld hl, SomeFunction
push hl
...
ret


Can you support that in the disassembler?
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Mon Feb 09, 2015 10:52 pm
Maxim wrote
I had some trouble with the Graphic Board where it has code like:

ld hl, SomeFunction
push hl
...
ret


Can you support that in the disassembler?

That already is supported in the disassembler...
When was the last time you tried? Maybe it was affected by the bug as well. If it still occurs I will have a look if you can tell me the address.
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Tue Feb 10, 2015 8:35 am
I started from the original disassembly we made after it was dumped. I didn't try it again recently...
  View user's profile Send private message Visit poster's website
  • Joined: 25 Mar 2014
  • Posts: 2
  • Location: Lyon France
Reply with quote
Post Posted: Wed Feb 11, 2015 9:53 am
Calindro wrote
Hi guys,

I've just released another update of Emulicious!
I've added watchpoints (aka memory breakpoints) to the debugger.

The memory editor now supports table files that will be automatically loaded if their filename is the same as the rom's filename extended by .tbl
It also allows searching for hex values or text in the memory now.

I have also added support for anonymous labels to Emulicious's disassembler. You can enable/disable this feature in the Disassembler Settings.


hello Calindro !

thx for your work

it seems emulicious.zip has not been updated in emulicious.net because the files are from 2014 excepted licence.txt (20150106).

so i don't know where to get your new release.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Wed Feb 11, 2015 10:08 am
greatxerox wrote
Calindro wrote
Hi guys,

I've just released another update of Emulicious!
I've added watchpoints (aka memory breakpoints) to the debugger.

The memory editor now supports table files that will be automatically loaded if their filename is the same as the rom's filename extended by .tbl
It also allows searching for hex values or text in the memory now.

I have also added support for anonymous labels to Emulicious's disassembler. You can enable/disable this feature in the Disassembler Settings.


hello Calindro !

thx for your work

it seems emulicious.zip has not been updated in emulicious.net because the files are from 2014 excepted licence.txt (20150106).

so i don't know where to get your new release.

Hi greatxerox,

thanks for your reply.
The files are correct but it seems like the date in the zip file is not getting updated correctly.
It's weird because it shows the correct date when the zip file is opened in Windows explorer but an old date is shown when the zip file is opened with 7zip. Does anyone know the reason?

Edit: I have fixed this now by removing the file from the zip and adding it back afterwards.
  View user's profile Send private message Visit poster's website
  • Joined: 25 Mar 2014
  • Posts: 2
  • Location: Lyon France
Reply with quote
Post Posted: Wed Feb 11, 2015 11:04 am
thank you :)

i just posted the new release on emu-france

For the next release, please could you add some graphic filters like hq2x, 2xai, LCD, and so on. It will be a great addition to Emulicious.

you could use the same than Meka or Kega fusion, or the shaders for example
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Thu Feb 12, 2015 5:19 pm
greatxerox wrote
thank you :)

i just posted the new release on emu-france

For the next release, please could you add some graphic filters like hq2x, 2xai, LCD, and so on. It will be a great addition to Emulicious.

you could use the same than Meka or Kega fusion, or the shaders for example

I will see what I can do about that. But I can't promise.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Wed Feb 25, 2015 12:48 pm
I've just released another small update:
The disassembler now also disassembles code that is loaded into RAM and executed in there.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Wed Apr 22, 2015 8:51 pm
Last edited by Calindro on Sun May 17, 2015 5:16 pm; edited 1 time in total
A major update of Emulicious has been released!
For Windows users that don’t have Java installed on their system an alternative download including Java binaries has been added to the Downloads section.
It comes with several new features:

  • The stack now shows labels of the functions that have been called (it can be double-clicked to navigate to the call)
  • The stack now shows the names of the registers that have been stored in it
  • Conditional breakpoints
  • An option for setting uninitialized memory and a breakpoint that breaks on access of uninitialized memory
  • A breakpoint that breaks when an interrupt doesn’t restore the state properly
  • Emulation of PAL for the SEGA Master System
  • Emulation of the screen borders of the SEGA Master System
  • Options to unhide the offscreen area of the SEGA Game Gear
  • DATA labels in the Z80 disassembler
  • RAM labels in the Z80 disassembler


Expressions/conditions support the following:
arithmetic operators:
+, -

boolean/logical operators:
&, |

shift operators:
<<, >>

compare operators:
=, ==, !=, <, >, <=, >=

decimal numbers
hex numbers (prefixed by either $ or 0x)
binary numbers (prefixed by %)
symbols loaded from a symfile
variables (see below)
the @ operator to "read" a value from a calculated address.

Besides that the following variables are supported:
All register names. As single registers and as register pairs.
scanline (the current scanline)

For read/write watchpoints only:
value (the value being read/written)
address (the address being read/written)

For write watchpoints only:
oldvalue (the value being overwritten)


Check it out at http://www.emulicious.net
  View user's profile Send private message Visit poster's website
  • Joined: 22 Mar 2015
  • Posts: 228
Reply with quote
Post Posted: Wed Apr 22, 2015 9:18 pm
Last edited by FeRcHuLeS on Wed Apr 22, 2015 10:33 pm; edited 4 times in total
Thank you Calindro, thank you so much. I think GG to SMS hacks will be easier than before. Now I'm gonna spend much time since It will be funnier than before trying GG to SMS hacks(or letting sprites to appear at least).
About the Tilemap Viewer is it possible to change the x,y position of any corner (I mean hacking)? so the scrolling works horizontal and vertical as usual for example Arena Maze of Death needs to be changed the upper left corner ("x" to the left and "y" to the down) Do you mind giving me some tips as before? Sorry I am not familiar with technical stuff yet.
PD. Thanks for the sprites tips, before I was lost not knowing where to begin. :)
  View user's profile Send private message
  • Joined: 28 Nov 2014
  • Posts: 365
Reply with quote
Post Posted: Wed Apr 22, 2015 9:33 pm
I've been working with this emulator for a while, and it makes my work finding hacks so much easier. The conditionals open up alot of additional possibilities. I haven't worked with any gg/sms conversions myself, but I imagine it will be much easier.

And its nice the emulator is frequently updated.
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Fri Apr 24, 2015 4:51 pm
FeRcHuLeS wrote
Thank you Calindro, thank you so much. I think GG to SMS hacks will be easier than before. Now I'm gonna spend much time since It will be funnier than before trying GG to SMS hacks(or letting sprites to appear at least).
About the Tilemap Viewer is it possible to change the x,y position of any corner (I mean hacking)? so the scrolling works horizontal and vertical as usual for example Arena Maze of Death needs to be changed the upper left corner ("x" to the left and "y" to the down) Do you mind giving me some tips as before? Sorry I am not familiar with technical stuff yet.
PD. Thanks for the sprites tips, before I was lost not knowing where to begin. :)

Hi FeRcHuLeS,

sorry, I didn't notice your questions until now! If you keep just editing your post it will be hard to notice about it. ;)
I'm not quite sure if I understand correctly what you're asking for...
You can't just easily move a corner of a tilemap but you can change the horizontal scroll and the vertical scroll. If you want to move them closer to the top and closer to the left you will need to reduce their values accordingly.
Please consider asking your question on the related thread instead:
www.smspower.org/forums/14742-GameGearGamesOnSMSMegadriveGenesis
There it's more likely for you to get answers to these questions. :)
  View user's profile Send private message Visit poster's website
  • Joined: 22 Mar 2015
  • Posts: 228
Reply with quote
Post Posted: Fri Apr 24, 2015 10:12 pm
Could you explain me how to use the DEBBUGGER / RUN LABEL in conjuction with the registers, flags and that memory from C000 to DFFF (sorry I'm not familiar with yet)? :)
  View user's profile Send private message
  • Joined: 22 Mar 2015
  • Posts: 228
Reply with quote
Post Posted: Sat May 02, 2015 8:56 pm
So, what assembler do you recommend? (I'm using wla z80 and got labels missing when compiling X-men Mojo World.gg)
  View user's profile Send private message
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Sun May 03, 2015 11:05 pm
FeRcHuLeS wrote
So, what assembler do you recommend? (I'm using wla z80 and got labels missing when compiling X-men Mojo World.gg)

Yeah, the disassembly is in wla z80 format.
I've just uploaded an update - the new version fixes the problem with X-men Mojo.
  View user's profile Send private message Visit poster's website
  • Joined: 18 Dec 2014
  • Posts: 95
  • Location: Canada
Reply with quote
Post Posted: Mon May 04, 2015 6:52 am
Awesome Calindro thank you
  View user's profile Send private message
  • Joined: 08 Dec 2005
  • Posts: 488
  • Location: Melbourne, Australia
Reply with quote
Post Posted: Mon May 04, 2015 4:44 pm
Calindro wrote
For Windows users that don’t have Java installed on their system an alternative download including Java binaries has been added to the Downloads section.

Thank you for providing this alternative download - it will allow me to use Emulicious for the first time. I look forward to trying out its debugging capabilities!

Unfortunately, I had significant issues downloading "Emulicious (with Java for Windows)" from http://emulicious.net/downloads/. Using Google Chrome, several download attempts each yielded less than 10MB of the 29MB file. Using wget, I was able to download the entire file - but the download needed to automatically resume about 10 times due to "Connection closed" errors.

Are you having issues with your web server?
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Mon May 04, 2015 5:58 pm
Paul Baker wrote
Calindro wrote
For Windows users that don’t have Java installed on their system an alternative download including Java binaries has been added to the Downloads section.

Thank you for providing this alternative download - it will allow me to use Emulicious for the first time. I look forward to trying out its debugging capabilities!

Unfortunately, I had significant issues downloading "Emulicious (with Java for Windows)" from http://emulicious.net/downloads/. Using Google Chrome, several download attempts each yielded less than 10MB of the 29MB file. Using wget, I was able to download the entire file - but the download needed to automatically resume about 10 times due to "Connection closed" errors.

Are you having issues with your web server?

Thanks for reporting the issue!
While browsing my logfiles I've seen a few http500 errors with the downloads so I checked the error logs but couldn't find anything related to the those errors...
Maybe you can help me investigate this problem? I'll also ask my provider about the issue.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Sun May 17, 2015 5:15 pm
Hi guys,

the issues with downloading Emulicious have been solved now. If you still have trouble please let me know so they can be solved as soon as possible.

An update of Emulicious has been released.

The debugger has been expanded by an outline which helps you navigate through code and orient yourself in it.

The tracer can be controlled using conditions now. You can define start/end conditions and a condition on which to trace an instruction at all.
Additionally you can provide an expression to be evaluated before each instruction being traced. Its result will be appended to the trace. This way you can log additional information. For example if you want to watch the value in RAM at $c100 you can set the expression to "@$c100". That way each line of your trace will also contain the value at $c100.

As usual you will get the update via the auto updater or the full version from http://www.emulicious.net
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Thu Jun 04, 2015 8:43 am
Disassembly request: can you produce a memory map, or an exported enum, to give labels to RAM addresses? It would make it easier to rename them when working on a disassembly. Bonus points for detecting byte vs. word usage (although memory reuse complicates that).
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Thu Jun 04, 2015 9:15 am
Maxim wrote
Disassembly request: can you produce a memory map, or an exported enum, to give labels to RAM addresses? It would make it easier to rename them when working on a disassembly. Bonus points for detecting byte vs. word usage (although memory reuse complicates that).

That's already done in the current version. Both of it. :)
It's creating exported enums and tries to detect byte vs. Word usage.
Aren't you using the current version yet?
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Thu Jun 04, 2015 9:20 am
I thought I was :( Maybe my auto update is broken. I need to stop asking for existing features...
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Thu Jun 04, 2015 10:10 am
Maxim wrote
I thought I was :( Maybe my auto update is broken. I need to stop asking for existing features...

When did you get your last update? I think I uploaded an update just yesterday. Did you get it?
I'll add a manual updater to make it easier to determine if your version is up to date.
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Thu Jun 04, 2015 7:00 pm
I saw the updater window this time and I'm up to date. My disassembly of Micro Machines was then much worse, large chunks no longer detected as code... It's a tricky game, lots of code in RAM, jump tables, I think some computed jumps too...
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Thu Jun 04, 2015 8:16 pm
Maxim wrote
I saw the updater window this time and I'm up to date. My disassembly of Micro Machines was then much worse, large chunks no longer detected as code... It's a tricky game, lots of code in RAM, jump tables, I think some computed jumps too...

Oh, yeah Codemasters games don't work too well with the disassembler (I'll work on improving them in the near future :) ). The main issue the disassembler has with their games is that most code of the title screen is run from RAM and it doesn't understand yet how the code gets loaded there so it fails quickly. Running the game with the debugger enabled will already help getting much more code disassembled but it like you said there's still other code being executed from RAM. So now I've just uploaded another update that adds an option to the disassembler settings. When it's enabled the disassembler won't try to follow calls and jumps into unknown RAM. That's what the old version always did so I think with this option enabled it should detect the code again that it had detected previously.
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Thu Jun 04, 2015 11:34 pm
I hadn't realised that running the game helps the disassembler to detect the code better (by virtue of the fact that it was executed) - obviously that can't really catch everything but it can allow for some entry points to be opened up. I'll try again with some extra navigation through the game.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Fri Jun 05, 2015 9:43 am
Maxim wrote
I hadn't realised that running the game helps the disassembler to detect the code better (by virtue of the fact that it was executed) - obviously that can't really catch everything but it can allow for some entry points to be opened up. I'll try again with some extra navigation through the game.

Yes, there are 3 ways to trigger the disassembler.
1 - open the debugger
2 - click set code on a line in the disassembly (I need to allow set code on a byte basis)
3 - an instruction that hasn't been detected yet gets executed

You can also create a config file next to the rom with the same name as the rom with extension .cfg. There you can provide hints for the disassembler to tell it where blocks of codes or jump tables start. I've written a file like that for trykaar:
https://github.com/trykaar/dc-sms-dasm/blob/master/dcsms.cfg
This should give you an idea on how it works :)
If the disassembler makes a jump table too big you can limit it with a 2nd parameter to "jump". So if you write
jump d0a 5
the jump table from d0a will only get 5 entries. You can also write jumptable instead of jump if you prefer that.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Wed Jun 24, 2015 10:03 pm
A small update of Emulicious has been released.
A log has been added to the Breakpoint Window that will log all the breakpoints being hit.
By disabling the check for "Suspend" you can avoid suspension when a breakpoint is hit and only get it logged instead.
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Wed Jun 24, 2015 10:26 pm
I got a new computer with a high DPI screen, and lots of parts of Emulicious are a bit broken (cut off or tiny). Any chance you could do something about it? (It seems to be a common problem with Java UIs.) I have Windows 8 set to 200% DPI scaling.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Wed Jun 24, 2015 11:13 pm
Unfortunately I don't have access to any high dpi computer so it will be hard for me to investigate. Can you please provide more information and maybe some screenshots?
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Thu Jun 25, 2015 7:00 am
You can set your low DPI screen to high settings to get the same effect but it's kind of disruptive to dev work. I'll send screenshots later.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Thu Jun 25, 2015 10:25 am
Maxim wrote
You can set your low DPI screen to high settings to get the same effect but it's kind of disruptive to dev work. I'll send screenshots later.

I just tried the setting (200%) but it didn't seem too bad so I'm not sure if I actually saw what you see. I've just released a quickfix update fixing the things I've seen. Maybe it already solves the glitches for you. :)
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Thu Jun 25, 2015 6:19 pm
Well, you solved the major ones already :) Here's some more...
breakpoint log.PNG (15.63 KB)
Teeny text
breakpoint log.PNG
debugger label icons.PNG (31.3 KB)
Teeny icons
debugger label icons.PNG
gutter icons.PNG (3.82 KB)
Teeny icons
gutter icons.PNG
reference hierarchy.PNG (11.14 KB)
Row height and icons
reference hierarchy.PNG
tracer text.PNG (10.82 KB)
Text again
tracer text.PNG
file browser.PNG (34.28 KB)
I suspect this is Oracle's fault
file browser.PNG

  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Thu Jun 25, 2015 6:32 pm
Next request: keyboard friendly UI. Please add accept/cancel button mappings to dialogs which don't already have them, and accelerators to menu items.

When I switch to another program and then switch back, the main window gets focus regardless of what I was doing when I switched away. Then I have to get the debugger focused to use its keyboard shortcuts. That's frequently why I'm opening the palette viewer when I wanted to step through some code.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Thu Jun 25, 2015 11:37 pm
Maxim wrote
Next request: keyboard friendly UI. Please add accept/cancel button mappings to dialogs which don't already have them, and accelerators to menu items.

When I switch to another program and then switch back, the main window gets focus regardless of what I was doing when I switched away. Then I have to get the debugger focused to use its keyboard shortcuts. That's frequently why I'm opening the palette viewer when I wanted to step through some code.

I don't know if I can do anything about the file browser but everything else should be as requested now. Please let me know if I forgot anything.
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Fri Jun 26, 2015 11:39 am
A few more...

There's still no menu accelerator. I'm referring to the ability to press Alt+F to open the File menu, etc. In Win32, you insert "&" before the character in the menu text and try not to have duplicates. It ought to work when there are none defined b using the initial letters, but I guess your Java UI framework is breaking that.

With the truncated text, re-choosing the dialog while it is open makes it resize to fit but I can't otherwise resize it.
Text truncated.PNG (17.23 KB)
Text truncated.PNG
Text truncated.PNG (27.72 KB)
Text truncated.PNG

  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Fri Jun 26, 2015 12:06 pm
Maxim wrote
A few more...

There's still no menu accelerator. I'm referring to the ability to press Alt+F to open the File menu, etc. In Win32, you insert "&" before the character in the menu text and try not to have duplicates. It ought to work when there are none defined b using the initial letters, but I guess your Java UI framework is breaking that.

With the truncated text, re-choosing the dialog while it is open makes it resize to fit but I can't otherwise resize it.

Ohhh, at first I checked each menu and thought that every relevant menu item got its own accelerator. So you couldn't be referring to that. Then I noticed that the popup menu doesn't have any menu accelerators and thought that was what you're asking for so now it also has menu accelerators. (Which is a good thing anyways :) ) But as I'm never using the kind of menu accelerator you're asking for I didn't think of it. It's actually pretty easy to add. I'm at it right now.
I'll also take care of the viewers.
Is the icon in the Go To dialog really an issue? I would need to replace it by a custom dialog to solve it.

Edit: Update is available now. Anything else to do?
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Fri Jun 26, 2015 2:19 pm
I'm just a bit fussy about GUI inconsistencies :) but I can forgive you for the broken core dialogs...

There's a lack of consistency about which window gets an icon. The program icon is the Java icon, I guess you need an artist to draw a better one?

The UI generally seems to have zero padding on everything, can you add some? It's very densely packed.
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14939
  • Location: London
Reply with quote
Post Posted: Fri Jun 26, 2015 7:05 pm
There's a few conflicting accelerator keys, e.g. Run -> Resume / Step Return, Tools -> Tile Viewer / Memory Tracer. Sometimes I've written code to select the char to accelerate on at runtime based on what's in the menu, to guarantee uniqueness, with varying rules for selecting the char (use predefined letter; prefer first letter; prefer capital letter; then on the final pass try to pick the least-clashing letter) but it can still end up picking wacky things and failing to find anything on larger menus.

You missed the Memory Editor menu.

Some of the UI controls could get accelerators too... which might sometimes clash with menus. For example, the "follow register" radio buttons in the memory editor have to live alongside a menu.

It looks like Alt+Enter toggles fullscreen, but that's not listed on the menu. If I do it before loading a ROM, some of the tool windows get restored when I exit fullscreen mode, and their "auto refresh" is then broken until I re-enable it.

Space for toggling Turbo isn't listed either.

The resizable tool windows are nice. Can the background colour of the viewers be something other than black? It makes it hard to see where the data ends. For the sprite viewer, it would be nice to show the transparency rather than use palette entry 16.

F for Filter is in the readme but no menu and doesn't do anything for me...
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 637
Reply with quote
Post Posted: Fri Jun 26, 2015 8:26 pm
Last edited by Calindro on Sat Jun 27, 2015 11:29 am; edited 1 time in total
Maxim wrote
I'm just a bit fussy about GUI inconsistencies :) but I can forgive you for the broken core dialogs...

It's good! You make me revisit things I haven't touched for quite a while. They've always bugged me but I kept postponing the task of polishing it. So thanks for kicking my butt. :)

Maxim wrote
There's a lack of consistency about which window gets an icon.

Where? It seems like all my custom windows got the icon while the predefined dialogs don't have one.

Maxim wrote
The UI generally seems to have zero padding on everything, can you add some? It's very densely packed.

Yes, I can add some. Is there a particular place where you miss it? I think you're mainly referring to the text in the viewers?

Maxim wrote
There's a few conflicting accelerator keys, e.g. Run -> Resume / Step Return, Tools -> Tile Viewer / Memory Tracer. Sometimes I've written code to select the char to accelerate on at runtime based on what's in the menu, to guarantee uniqueness, with varying rules for selecting the char (use predefined letter; prefer first letter; prefer capital letter; then on the final pass try to pick the least-clashing letter) but it can still end up picking wacky things and failing to find anything on larger menus.

You missed the Memory Editor menu.

Oops, fixed for the next update. ;)

Maxim wrote
The resizable tool windows are nice. Can the background colour of the viewers be something other than black? It makes it hard to see where the data ends.

What color would you prefer?

Maxim wrote
For the sprite viewer, it would be nice to show the transparency rather than use palette entry 16.

Show transparency? Isn't that a contradiction? ^^ It seems like in most cases palette entry 16 works just fine... would you prefer alternating blocks of gray and white like in e.g. Photoshop?

Maxim wrote
F for Filter is in the readme but no menu and doesn't do anything for me...

Oh, you read the ReadMe? I haven't touched it for years. <.<
F was used to enable Bilinear Filtering. But obviously F is a bad choice for it as ppl might want to use it as a control for the emulated system.
Some ppl had reported bad performance with Emulicious and it was caused by Bilinear Filtering. The problem was that it didn't get hardware accelerated. To avoid confusion I've decided to only show the menu entry when Bilinear Filtering can be hardware accelerated.
  View user's profile Send private message Visit poster's website
  • Joined: 01 Feb 2014
  • Posts: 895
Reply with quote
Post Posted: Sat Jun 27, 2015 7:13 am
Calindro wrote
Show transparency? Isn't that a contradiction? ^^ It seems like in most cases palette entry 16 works just fine... would you prefer alternating blocks of gray and white like in e.g. Photoshop?

I think that would actually be more confusing. I, for one, never had problems with palette entry 16.
  View user's profile Send private message
Reply to topic Goto page 1, 2  Next



Back to the top of this page

Back to SMS Power!