summaryrefslogtreecommitdiff
path: root/extras/labels.py
diff options
context:
space:
mode:
Diffstat (limited to 'extras/labels.py')
m---------extras0
-rwxr-xr-xextras/labels.py81
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
-