Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
1 user currently in Rom Hacking: hukka | 2 guests
Acmlm's Board - I2 Archive - Rom Hacking - SmartRENES and aNESe | |
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
Hyde

Goomba
Level: 8

Posts: 1/24
EXP: 2168
For next: 19

Since: 11-27-04

Since last post: 209 days
Last activity: 203 days
Posted on 11-27-04 07:04 AM Link | Quote
Well, I thought I'd post something about my tools here...

I've been working on a disassembler and an NES emulator for quite some time now and I think both programs have reached a stage at which they deserve to be released. Notice that neither one of them is perfect, but still do the trick for a lot of games. So what is so special about 'em? The emulator collects address information needed by the disassembler, which, in theory, should output the full source of a given game. This output can be compiled with CA65 after the user performs a few modifications to the code. So basically the disassembler allows hackers to actually get to the code of a game, modify it, compile it, then release it. For instance, I've been able to extract most of the code out of Battletoads (U) and compile it in about an hour (the time it took me to beat the game). After beating the game all I had to do was 1) load the emulator's log file into the disassembler, 2) wait for a few seconds while the disassembler did its thing, then 3) modified some things until the code was compiled / linked using CA65. Now that I've given you some information on how the programs work, be sure to try them out and leave some feedback here or at my mail box:

http://hydesprojects.cjb.net/

Go to the Games Sources section to get the disassembler and to the aNESe page to get the emulator.

(You will need to have MS's .NET Framework installed on your computer)
Colleen
Administrator
Level: 136

Posts: 5296/11302
EXP: 29369328
For next: 727587

Since: 03-15-04
From: LaSalle, Quebec, Canada

Since last post: 3 hours
Last activity: 1 hour
Posted on 11-27-04 08:51 AM Link | Quote
*whistles*

Well, I'm certainly impressed. I don't think I've heard of a combo like that which can disassemble games... If anything, you might have a lot of hackers thanking you for this if things go well.

Nice job! Between that and Temporal Flux, it's been a busy past few days.
dan

Snap Dragon
Level: 43

Posts: 254/782
EXP: 534516
For next: 30530

Since: 03-15-04

Since last post: 20 hours
Last activity: 14 hours
Posted on 11-27-04 07:43 PM Link | Quote
These tools are extremely useful if you want to work on some serious assembly hacks instead of having to use a rather tedious hex editor to manually input the opcodes.
Sokarhacd

Ball and Chain Trooper
Resistance is Futile
You Will Be Assimilated
Hab SoSlI' Quch
Level: 61

Posts: 833/1757
EXP: 1799888
For next: 76708

Since: 03-15-04

Since last post: 6 days
Last activity: 4 hours
Posted on 11-27-04 08:14 PM Link | Quote
awesome...except, is it just me, or do none of the menu items in the emulator work...except open rom image, about doesnt work, and nothing else really.
dan

Snap Dragon
Level: 43

Posts: 255/782
EXP: 534516
For next: 30530

Since: 03-15-04

Since last post: 20 hours
Last activity: 14 hours
Posted on 11-27-04 10:12 PM Link | Quote
No, they don't work. The emulator isn't finished yet. The main feature (which is the logging of code and data) does work, and that's what makes this emulator worthwhile using.
Sokarhacd

Ball and Chain Trooper
Resistance is Futile
You Will Be Assimilated
Hab SoSlI' Quch
Level: 61

Posts: 834/1757
EXP: 1799888
For next: 76708

Since: 03-15-04

Since last post: 6 days
Last activity: 4 hours
Posted on 11-27-04 11:27 PM Link | Quote
it certainly does, its an awesome emulator...good work on it
Hyde

Goomba
Level: 8

Posts: 2/24
EXP: 2168
For next: 19

Since: 11-27-04

Since last post: 209 days
Last activity: 203 days
Posted on 11-28-04 12:18 AM Link | Quote
Like Dan said, the emulator is not finished yet, but the main feature does work, which is the logging of useful address data. Also, I am currently working on MMC3 support, meaning that in a future anyone will be able to disassemble games like SMB3 and Kirby's Adventures.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 2175/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 11-28-04 01:31 AM Link | Quote
Cool! How exactly are you doing this? I figure something like this:
-Emulator keeps a 'type' array for each byte of the ROM, marking it as either data or code (initially all data)
-As the game runs, chunks get marked as either code or data depending how they're accessed
-Disassembler reads this from the log file and disassembles as required

Is that it? I wrote a Gameboy disassembler that does that a while back. (I should finish it. ) It doesn't use an emulator, instead it marks each byte as data (except known code regions like the interrupt vectors), then starting at the program entry point (0x100) it runs through the code, marking each byte as being code. When it finds a jump or a call, it flags that and comes back to it later, so that eventually, all possible routes (both taking and not taking the jump) are taken, which hopefully means all the code should be identified.
Hyde

Goomba
Level: 8

Posts: 3/24
EXP: 2168
For next: 19

Since: 11-27-04

Since last post: 209 days
Last activity: 203 days
Posted on 11-28-04 07:02 AM Link | Quote
It kinda works the same way yours does. The disassembler can handle a lot of mapper #0, #3 (SMB, Argus) games without the emulator's help, but it can't handle other games so well, such as mapper #2 and #7 ones (Megaman, Castlevania, Battletoads). The reason for this is that most of such games depend on distinct bankswitching schema, and there really isn't an elegant way of following code blocks accross different banks. Also, a lot of games depend on indirect jumps, which can be performed through either the standard way (jmp ($xxxx)) or the f'd up way (modify stack, rts). The emulator helps the disassembler accomplish these tasks by logging addresses and stuff (for a sample see the "Addresses.log" file generated by the emulator).
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Rom Hacking - SmartRENES and aNESe | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.015 seconds.