From c57e0f0706608a4acba89182945bec975a43acfd Mon Sep 17 00:00:00 2001 From: "U-Fish-PC\\Daniel" Date: Sun, 13 Oct 2013 10:50:09 -0400 Subject: Add pokered music tools --- pokemontools/redsfxheaders.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 pokemontools/redsfxheaders.py (limited to 'pokemontools/redsfxheaders.py') diff --git a/pokemontools/redsfxheaders.py b/pokemontools/redsfxheaders.py new file mode 100755 index 0000000..7b04701 --- /dev/null +++ b/pokemontools/redsfxheaders.py @@ -0,0 +1,43 @@ +import config +config = config.Config() +rom = bytearray(open(config.rom_path, "r").read()) + +headerlist = ( + ["sfxheaders02.asm", 0x8003, 0x822e], + ["sfxheaders08.asm", 0x20003, 0x202be], + ["sfxheaders1f.asm", 0x7c003, 0x7c249], + ) + +numberofchannels = { + 0x0: 1, + 0x4: 2, + 0x8: 3, + 0xC: 4, + } + +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 = numberofchannels[byte >> 4] + 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 -- cgit v1.2.3 From 71204998edd39b6bdb531b66294ede643dd452fe Mon Sep 17 00:00:00 2001 From: "U-Fish-PC\\Daniel" Date: Fri, 1 Nov 2013 10:25:40 -0400 Subject: Update red music tools --- pokemontools/redsfxheaders.py | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) (limited to 'pokemontools/redsfxheaders.py') diff --git a/pokemontools/redsfxheaders.py b/pokemontools/redsfxheaders.py index 7b04701..c854c20 100755 --- a/pokemontools/redsfxheaders.py +++ b/pokemontools/redsfxheaders.py @@ -1,5 +1,5 @@ -import config -config = config.Config() +import configuration +config = configuration.Config() rom = bytearray(open(config.rom_path, "r").read()) headerlist = ( @@ -8,13 +8,6 @@ headerlist = ( ["sfxheaders1f.asm", 0x7c003, 0x7c249], ) -numberofchannels = { - 0x0: 1, - 0x4: 2, - 0x8: 3, - 0xC: 4, - } - def printsfxheaders(filename, address, end): file = open(filename, 'w') bank = address / 0x4000 @@ -24,7 +17,7 @@ def printsfxheaders(filename, address, end): file.write("SFX_Headers_{:02x}:\n".format(bank)) file.write("\tdb $ff, $ff, $ff ; padding\n") while address != end: - left = numberofchannels[byte >> 4] + 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] -- cgit v1.2.3