Newest Hacks

Latinfix Super Royal Pals. Brightness fix The Rainbow Realms 2

Newest Translations

Lunar Pool Final Fight Adventure Island Gekido Advance - Kintaro's Revenge

Newest Utilities

sf_decrunch Elemental Gearbolt (PSX) BIN repacker Super Gokuden 1 Translation Tools DashEditor - Mega Man Legends Translation Toolkit

Newest Reviews

Pac-Mania arcade style tiles/sprites/colors Adventure Island Layla: The Iris Missions Super Royal Pals.

Newest Homebrew

4 Way Play test ROM Retail Clerk '89 Sega Genesis 6 button controller test Parachute

Featured Hack Images

AST Week 2  fix Rise of Ieyasu 2.0 'Roidz Pokémon Red, Green, and Blue Versions - 100% English (Standard Edition)

Featured Translation Images

Jesus: Kyoufu no Bio Monster Smart Ball Final Fantasy Kyoryu Sentai ZyuRanger

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!