Newest Hacks

NES Dream Team Soft Reset Gargoyle's Quest - Text Restoration Last Bible III Estoma Hack

Newest Translations

Sqoon Majin Tensei Castlevania Tombs & Treasure

Newest Utilities

Mario Party Tools ECCRegen Road Rash 1 Bike Editor Gamecube Region Converter

Newest Reviews

Ganbare Goemon: Uchuu Kaizoku Akogingu Batman: The Junkyard Challenge Final Fantasy VI - SG-III Super Orb Bros.

Featured Hack Images

Sonic in Chaotix Captain Tsubasa 2007 Super Awesome World FF6A (E) Woolsey Slattery Compromise Patch

Featured Translation Images

Otomedius Gyakuten Saiban Lei Dian Huang: Bi Ka Qiu Chuan Shuo Castle of Illusion: Starring Mickey Mouse

Recent Updates

NESMacDASM

Assembly Tools

Description:

Well-crafted, ready-to-run tools for the PPC Mac are increasingly difficult to find. But this command-line disassembler, NESMacDASM, runs out-of-the-box for PPC Mac users, and it features a function-identification ability not seen in other disassemblers. It was tested on OS X 10.4 “Tiger” on a G4 eMac. Source code is included. An example of its work is also included in the .zip file so that non-PPC-Mac users may see what it is capable of without needing a PPC Mac themselves.

FEATURES

NESMacDASM can identify where functions begin and end with about 95% accuracy. It will mark these boundaries with a blank line. Opcodes that usually end a function – RTS, JMP, RTI – but do not in a particular instance are instead marked with a brief comment. For an example, see the two RTS opcodes in the function at $C461.

Occasionally, a function will be given an auto-generated name if the disassembler is fairly sure about it. Some “functions” however are reached only via a JMP from a zero-page function, which can only be checked for at runtime. Likewise jump tables: the included example has a jump table at $C3A8, clearly showing (to the human observer) that $C3BF, $C334, etc., are “function” entry points, but NESMacDASM can’t (yet) understand this.

Embedded data frequently cause a opcode/operand misalignment, but NESMacDASM frequently can correct for it. An example of correction can be seen at $C770, wherein the first opcode of the function was actually already eaten by the preceding ORA, which was actually data, not code.

False positives, though rare, do occasionally occur. An example of such a false function start point is at $C804 – the function actually began many bytes back at $C786, and this new entry point is spurious. This happens infrequently, but please remain aware of it.

NESMacDASM also has some auto-commenting features seen in other disassemblers, such as when we access hardware I/O ports or save-RAM. Nothing special there. The three interrupt vectors are listed in the output file’s header for convenience.

I hope you find NESMacDASM useful. Thoughts are welcome.

  • Rook

Links:

User Review Information
No User Reviews!