diff options
Diffstat (limited to 'pokemontools/redsfxdisasm.py')
-rwxr-xr-x | pokemontools/redsfxdisasm.py | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/pokemontools/redsfxdisasm.py b/pokemontools/redsfxdisasm.py index 63b8dd1..10e265d 100755 --- a/pokemontools/redsfxdisasm.py +++ b/pokemontools/redsfxdisasm.py @@ -1,6 +1,4 @@ -from __future__ import print_function -from __future__ import absolute_import -from . import configuration +import configuration config = configuration.Config() rom = bytearray(open(config.rom_path, "r").read()) @@ -369,7 +367,6 @@ music_notes = { sfxnum = 0 for bank in banks: - print(bank) header = bank * 0x4000 + 3 for sfx in range(1,banks[bank]): sfxname = sfx_names[sfxnum] @@ -388,19 +385,23 @@ for bank in banks: byte = rom[address] if byte == 0xf8 or (bank == 2 and sfx == 0x5e): executemusic = True else: executemusic = False - output += "{}_Ch{}: ; {:02x} ({:0x}:{:02x})\n".format(sfxname, curchannel, address, bank, address % 0x4000 + 0x4000) + output += "{}_Ch{}:\n".format(sfxname, channelnumber) while 1: if address == 0x2062a or address == 0x2063d or address == 0x20930: output += "\n{}_branch_{:02x}:\n".format(sfxname, address) if byte == 0x10 and not executemusic: - output += "\tunknownsfx0x{:02x} {}".format(byte, rom[address + 1]) + param = rom[address + 1] + if param % 0x10 > 7: + output += "\tpitchenvelope {}, {}".format(param >> 4, (param & 0b0111) * -1) + else: + output += "\tpitchenvelope {}, {}".format(param >> 4, param % 0x10) command_length = 2 elif byte < 0x30 and not executemusic: if channelnumber == 7: - output += "\tunknownnoise0x20 {}, {}, {}".format(byte % 0x10, rom[address + 1], rom[address + 2]) + output += "\tnoisenote {}, {}, {}".format(byte % 0x10, rom[address + 1], rom[address + 2]) command_length = 3 else: - output += "\tunknownsfx0x20 {}, {}, {}, {}".format(byte % 0x10, rom[address + 1], rom[address + 2], rom[address + 3]) + output += "\tsquarenote {}, {}, {}, {}".format(byte % 0x10, rom[address + 1], rom[address + 2], rom[address + 3]) command_length = 4 elif byte < 0xc0: output += "\t{} {}".format(music_notes[byte >> 4], byte % 0x10 + 1) @@ -436,7 +437,7 @@ for bank in banks: output += " {}".format(param * 0x100 + rom[address + 1]) else: param += rom[address + 1] * 0x100 - 0x4000 + (bank * 0x4000) - if param == startingaddress: output += " {}_Ch{}".format(sfxname, curchannel) + if param == startingaddress: output += " {}_Ch{}".format(sfxname, channelnumber) else: output += " {}_branch_{:02x}".format(sfxname, param) params += 1 if params != len(music_commands[byte]) - 1: output += "," @@ -453,4 +454,4 @@ for bank in banks: output += "\n\n" startingaddress = address curchannel += 1 - sfxnum += 1
\ No newline at end of file + sfxnum += 1 |