Newest Hacks

Luigi's True Voice Tails in Super Mario Bros. Ms. Pac-Man 32 Maze Crush! Darkwing Duck Sound Test

Newest Translations

Final Fantasy III Ganbare Goemon 2: Kiteretsu Shougun Magginesu The King of Fighters R-1 Digital Monster Card Game Ver. WonderSwan Color

Newest Utilities

DashEditor - Mega Man Legends Translation Toolkit Terranigma Data Reader Yoshi's Island randomizer Zanac Graphics Utilities

Newest Reviews

Castlevania: Dawn of Dignity (New Portraits Hack) Project ZM Castlevania: Dawn of Dignity (New Portraits Hack) Elibean Nights

Newest Homebrew

fds_keyboard_test fds_joypad_test Escape Obliterizer Deluxe John 3:16

Featured Hack Images

Super Mario Unlimited Rockman 3 - Alpha Ike Ike! Nekketsu Hockey Bu Super hack Metal Sonic Hyperdrive

Featured Translation Images

Romancing SaGa 2 Golden Axe Warrior King of Kings Disney's Aladdin

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!