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 Hacking Tools

Reply to topic
Author Message
  • Joined: 14 Apr 2013
  • Posts: 623
Reply with quote
Emulicious Hacking Tools
Post Posted: Sun Dec 01, 2013 1:42 am
Last edited by Calindro on Sun Dec 01, 2013 1:38 pm; edited 1 time in total
Hi guys,

I'm currently working on hacking tools for my emulator Emulicious.
It provides 2 tools so far:

A smart (seperating code from data) disassembler that can be configured on a per-rom-basis. Completely seperates code from data in games like Alex Kidd In Miracle World and Sonic 1 already.

A memory tracer that can tell the sources of data (see screenshots).
For example it can be used to find text within the rom in order to alter/translate it (see screenshot of the Tilemap Viewer). Or just to find out where tiles, sprite data, palettes or tilemap entries are coming from within the rom.

I didn't have much time to test these features yet but if you're interested you can send me your email address via pn and I will send you a copy of the most recent version.

Best Regards
Calindro
Memory Tracer.png (9.53 KB)
Memory Tracer in Sprite Viewer
Memory Tracer.png
Memory Tracer Tilemap.png (20.8 KB)
Memory Tracer in Tilemap Viewer
Memory Tracer Tilemap.png

  View user's profile Send private message Visit poster's website
  • Joined: 01 Aug 2012
  • Posts: 322
  • Location: Porto, Portugal
Reply with quote
Post Posted: Sun Dec 01, 2013 1:02 pm
btw, the fact that you made it in java means that, for example, we can use them online on applets, like i do about zx-spectrum at http://nitrofurano.altervista.org/retrocoding/zxspectrum/misc ? this would be really interesting! :)
  View user's profile Send private message Visit poster's website
  • Joined: 04 Nov 2004
  • Posts: 273
Reply with quote
Post Posted: Sun Dec 01, 2013 2:01 pm
Wow, this is the second most amazing hacking tool I've ever seen.
Are you doing some magic or is this a dynamic disassembler like I proposed? For the data source addresses, are you tracing ld-instructions?
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 623
Reply with quote
Post Posted: Sun Dec 01, 2013 2:21 pm
Hi Martin,

Martin wrote
Wow, this is the second most amazing hacking tool I've ever seen.

Haha thank you! This is giving me motivation to make it the most amazing one! :) May I ask which is the most amazing one?

Martin wrote
Are you doing some magic

Yes, I guess. :D

Martin wrote
or is this a dynamic disassembler like I proposed?

No, it's not using anything of the emulation core. It's only analyzing the code to make decisions.

Martin wrote
For the data source addresses, are you tracing ld-instructions?

Yes, something like that. I'm also tracing data in RAM trying to provide ROM addresses as much as possible.
  View user's profile Send private message Visit poster's website
  • Joined: 04 Nov 2004
  • Posts: 273
Reply with quote
Post Posted: Sun Dec 01, 2013 2:38 pm
Quote

Martin wrote
Wow, this is the second most amazing hacking tool I've ever seen.

Haha thank you! This is giving me motivation to make it the most amazing one! :) May I ask which is the most amazing one?


No, I'm just quoting someone ;)


Quote

Martin wrote
or is this a dynamic disassembler like I proposed?

No, it's not using anything of the emulation core. It's only analyzing the code to make decisions.


Hmm hmm hmm. So it's running just once through the game and could run without the emulator? Do you analyze the code somehow to detect jumptables?
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 623
Reply with quote
Post Posted: Sun Dec 01, 2013 2:44 pm
Martin wrote
Hmm hmm hmm. So it's running just once through the game and could run without the emulator? Do you analyze the code somehow to detect jumptables?

Exactly (yes to both questions). If it fails you can give hints on blocks of codes and jumptables in a cfg file (and tell me so I can improve it to not fail there anymore :)).
  View user's profile Send private message Visit poster's website
  • Joined: 04 Nov 2004
  • Posts: 273
Reply with quote
Post Posted: Sun Dec 01, 2013 3:21 pm
Wow. I don't see how it could detect start and end of the jumptables. If it's using a constant to access the table, then it's possible. (SMS Examine was able to do such things, albeit not all that well and probably buggy.)

