NESRevPlus

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

User avatar
oRBIT2002
Posts: 687
Joined: Sun Mar 19, 2006 3:06 am
Location: Gothenburg/Sweden

NESRevPlus

Post by oRBIT2002 »

Since we haven't seen an update for Kent Hansens great "NESRev" for quite some time (It seems to have vanished from the internet aswell, almost anyway), I've decided to port NESRev's java-code to Windows .NET.
My plan is to keep the tool updated and use a modern GUI instead of a commandline.
I hope Kent Hansen won't mind..
Progress is good and I'm almost done with the initial port and expect to release a beta soon.
Let me know if you have any cool ideas of features to add. :)

Until then, here's a screenshot of what's coming:
Image[/img]

For the latest version:
http://nes.goondocks.se
Last edited by oRBIT2002 on Fri May 24, 2013 1:33 am, edited 2 times in total.
Denine
Posts: 397
Joined: Wed Feb 17, 2010 5:42 pm

Post by Denine »

What's "NESRev"? From a picture I can guess it's some dissamblery tool.
Will it work with other mappers than NROM?How accurate it is? I mean, how accuretly it can separate Code from Data? Can data be saved as separate file and be assembled in one of assemblers?
Sorry for so many questions, but this is really good stuff. :D
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples »

And will you have someone testing it with Mono?
User avatar
Zepper
Formerly Fx3
Posts: 3262
Joined: Fri Nov 12, 2004 4:59 pm
Location: Brazil
Contact:

Post by Zepper »

Denine wrote:What's "NESRev"? From a picture I can guess it's some dissamblery tool.
Will it work with other mappers than NROM?How accurate it is? I mean, how accuretly it can separate Code from Data? Can data be saved as separate file and be assembled in one of assemblers?
Sorry for so many questions, but this is really good stuff. :D
1. NESRev is a 6502 program disassembler made by Kent Hansen, known as Snowbro. His last work was a nice 6502 program called "DPad Hero".

2. NESRev is a different disassembler. While every disassembler threats all the data as "code", NESRev separates what's "program code" from what's "table".

3. NESRev was developed with mapper 0 in mind, so it had a few games fully disassembled, but the source code could be recompiled without problems.

4. It's kinda hard to say, since mappers other than NROM do bankswitching, making the things quite complicated.
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples »

What's the difference between NESRev and CDL-assisted disassembly? How does NESRev tell "data table" from "jump table"?
Bisqwit
Posts: 249
Joined: Fri Oct 14, 2011 1:09 am

Post by Bisqwit »

For the curious, I might link to my own "clever-disasm", provided with nescom.
It provides table-aware disassemblies like this.
- http://bisqwit.iki.fi/jutut/mariobros-disasm.asm : Mario Bros. without configuration ("out of box")
- http://bisqwit.iki.fi/jutut/lunarball.lst : Lunar Ball, with configuration (RAM & ROM labels) -- configuration file: http://bisqwit.iki.fi/jutut/lunarball.map
It has understanding of a few mappers such as MMC1, MMC3 and UxROM.
I have not really made noise about it, but I have used it personally for many of my reverse engineering projects, mostly for TAS purposes. I usually tweak the source code when I need something changed, such as support for a new mapper or a new kind of data suffix routine.
User avatar
oRBIT2002
Posts: 687
Joined: Sun Mar 19, 2006 3:06 am
Location: Gothenburg/Sweden

Post by oRBIT2002 »

tepples wrote:What's the difference between NESRev and CDL-assisted disassembly? How does NESRev tell "data table" from "jump table"?
NESRev traces all code that's executed (in most cases anyway) on it's own. So no need to play through the *entire* game first (as you have to do with the CDL...)
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Post by tokumaru »

Unless you have an entire emulator embedded in the disassembler, you can't possibly trace all executable code... There's always stuff that's called through pointers, code that's copied to RAM (will look like data to a disassembler) and stuff like that.
User avatar
oRBIT2002
Posts: 687
Joined: Sun Mar 19, 2006 3:06 am
Location: Gothenburg/Sweden

Post by oRBIT2002 »

Here's my first beta-release. Feel free to check it out. At the moment it is only capable of disassembling 16K games (just like the original NESRev).

It's for Windows and requires .NET framework 3.5:

http://dl.dropbox.com/u/2590713/anes/NESrevPlus.zip
User avatar
oRBIT2002
Posts: 687
Joined: Sun Mar 19, 2006 3:06 am
Location: Gothenburg/Sweden

Post by oRBIT2002 »

NESRevPlus now have a place on the world wide web.. :)
http://www.anes.se/nestools/
User avatar
B00daW
Posts: 586
Joined: Thu Jan 03, 2008 1:48 pm

Post by B00daW »

Hey, I like this tool a lot, but limiting the input format to .NES isn't so great. NSF, BIN, or *.* would be nice too.
User avatar
oRBIT2002
Posts: 687
Joined: Sun Mar 19, 2006 3:06 am
Location: Gothenburg/Sweden

Post by oRBIT2002 »

Thanks for the feedback. Nice to know someone's actually using it. :)
User avatar
noattack
Posts: 147
Joined: Tue Feb 13, 2007 9:02 pm
Location: Richmond, VA

Post by noattack »

I used it for Wild Gunman, so thanks!
User avatar
oRBIT2002
Posts: 687
Joined: Sun Mar 19, 2006 3:06 am
Location: Gothenburg/Sweden

Post by oRBIT2002 »

I'm working on the next version of NESRevPlus.. Anyone with some excellent ideas for improvement? :)
User avatar
Hamtaro126
Posts: 818
Joined: Thu Jan 19, 2006 5:08 pm

Post by Hamtaro126 »

Possible Features:

Detection of ''JMP (Addr)'', or opcode $6C, while defining addresses by hand
Variable and Zero-Page Definition support
Use .ORG support for split banks
8Kb through 32Kb PRG ROM Banking Emulation support,
1Kb through 8Kb CHR ROM Banking Emulation support,
Export CHR ROM and PRG ROM to seperate files according to mapper-based banksize defines
Post Reply