diff options
Diffstat (limited to 'extras/labels.py')
m--------- | extras | 0 | ||||
-rwxr-xr-x | extras/labels.py | 81 |
2 files changed, 0 insertions, 81 deletions
diff --git a/extras b/extras new file mode 160000 +Subproject dfe657177453423987544798d9763b2938874b4 diff --git a/extras/labels.py b/extras/labels.py deleted file mode 100755 index bbd0079..0000000 --- a/extras/labels.py +++ /dev/null @@ -1,81 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Various label/line-related functions. -""" - -import os - -class Labels(object): - """ - Store all labels. - """ - - def __init__(self, config, filename="tcg.map"): - """ - Setup the instance. - """ - self.config = config - self.filename = filename - self.path = os.path.join(self.config.path, self.filename) - - def initialize(self): - """ - Handle anything requiring file-loading and such. - """ - # Look for a mapfile if it's not given - if not os.path.exists(self.path): - self.filename = find_mapfile_in_dir(self.config.path) - if self.filename == None: - raise Exception, "Couldn't find any mapfiles. Run rgblink -m to create a mapfile." - self.path = os.path.join(self.config.path, self.filename) - - self.labels = read_mapfile(self.path) - -def find_mapfile_in_dir(path): - for filename in os.listdir(path): - if os.path.splitext(filename)[1] == '.map': - return filename - return None - -def read_mapfile(filename='tcg.map'): - """ - Scrape label addresses from an rgbds mapfile. - """ - - labels = [] - - with open(filename, 'r') as mapfile: - lines = mapfile.readlines() - - for line in lines: - if line[0].strip(): # section type def - section_type = line.split(' ')[0] - if section_type == 'Bank': # ROM - cur_bank = int(line.split(' ')[1].split(':')[0][1:]) - elif section_type in ['WRAM0', 'HRAM']: - cur_bank = 0 - elif section_type in ['WRAM, VRAM']: - cur_bank = int(line.split(' ')[2].split(':')[0][1:]) - cur_bank = int(line.split(' ')[2].split(':')[0][1:]) - - # label definition - elif '=' in line: - address, label = line.split('=') - address = int(address.lstrip().replace('$', '0x'), 16) - label = label.strip() - - bank = cur_bank - offset = address - if address < 0x8000 and bank: # ROM - offset += (bank - 1) * 0x4000 - - labels += [{ - 'label': label, - 'bank': bank, - 'address': offset, - 'offset': offset, - 'local_address': address, - }] - - return labels - |