If I take GG Turrican for example, and I know the game very well, if a disassembler could detect the code handlers for enemy objects for example, statically, I dare say it would mean the disassembler would completly understand the program.
  View user's profile Send private message Visit poster's website
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14685
  • Location: London
Reply with quote
Post Posted: Sun Dec 01, 2013 4:26 pm
nitrofurano wrote
btw, the fact that you made it in java means that, for example, we can use them online on applets, like i do about zx-spectrum at http://nitrofurano.altervista.org/retrocoding/zxspectrum/misc ? this would be really interesting! :)

I think it's increasingly rare for people to even install Java these days, for security reasons. Javascript is a better target for in browser emulation.
  View user's profile Send private message Visit poster's website
  • Joined: 01 Aug 2012
  • Posts: 322
  • Location: Porto, Portugal
Reply with quote
Post Posted: Sun Dec 01, 2013 6:55 pm
Maxim wrote
nitrofurano wrote
btw, the fact that you made it in java means that, for example, we can use them online on applets, like i do about zx-spectrum at http://nitrofurano.altervista.org/retrocoding/zxspectrum/misc ? this would be really interesting! :)

I think it's increasingly rare for people to even install Java these days, for security reasons. Javascript is a better target for in browser emulation.


security reasons on Java, even from OpenJDK versions?

but btw, i got really surprised with emulators on javascript nowadays! :)
  View user's profile Send private message Visit poster's website
  • Joined: 14 Oct 2006
  • Posts: 256
  • Location: NYC
Reply with quote
Post Posted: Sun Dec 01, 2013 7:46 pm
Maxim wrote
nitrofurano wrote
btw, the fact that you made it in java means that, for example, we can use them online on applets, like i do about zx-spectrum at http://nitrofurano.altervista.org/retrocoding/zxspectrum/misc ? this would be really interesting! :)

I think it's increasingly rare for people to even install Java these days, for security reasons.

This. I haven't installed Java in like 2 years and refuse to ever do so again.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 623
Reply with quote
Post Posted: Sun Dec 01, 2013 7:49 pm
olaf wrote
Maxim wrote
nitrofurano wrote
btw, the fact that you made it in java means that, for example, we can use them online on applets, like i do about zx-spectrum at http://nitrofurano.altervista.org/retrocoding/zxspectrum/misc ? this would be really interesting! :)

I think it's increasingly rare for people to even install Java these days, for security reasons.

This. I haven't installed Java in like 2 years and refuse to ever do so again.

Hi olaf,

if I write a Zillion level editor it will also be written in Java. Will you still refuse installing it?
  View user's profile Send private message Visit poster's website
  • Joined: 25 Feb 2006
  • Posts: 863
  • Location: Belo Horizonte, MG, Brazil
Reply with quote
Post Posted: Sun Dec 01, 2013 11:02 pm
olaf wrote
Maxim wrote
nitrofurano wrote
btw, the fact that you made it in java means that, for example, we can use them online on applets, like i do about zx-spectrum at http://nitrofurano.altervista.org/retrocoding/zxspectrum/misc ? this would be really interesting! :)

I think it's increasingly rare for people to even install Java these days, for security reasons.

This. I haven't installed Java in like 2 years and refuse to ever do so again.


Well, there are ways to run a Java VM without actually installing it: you'll notice that Oracle's java download page provides the VM both as an installer or as an tar.gz compressed file; if you want to run a Java program without installing the VM, you may just download the proper tar.gz, decompress it, and use the 'java' executable inside the 'bin' folder.
  View user's profile Send private message Visit poster's website
  • Joined: 23 Mar 2013
  • Posts: 611
  • Location: Copenhagen, Denmark
Reply with quote
Post Posted: Wed Dec 04, 2013 8:20 am
I'm having a good time using the ROM-hacking features of Emulicious. I have set up Context like Maxim describes in programming lesson 1, and having assemble on F9, Meka on F10, and now Emulicious on F11. This makes a nice development platform for hacking/modding ROM's - I dare say best of both worlds: I rely on Meka for the extensive debugging features, memory viewer/editor, cheat finder etc., and on Emulicious for the handy memory tracer, the built-in disassembler, the ability to zoom the screen and different viewers, and its overall speed and responsiveness.

