ref: ad0f365a372d227cf050b2c1016bda5f9b9f80c6
parent: 25a5a9cef4b2490142c1646d86ccefe5de3f2b44
author: Bryan Bishop <[email protected]>
date: Sun Mar 11 23:01:38 EDT 2012
fix calculate_pointer
--- a/extras/crystal.py
+++ b/extras/crystal.py
@@ -363,11 +363,15 @@
if type(address) == str:
address = int(address, 16)
return int(address) / 0x4000
-def calculate_pointer(short_pointer, bank):
+def calculate_pointer(short_pointer, bank=None):
"""calculates the full address given a 4-byte pointer and bank byte"""
short_pointer = int(short_pointer)
- bank = int(bank)
- pointer = short_pointer - 0x4000 + (bank * 0x4000)
+ if short_pointer > 0x4000:
+ short_pointer -= 0x4000
+ bank = int(bank)
+ else:
+ bank = 0
+ pointer = short_pointer + (bank * 0x4000)
return pointer
def calculate_pointer_from_bytes_at(address, bank=False):
"""calculates a pointer from 2 bytes at a location