Because of the possibility to jump to and call the HL register, no. You could come somewhat close if a full emulator was implemented, but even then, there are procedures that depend on memory address values, which determine the value of HL. For example, the scripting system in the Oracles series. The RST 00 procedure uses a pointer table that's specified right after the command is set to be executed. There is no way to emulate every value without some sort of user input. However, this doesn't mean you can't disassemble certain procedures. For example, the procedure shown in the screenshot was the start of the graphics decompression procedure in Oracle of Ages and all I did was have it trace starting at 69C.
Indeed it has. I don't mind, but I'll have you know the GUI stuff isn't pretty. Here are the assembler and disassembler classes and the ugly code used to assemble (includes the dynamic labeling).
Code used to do the assembling
Not the best, but it works. I definitely could've cleaned it up and optimized it, but I didn't plan on taking the program this far.