|
ForumsSega Master System / Mark III / Game GearSG-1000 / SC-3000 / SF-7000 / OMV |
Home - Forums - Games - Scans - Maps - Cheats - Credits Music - Videos - Development - Hacks - Translations - Homebrew |
Goto page 1, 2 Next |
Author | Message |
---|---|
|
Emulicious Major Update
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:
More information and download can be found on http://www.emulicious.net Kind Regards Calindro |
|
|
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. | |
|
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. |
|
|
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? |
|
|
Posted: Fri Sep 19, 2014 11:25 pm |
:) 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.
You see the blueish bytes in the memory editor? They are code :) Also the statusbar shows the datatype of the selected byte. |
|
|
Posted: Sat Sep 20, 2014 7:11 am |
This is excellent. | |
|
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. |
|
|
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:
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 |
|
|
Posted: Mon Feb 09, 2015 8:47 pm |
Awesome work!
I really love this emulator + debugger! |
|
|
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? |
|
|
Posted: Mon Feb 09, 2015 10:52 pm |
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. |
|
|
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... | |
|
Posted: Wed Feb 11, 2015 9:53 am |
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. |
|
|
Posted: Wed Feb 11, 2015 10:08 am |
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. |
|
|
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 |
|
|
Posted: Thu Feb 12, 2015 5:19 pm |
I will see what I can do about that. But I can't promise. |
|
|
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. |
|
|
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:
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 |
|
|
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. :) |
|
|
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. |
|
|
Posted: Fri Apr 24, 2015 4:51 pm |
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. :) |
|
|
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)? :) | |
|
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) | |
|
Posted: Sun May 03, 2015 11:05 pm |
Yeah, the disassembly is in wla z80 format. I've just uploaded an update - the new version fixes the problem with X-men Mojo. |
|
|
Posted: Mon May 04, 2015 6:52 am |
Awesome Calindro thank you | |
|
Posted: Mon May 04, 2015 4:44 pm |
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? |
|
|
Posted: Mon May 04, 2015 5:58 pm |
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. |
|
|
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 |
|
|
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). | |
|
Posted: Thu Jun 04, 2015 9:15 am |
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? |
|
|
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... | |
|
Posted: Thu Jun 04, 2015 10:10 am |
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. |
|
|
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... | |
|
Posted: Thu Jun 04, 2015 8:16 pm |
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. |
|
|
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. | |
|
Posted: Fri Jun 05, 2015 9:43 am |
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.
|
|
|
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. |
|
|
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. | |
|
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? | |
|
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. | |
|
Posted: Thu Jun 25, 2015 10:25 am |
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. :) |
|
|
Posted: Thu Jun 25, 2015 6:19 pm |
Well, you solved the major ones already :) Here's some more...
|
|
|
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. |
|
|
Posted: Thu Jun 25, 2015 11:37 pm |
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. |
|
|
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. |
|
|
Posted: Fri Jun 26, 2015 12:06 pm |
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? |
|
|
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. |
|
|
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... |
|
|
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 |
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. :)
Where? It seems like all my custom windows got the icon while the predefined dialogs don't have one.
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?
Oops, fixed for the next update. ;)
What color would you prefer?
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?
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. |
|
|
Posted: Sat Jun 27, 2015 7:13 am |
I think that would actually be more confusing. I, for one, never had problems with palette entry 16. |
|
Goto page 1, 2 Next |