diff options
Diffstat (limited to 'tools/sort_sym.py')
-rw-r--r-- | tools/sort_sym.py | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/tools/sort_sym.py b/tools/sort_sym.py deleted file mode 100644 index f4674e8..0000000 --- a/tools/sort_sym.py +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/python3.6 - -import argparse -from functools import total_ordering - - -@total_ordering -class GBSection: - ROM0 = 0 - ROMX = 1 - VRAM = 2 - SRAM = 3 - WRAM0 = 4 - WRAMX = 5 - - __thresholds__ = (0x4000, 0x8000, 0xa000, 0xc000, 0xd000, 0xe000) - - def __init__(self, addr): - self.ident = sum(x <= addr for x in self.__thresholds__) - - @property - def start(self): - if self.ident == self.ROM0: - return 0 - return self.__thresholds__[self.ident - 1] - - @property - def end(self): - return self.__thresholds__[self.ident] - - def __eq__(self, other): - return self.ident == other.ident - - def __lt__(self, other): - return self.ident < other.ident - - -def read_sym(filename): - with open(filename) as fp: - for line in fp: - try: - line, *rest = line.split(';') - pointer, name = line.split() - bank, addr = (int(part, 16) for part in pointer.split(':')) - yield bank, addr, name - except ValueError: - continue - - -def sort_key(args): - bank, addr, name = args - return GBSection(addr), bank, addr, name - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('symfile') - args = parser.parse_args() - - symbols = list(read_sym(args.symfile)) - symbols.sort(key=sort_key) - with open(args.symfile, 'w') as fp: - for bank, addr, name in symbols: - print(f'{bank:02X}:{addr:04X}', name, file=fp) - - -if __name__ == '__main__': - main() |