pokecrystal-board/extras/pointers.py

26 lines
740 B
Python
Raw Normal View History

# -*- coding: utf-8 -*-
"""
Various functions related to pointer and address math. Mostly to avoid
depedency loops.
"""
2012-06-19 23:42:33 -07:00
def calculate_bank(address):
"""you are too lazy to divide on your own?"""
if type(address) == str:
2012-06-19 23:42:33 -07:00
address = int(address, 16)
#if 0x4000 <= address <= 0x7FFF:
# raise Exception, "bank 1 does not exist"
return int(address) / 0x4000
def calculate_pointer(short_pointer, bank=None):
"""calculates the full address given a 4-byte pointer and bank byte"""
short_pointer = int(short_pointer)
if 0x4000 <= short_pointer <= 0x7fff:
short_pointer -= 0x4000
bank = int(bank)
else:
bank = 0
pointer = short_pointer + (bank * 0x4000)
return pointer