Thank you for contributing this amazing emulator/hacking asset, Calindro! :)
  View user's profile Send private message Visit poster's website
  • Joined: 14 Oct 2006
  • Posts: 256
  • Location: NYC
Reply with quote
Post Posted: Wed Dec 04, 2013 9:15 pm
Calindro wrote
olaf wrote
Maxim wrote
nitrofurano wrote
btw, the fact that you made it in java means that, for example, we can use them online on applets, like i do about zx-spectrum at http://nitrofurano.altervista.org/retrocoding/zxspectrum/misc ? this would be really interesting! :)

I think it's increasingly rare for people to even install Java these days, for security reasons.

This. I haven't installed Java in like 2 years and refuse to ever do so again.

Hi olaf,

if I write a Zillion level editor it will also be written in Java. Will you still refuse installing it?

No, I will most definitely install it to use it. :)
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 623
Reply with quote
Post Posted: Wed Dec 18, 2013 1:31 pm
hey guys,

I've started working on a debugger with syntax highlighting.
It shows the register values in top right and the stack in bottom right.
It allows 3 kinds of stepping:
Step Into: Steps to the next instruction to be executed
Step Over: Steps over the current instruction
Step Return: Steps out of the current function
Debugger.png (37.65 KB)
Debugger
Debugger.png

  View user's profile Send private message Visit poster's website
  • Joined: 16 Dec 2008
  • Posts: 38
  • Location: UK
Reply with quote
Post Posted: Thu Dec 19, 2013 8:41 am
Calindro wrote

I've started working on a debugger with syntax highlighting.
It shows the register values in top right and the stack in bottom right.

This is excellent! I can't wait for a release. It's about time we had a cross-platform emulator with decent debug support. Meka is fine but it's a real pain to get it compiled and running under Linux. Even running it under Wine is no great joy.
  View user's profile Send private message
  • Joined: 06 Apr 2011
  • Posts: 250
  • Location: Netherlands
Reply with quote
Post Posted: Thu Dec 19, 2013 10:56 am
Great work. Again!
  View user's profile Send private message
  • Site Admin
  • Joined: 08 Jul 2001
  • Posts: 8644
  • Location: Paris, France
Reply with quote
Post Posted: Thu Dec 19, 2013 11:25 am
Glitch wrote
Calindro wrote

I've started working on a debugger with syntax highlighting.
It shows the register values in top right and the stack in bottom right.

This is excellent! I can't wait for a release. It's about time we had a cross-platform emulator with decent debug support. Meka is fine but it's a real pain to get it compiled and running under Linux. Even running it under Wine is no great joy.

Sorry for hijacking this topic but, what precisely is the pain with compiling Meka under Linux? I have vastly improved the Windows build now (it should compile out of the box in one step) and I'd be happy to improve the Linux situation as well, it's just that I don't have a Linux install. Any help or questions welcome. If you want to move this further better to reply in the Meka forum to not spam here.
  View user's profile Send private message Visit poster's website
  • Joined: 07 Nov 2018
  • Posts: 42
  • Location: Brazil
Reply with quote
Problem
Post Posted: Sun Dec 02, 2018 9:15 pm
I'm trying to see a color in the palette but it says "source not available". help?
  View user's profile Send private message Visit poster's website
  • Joined: 14 Apr 2013
  • Posts: 623
Reply with quote
Post Posted: Sun Dec 02, 2018 9:19 pm
cheaptools wrote
I'm trying to see a color in the palette but it says "source not available". help?

Why do you resurrect this old thread? There's a more recent Emulicious thread ;) : http://www.smspower.org/forums/16568-EmuliciousUpdateAvailable

If you're interested in the source of a color in the palette you need to enable the Memory Tracer. If the Memory Tracer is disabled it displays "source not available" in the source field.
  View user's profile Send private message Visit poster's website
  • Joined: 07 Nov 2018
  • Posts: 42
  • Location: Brazil
Reply with quote
Post Posted: Sun Dec 02, 2018 11:09 pm
Calindro wrote
If you're interested in the source of a color in the palette you need to enable the Memory Tracer. If the Memory Tracer is disabled it displays "source not available" in the source field.


Can you give me like a chart with the colors so I can change it? I'm very new to this.
(also if you feel like it you could tell me how to change it? I'll probably figure it out by myself eventually tho)
  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!