import argparse import sys import py_nand_ass.disas as dass # pyright: ignore[reportImplicitRelativeImport] def main(): arg_parser = argparse.ArgumentParser( prog="disas_main.py", description="Nandgame disassembler" ) g = arg_parser.add_mutually_exclusive_group() g.add_argument("--le", action="store_true") g.add_argument("--be", action="store_true") arg_parser.add_argument("filename") args = arg_parser.parse_args() endianness = "little" if args.be: endianness = "big" filename = args.filename try: with open(filename, "rb") as f: while True: insb = f.read(2) if not insb: break ins = int.from_bytes(insb, byteorder=endianness) if endianness in ["big", "be"]: raw_ins = f"{insb[0]:02x} {insb[1]:02x}" elif endianness in ["little", "le"]: raw_ins = f"{insb[1]:02x} {insb[0]:02x}" else: raw_ins = f"?? ??" decoded_ins = dass.print_decoded(ins, False) decoded_ins2 = dass.print_decoded(ins, True) if decoded_ins == decoded_ins2: line = f"\t{raw_ins}\t{decoded_ins}" else: line = f"\t{raw_ins}\t{decoded_ins2:<25}; {decoded_ins}" print(line) except FileNotFoundError: print(f"File {filename} not found.") sys.exit(1) # head, tail... except BrokenPipeError: sys.exit(0) if __name__ == "__main__": main()