enum : unsigned { OPTYPE_DP = 0, //dp OPTYPE_DPX, //dp,x OPTYPE_DPY, //dp,y OPTYPE_IDP, //(dp) OPTYPE_IDPX, //(dp,x) OPTYPE_IDPY, //(dp),y OPTYPE_ILDP, //[dp] OPTYPE_ILDPY, //[dp],y OPTYPE_ADDR, //addr OPTYPE_ADDRX, //addr,x OPTYPE_ADDRY, //addr,y OPTYPE_IADDRX, //(addr,x) OPTYPE_ILADDR, //[addr] OPTYPE_LONG, //long OPTYPE_LONGX, //long, x OPTYPE_SR, //sr,s OPTYPE_ISRY, //(sr,s),y OPTYPE_ADDR_PC, //pbr:addr OPTYPE_IADDR_PC, //pbr:(addr) OPTYPE_RELB, //relb OPTYPE_RELW, //relw }; void disassemble_opcode(char* output, uint32 addr); uint8 dreadb(uint32 addr); uint16 dreadw(uint32 addr); uint32 dreadl(uint32 addr); uint32 decode(uint8 offset_type, uint32 addr);