mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-01-10 02:54:03 +13:00
updates to asm injection code
hg-commit-id: 6748c9773b32
This commit is contained in:
parent
52e723ae65
commit
c7331ebd19
|
|
@ -234,6 +234,7 @@ def apply_diff(diff):
|
||||||
subprocess.check_call("cd ../; make clean; LC_CTYPE=UTF-8 make", shell=True)
|
subprocess.check_call("cd ../; make clean; LC_CTYPE=UTF-8 make", shell=True)
|
||||||
except Exception, exc:
|
except Exception, exc:
|
||||||
os.system("mv ../pokered1.asm ../pokered.asm")
|
os.system("mv ../pokered1.asm ../pokered.asm")
|
||||||
|
return False
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
#load map headers
|
#load map headers
|
||||||
|
|
|
||||||
|
|
@ -538,8 +538,6 @@ end_08_scripts_with = [
|
||||||
]
|
]
|
||||||
relative_jumps = [0x38, 0x30, 0x20, 0x28, 0x18]
|
relative_jumps = [0x38, 0x30, 0x20, 0x28, 0x18]
|
||||||
|
|
||||||
byte_labels = {}
|
|
||||||
|
|
||||||
def random_asm_label():
|
def random_asm_label():
|
||||||
return ".ASM_" + random_hash()
|
return ".ASM_" + random_hash()
|
||||||
|
|
||||||
|
|
@ -558,6 +556,8 @@ def output_bank_opcodes(original_offset, max_byte_count=0x4000):
|
||||||
|
|
||||||
#we don't actually have an end address, but we'll just say $4000
|
#we don't actually have an end address, but we'll just say $4000
|
||||||
end_address = original_offset + max_byte_count
|
end_address = original_offset + max_byte_count
|
||||||
|
|
||||||
|
byte_labels = {}
|
||||||
|
|
||||||
output = ""
|
output = ""
|
||||||
keep_reading = True
|
keep_reading = True
|
||||||
|
|
@ -576,7 +576,7 @@ def output_bank_opcodes(original_offset, max_byte_count=0x4000):
|
||||||
line_label = random_asm_label()
|
line_label = random_asm_label()
|
||||||
byte_labels[offset] = {}
|
byte_labels[offset] = {}
|
||||||
byte_labels[offset]["name"] = line_label
|
byte_labels[offset]["name"] = line_label
|
||||||
byte_labels[offset]["usage"] = 1
|
byte_labels[offset]["usage"] = 0
|
||||||
output += line_label + " ; " + hex(offset) + "\n"
|
output += line_label + " ; " + hex(offset) + "\n"
|
||||||
|
|
||||||
#find out if there's a two byte key like this
|
#find out if there's a two byte key like this
|
||||||
|
|
@ -616,7 +616,7 @@ def output_bank_opcodes(original_offset, max_byte_count=0x4000):
|
||||||
#generate a label for the byte we're jumping to
|
#generate a label for the byte we're jumping to
|
||||||
target_address = offset + 2 + ord(rom[offset + 1])
|
target_address = offset + 2 + ord(rom[offset + 1])
|
||||||
if target_address in byte_labels.keys():
|
if target_address in byte_labels.keys():
|
||||||
byte_labels[target_address]["usage"] += 1
|
byte_labels[target_address]["usage"] = 1 + byte_labels[target_address]["usage"]
|
||||||
line_label2 = byte_labels[target_address]["name"]
|
line_label2 = byte_labels[target_address]["name"]
|
||||||
else:
|
else:
|
||||||
line_label2 = random_asm_label()
|
line_label2 = random_asm_label()
|
||||||
|
|
@ -634,6 +634,7 @@ def output_bank_opcodes(original_offset, max_byte_count=0x4000):
|
||||||
|
|
||||||
current_byte_number += 1
|
current_byte_number += 1
|
||||||
offset += 1
|
offset += 1
|
||||||
|
insertion = ""
|
||||||
|
|
||||||
current_byte_number += 1
|
current_byte_number += 1
|
||||||
offset += 1
|
offset += 1
|
||||||
|
|
@ -685,10 +686,11 @@ def output_bank_opcodes(original_offset, max_byte_count=0x4000):
|
||||||
#current_byte_number += 1
|
#current_byte_number += 1
|
||||||
|
|
||||||
#clean up unused labels
|
#clean up unused labels
|
||||||
|
print "byte_labels is: " + str(byte_labels)
|
||||||
for label_line in byte_labels.keys():
|
for label_line in byte_labels.keys():
|
||||||
address = label_line
|
address = label_line
|
||||||
label_line = byte_labels[label_line]
|
label_line = byte_labels[label_line]
|
||||||
if label_line["usage"] == 1:
|
if label_line["usage"] == 0:
|
||||||
output = output.replace(label_line["name"] + " ; " + hex(address) + "\n", "")
|
output = output.replace(label_line["name"] + " ; " + hex(address) + "\n", "")
|
||||||
|
|
||||||
return (output.lower(), offset)
|
return (output.lower(), offset)
|
||||||
|
|
@ -710,4 +712,4 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
#0x18f96 is PalletTownText1
|
#0x18f96 is PalletTownText1
|
||||||
#0x19B5D is BluesHouseText1
|
#0x19B5D is BluesHouseText1
|
||||||
print output_bank_opcodes(0x19B5D + 1)
|
print output_bank_opcodes(0x1e374 + 1)
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import os, sys
|
||||||
import subprocess
|
import subprocess
|
||||||
spacing = " "
|
spacing = " "
|
||||||
tx_fars = None
|
tx_fars = None
|
||||||
|
failed_attempts = {}
|
||||||
|
|
||||||
def find_tx_far_entry(map_id, text_id):
|
def find_tx_far_entry(map_id, text_id):
|
||||||
for tx_far_line in tx_fars:
|
for tx_far_line in tx_fars:
|
||||||
|
|
@ -294,7 +295,7 @@ def insert_08_asm(map_id, text_id):
|
||||||
return
|
return
|
||||||
|
|
||||||
#also do a name check
|
#also do a name check
|
||||||
if 1 < ("\n".join(analyze_incbins.asm)).count(label + ":"):
|
if 1 <= ("\n".join(analyze_incbins.asm)).count("\n" + label + ":"):
|
||||||
print "skipping text label for a $08 on map_id=" + str(map_id) + " text_id=" + str(text_id) + " because the label is already taken (" + label + ":)"
|
print "skipping text label for a $08 on map_id=" + str(map_id) + " text_id=" + str(text_id) + " because the label is already taken (" + label + ":)"
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
@ -317,7 +318,10 @@ def insert_08_asm(map_id, text_id):
|
||||||
diff = generate_diff_insert(line_number, newlines)
|
diff = generate_diff_insert(line_number, newlines)
|
||||||
print "working on map_id=" + str(map_id) + " text_id=" + str(text_id)
|
print "working on map_id=" + str(map_id) + " text_id=" + str(text_id)
|
||||||
print diff
|
print diff
|
||||||
apply_diff(diff)
|
result = apply_diff(diff)
|
||||||
|
|
||||||
|
if result == False:
|
||||||
|
failed_attempts[len(failed_attempts.keys())] = {"map_id": map_id, "text_id": text_id}
|
||||||
|
|
||||||
def find_all_08s():
|
def find_all_08s():
|
||||||
all_08s = []
|
all_08s = []
|
||||||
|
|
@ -333,6 +337,7 @@ def insert_all_08s():
|
||||||
all_08s = find_all_08s()
|
all_08s = find_all_08s()
|
||||||
for the_08_line in all_08s:
|
for the_08_line in all_08s:
|
||||||
map_id = the_08_line[0]
|
map_id = the_08_line[0]
|
||||||
|
if map_id <= 86: continue #speed things up
|
||||||
text_id = the_08_line[1]
|
text_id = the_08_line[1]
|
||||||
|
|
||||||
print "processing map_id=" + str(map_id) + " text_id=" + str(text_id)
|
print "processing map_id=" + str(map_id) + " text_id=" + str(text_id)
|
||||||
|
|
@ -386,5 +391,8 @@ if __name__ == "__main__":
|
||||||
#insert_text_label_tx_far(240, 1)
|
#insert_text_label_tx_far(240, 1)
|
||||||
#insert_all_text_labels()
|
#insert_all_text_labels()
|
||||||
|
|
||||||
#insert_08_asm(1, 2)
|
#insert_08_asm(83, 1)
|
||||||
insert_all_08s()
|
insert_all_08s()
|
||||||
|
|
||||||
|
print "-- FAILED ATTEMPTS --"
|
||||||
|
print str(failed_attempts)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue