diff options
author | Bryan Bishop <kanzure@gmail.com> | 2013-11-01 07:48:48 -0700 |
---|---|---|
committer | Bryan Bishop <kanzure@gmail.com> | 2013-11-01 07:48:48 -0700 |
commit | dafb5518df768f93ac94c59d4bf5981e95f7aba0 (patch) | |
tree | e24c31270762b331830e851fc306b45e46d439ed /pokemontools/redsfxheaders.py | |
parent | 1089cf99d09ffe057660d8022fe8f82da1463a38 (diff) | |
parent | 71204998edd39b6bdb531b66294ede643dd452fe (diff) |
Merge pull request #44 from dannye/master
Red Music Tools
Diffstat (limited to 'pokemontools/redsfxheaders.py')
-rwxr-xr-x | pokemontools/redsfxheaders.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/pokemontools/redsfxheaders.py b/pokemontools/redsfxheaders.py new file mode 100755 index 0000000..c854c20 --- /dev/null +++ b/pokemontools/redsfxheaders.py @@ -0,0 +1,36 @@ +import configuration
+config = configuration.Config()
+rom = bytearray(open(config.rom_path, "r").read())
+
+headerlist = (
+ ["sfxheaders02.asm", 0x8003, 0x822e],
+ ["sfxheaders08.asm", 0x20003, 0x202be],
+ ["sfxheaders1f.asm", 0x7c003, 0x7c249],
+ )
+
+def printsfxheaders(filename, address, end):
+ file = open(filename, 'w')
+ bank = address / 0x4000
+ byte = rom[address]
+ sfx = 1
+ channel = 1
+ file.write("SFX_Headers_{:02x}:\n".format(bank))
+ file.write("\tdb $ff, $ff, $ff ; padding\n")
+ while address != end:
+ left = (byte >> 6) + 1
+ file.write("\nSFX_{:02x}_{:02x}: ; {:02x} ({:0x}:{:02x})\n".format(bank, sfx, address, bank, address % 0x4000 + 0x4000))
+ while left != 0:
+ pointer = rom[address + 2] * 0x100 + rom[address + 1]
+ if byte >> 4 != 0: file.write(" db ( ${:0x}0 | CH{:0x} )\n".format(byte >> 4, byte % 0x10))
+ else: file.write("\tdb CH{:0x}\n".format(byte))
+ file.write("\tdw SFX_{:02x}_{:02x}_Ch{}\n".format(bank, sfx, channel))
+ address += 3
+ byte = rom[address]
+ channel += 1
+ left -= 1
+ channel = 1
+ sfx += 1
+ file.write("\n; {}".format(hex(address)))
+
+for header in headerlist:
+ printsfxheaders(header[0], header[1], header[2])
\ No newline at end of file |