So a couple days ago, I wanted to do a disassembly of Castlevania, and I really didn't want to dink around with Tracer and all the command line crap, so believe it or not I started disassembling it "by hand" (I looked at each instruction in a hex editor and translated it myself). Then I realized that was a stupid waste of time, so I decided I wanted to make a disassembler to fit my needs with Visual Basic.
I also realized that the best way to go about disassembling a game is not to have a program do it all for you. Really only humans can tell what is data and what is not, so a sort of disassembling in chunks approach I thought would be best. I think that you should go through and logically determine what is data and what is code. For example, I noticed there was a table in CV where the index was ANDed by $0F before used. This leads me to believe that the table is 16 bytes long, and none of it is code. A good disassembler (in my opinion) can help you in this process, not necessarily do it for you though.
So here's a quick kind of buggy version of what I'm going for:
http://www.freewebs.com/the_bott/DisasmTest.rar
Hopefully that doesn't require anything special to run. I'm kind of a newb when it comes to programming things like this. It was made in VB, so I assume it runs with Windows only.
Basically here's what happens. You specify the path of the NES ROM, where in the file you want to start disassembling from, what the PC would be at that location, and you press "Next" to disassemble the next line(s). In a textbox in the bottom left corner, you specify how many lines to disassemble. The Readme explains a little more. Oh, but you have to press "Refresh" if you change the starting PC or the File Pointer (I really apologize for the really sloppy programming on my part).
There are multiple disassembly windows. One puts 6502 code in standard syntax. Just plain old should-work-in-every-assembler output. Then the next outputs all of that with the PC placed on every line (just for information, not directly assembling). Then the next outputs it all as data. The readme describes a little more.
So I'd appreciate it if you guys checked it out, and say whether or not you think it's useful/should be continued with expectations of releasing it. If it's worth while, I'd add support for more assembler specific needs. For example, I'd have it disassemble as lda [$xx],y for NESASM, stx $xxxx.w for WLA-DX, etc. if you tell it which assembler you use (also assuming the program supports it). And also I'd add some obvious stuff (saving features, not stupid bugs, etc.)
EDIT: Also please let me know if for some reason you can't get it to work. I'd like to know so I could take care of it.
I also realized that the best way to go about disassembling a game is not to have a program do it all for you. Really only humans can tell what is data and what is not, so a sort of disassembling in chunks approach I thought would be best. I think that you should go through and logically determine what is data and what is code. For example, I noticed there was a table in CV where the index was ANDed by $0F before used. This leads me to believe that the table is 16 bytes long, and none of it is code. A good disassembler (in my opinion) can help you in this process, not necessarily do it for you though.
So here's a quick kind of buggy version of what I'm going for:
http://www.freewebs.com/the_bott/DisasmTest.rar
Hopefully that doesn't require anything special to run. I'm kind of a newb when it comes to programming things like this. It was made in VB, so I assume it runs with Windows only.
Basically here's what happens. You specify the path of the NES ROM, where in the file you want to start disassembling from, what the PC would be at that location, and you press "Next" to disassemble the next line(s). In a textbox in the bottom left corner, you specify how many lines to disassemble. The Readme explains a little more. Oh, but you have to press "Refresh" if you change the starting PC or the File Pointer (I really apologize for the really sloppy programming on my part).
There are multiple disassembly windows. One puts 6502 code in standard syntax. Just plain old should-work-in-every-assembler output. Then the next outputs all of that with the PC placed on every line (just for information, not directly assembling). Then the next outputs it all as data. The readme describes a little more.
So I'd appreciate it if you guys checked it out, and say whether or not you think it's useful/should be continued with expectations of releasing it. If it's worth while, I'd add support for more assembler specific needs. For example, I'd have it disassemble as lda [$xx],y for NESASM, stx $xxxx.w for WLA-DX, etc. if you tell it which assembler you use (also assuming the program supports it). And also I'd add some obvious stuff (saving features, not stupid bugs, etc.)
EDIT: Also please let me know if for some reason you can't get it to work. I'd like to know so I could take care of it.