summaryrefslogtreecommitdiff
path: root/wram.py
diff options
context:
space:
mode:
authorBryan Bishop <kanzure@gmail.com>2013-08-03 12:25:02 -0500
committerBryan Bishop <kanzure@gmail.com>2013-08-03 12:25:02 -0500
commit7ee0269e23f51e5ac4d089261ca1082ed534685c (patch)
treef9e1c093292d8b26b3afa449e470eb087f8dde74 /wram.py
parent6824783300177aa03cf33bfd259d51f44da4a909 (diff)
normalize tabs to whitespace in wram.py
Diffstat (limited to 'wram.py')
-rw-r--r--wram.py112
1 files changed, 56 insertions, 56 deletions
diff --git a/wram.py b/wram.py
index 7a6dafa..10e96a6 100644
--- a/wram.py
+++ b/wram.py
@@ -7,74 +7,74 @@ path = os.path.dirname(os.path.abspath(__file__))
def read_bss_sections(bss):
- sections = []
- section = {}
- address = None
- if type(bss) is not list: bss = bss.split('\n')
- for line in bss:
- line = line.lstrip()
- if 'SECTION' in line:
- if section: sections.append(section) # last section
-
- address = eval(line[line.find('[')+1:line.find(']')].replace('$','0x'))
- section = {
- 'name': line.split('"')[1],
- #'type': line.split(',')[1].split('[')[0].strip(),
- 'start': address,
- 'labels': [],
- }
-
- elif ':' in line:
- # rgbds allows labels without :, but prefer convention
- label = line[:line.find(':')]
- if ';' not in label:
- section['labels'] += [{
- 'label': label,
- 'address': address,
- 'length': 0,
- }]
-
- elif line[:3] == 'ds ':
- length = eval(line[3:line.find(';')].replace('$','0x'))
- address += length
- # adjacent labels use the same space
- for label in section['labels'][::-1]:
- if label['length'] == 0:
- label['length'] = length
- else:
- break
-
- elif 'EQU' in line:
- # some space is defined using constants
- name, value = line.split('EQU')
- name, value = name.strip(), value.strip().replace('$','0x').replace('%','0b')
- globals()[name] = eval(value)
-
- sections.append(section)
- return sections
+ sections = []
+ section = {}
+ address = None
+ if type(bss) is not list: bss = bss.split('\n')
+ for line in bss:
+ line = line.lstrip()
+ if 'SECTION' in line:
+ if section: sections.append(section) # last section
+
+ address = eval(line[line.find('[')+1:line.find(']')].replace('$','0x'))
+ section = {
+ 'name': line.split('"')[1],
+ #'type': line.split(',')[1].split('[')[0].strip(),
+ 'start': address,
+ 'labels': [],
+ }
+
+ elif ':' in line:
+ # rgbds allows labels without :, but prefer convention
+ label = line[:line.find(':')]
+ if ';' not in label:
+ section['labels'] += [{
+ 'label': label,
+ 'address': address,
+ 'length': 0,
+ }]
+
+ elif line[:3] == 'ds ':
+ length = eval(line[3:line.find(';')].replace('$','0x'))
+ address += length
+ # adjacent labels use the same space
+ for label in section['labels'][::-1]:
+ if label['length'] == 0:
+ label['length'] = length
+ else:
+ break
+
+ elif 'EQU' in line:
+ # some space is defined using constants
+ name, value = line.split('EQU')
+ name, value = name.strip(), value.strip().replace('$','0x').replace('%','0b')
+ globals()[name] = eval(value)
+
+ sections.append(section)
+ return sections
wram_sections = read_bss_sections(open(os.path.join(os.path.dirname(path), 'wram.asm'), 'r').readlines())
def make_wram_labels():
- wram_labels = {}
- for section in wram_sections:
- for label in section['labels']:
- if label['address'] not in wram_labels.keys():
- wram_labels[label['address']] = []
- wram_labels[label['address']] += [label['label']]
- return wram_labels
+ wram_labels = {}
+ for section in wram_sections:
+ for label in section['labels']:
+ if label['address'] not in wram_labels.keys():
+ wram_labels[label['address']] = []
+ wram_labels[label['address']] += [label['label']]
+ return wram_labels
wram_labels = make_wram_labels()
def constants_to_dict(constants):
- return dict((eval(constant[constant.find('EQU')+3:constant.find(';')].replace('$','0x')), constant[:constant.find('EQU')].strip()) for constant in constants)
+ return dict((eval(constant[constant.find('EQU')+3:constant.find(';')].replace('$','0x')), constant[:constant.find('EQU')].strip()) for constant in constants)
def scrape_constants(text):
- if type(text) is not list:
- text = text.split('\n')
- return constants_to_dict([line for line in text if 'EQU' in line[:line.find(';')]])
+ if type(text) is not list:
+ text = text.split('\n')
+ return constants_to_dict([line for line in text if 'EQU' in line[:line.find(';')]])
hram_constants = scrape_constants(open(os.path.join(os.path.dirname(path), 'hram.asm'),'r').readlines())
gbhw_constants = scrape_constants(open(os.path.join(os.path.dirname(path), 'gbhw.asm'),'r').readlines())