Newest Hacks

Adventure Island:  Liquid mod Rockman 5 - Dash Sprite Rockman 5 - Speed Patch Super Game Boy Color Hack

Newest Translations

Need for Speed: Underground Adventure Island II: Aliens in Paradise Tomato Adventure Battletoads

Newest Utilities

Megadrive Megapack TRaCER Dune ROM Editor TingleTrans

Newest Reviews

Tomato Adventure Mario Forever: SMW Edition Kim Possible 3 Team Possible Mario Kart 64 - Stomper Mod

Newest Homebrew

Varooom 3D Lumberjack Rolling Pumpkins DooM Raycaster Engine (V1.1) (GBA)

Featured Hack Images

Mario Runner Brandish Name Restore Final Fantasy II US Save Spot Mod Supreme Mario Bros.

Featured Translation Images

Golden Axe III FEDA: The Emblem of Justice Dragon Ball Z: Hyper Dimension Dragon Ball Z: Sagas

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!