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
  
User name:
Password:
Reply:
 

UserPost
Hyde
Posts: 3/24
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).
HyperLamer
Posts: 2175/8210
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
Posts: 2/24
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.
Sokarhacd
Posts: 834/1757
it certainly does, its an awesome emulator...good work on it
dan
Posts: 255/782
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
Posts: 833/1757
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
Posts: 254/782
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.
Colin
Posts: 5296/11302
*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.
Hyde
Posts: 1/24
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)
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.002 seconds.