mirror of
https://github.com/pret/pokemon-reverse-engineering-tools.git
synced 2026-04-25 07:36:47 -05:00
366 lines
6.0 KiB
Python
Executable File
366 lines
6.0 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
rom = bytearray(open("baserom.gbc", "rb").read())
|
|
|
|
sfx_names_1 = [
|
|
"Noise_Instrument01_1",
|
|
"Noise_Instrument02_1",
|
|
"Noise_Instrument03_1",
|
|
"Noise_Instrument04_1",
|
|
"Noise_Instrument05_1",
|
|
"Noise_Instrument06_1",
|
|
"Noise_Instrument07_1",
|
|
"Noise_Instrument08_1",
|
|
"Noise_Instrument09_1",
|
|
"Noise_Instrument10_1",
|
|
"Noise_Instrument11_1",
|
|
"Noise_Instrument12_1",
|
|
"Noise_Instrument13_1",
|
|
"Noise_Instrument14_1",
|
|
"Noise_Instrument15_1",
|
|
"Noise_Instrument16_1",
|
|
"Noise_Instrument17_1",
|
|
"Noise_Instrument18_1",
|
|
"Noise_Instrument19_1",
|
|
"Cry00_1",
|
|
"Cry01_1",
|
|
"Cry02_1",
|
|
"Cry03_1",
|
|
"Cry04_1",
|
|
"Cry05_1",
|
|
"Cry06_1",
|
|
"Cry07_1",
|
|
"Cry08_1",
|
|
"Cry09_1",
|
|
"Cry0A_1",
|
|
"Cry0B_1",
|
|
"Cry0C_1",
|
|
"Cry0D_1",
|
|
"Cry0E_1",
|
|
"Cry0F_1",
|
|
"Cry10_1",
|
|
"Cry11_1",
|
|
"Cry12_1",
|
|
"Cry13_1",
|
|
"Cry14_1",
|
|
"Cry15_1",
|
|
"Cry16_1",
|
|
"Cry17_1",
|
|
"Cry18_1",
|
|
"Cry19_1",
|
|
"Cry1A_1",
|
|
"Cry1B_1",
|
|
"Cry1C_1",
|
|
"Cry1D_1",
|
|
"Cry1E_1",
|
|
"Cry1F_1",
|
|
"Cry20_1",
|
|
"Cry21_1",
|
|
"Cry22_1",
|
|
"Cry23_1",
|
|
"Cry24_1",
|
|
"Cry25_1",
|
|
"Get_Item1_1",
|
|
"Get_Item2_1",
|
|
"Tink_1",
|
|
"Heal_HP_1",
|
|
"Heal_Ailment_1",
|
|
"Start_Menu_1",
|
|
"Press_AB_1",
|
|
"Pokedex_Rating_1",
|
|
"Get_Key_Item_1",
|
|
"Poisoned_1",
|
|
"Trade_Machine_1",
|
|
"Turn_On_PC_1",
|
|
"Turn_Off_PC_1",
|
|
"Enter_PC_1",
|
|
"Shrink_1",
|
|
"Switch_1",
|
|
"Healing_Machine_1",
|
|
"Teleport_Exit1_1",
|
|
"Teleport_Enter1_1",
|
|
"Teleport_Exit2_1",
|
|
"Ledge_1",
|
|
"Teleport_Enter2_1",
|
|
"Fly_1",
|
|
"Denied_1",
|
|
"Arrow_Tiles_1",
|
|
"Push_Boulder_1",
|
|
"SS_Anne_Horn_1",
|
|
"Withdraw_Deposit_1",
|
|
"Cut_1",
|
|
"Go_Inside_1",
|
|
"Swap_1",
|
|
"59_1",
|
|
"Purchase_1",
|
|
"Collision_1",
|
|
"Go_Outside_1",
|
|
"Save_1",
|
|
"Pokeflute",
|
|
"Safari_Zone_PA",
|
|
]
|
|
|
|
sfx_names_2 = [
|
|
"Noise_Instrument01_2",
|
|
"Noise_Instrument02_2",
|
|
"Noise_Instrument03_2",
|
|
"Noise_Instrument04_2",
|
|
"Noise_Instrument05_2",
|
|
"Noise_Instrument06_2",
|
|
"Noise_Instrument07_2",
|
|
"Noise_Instrument08_2",
|
|
"Noise_Instrument09_2",
|
|
"Noise_Instrument10_2",
|
|
"Noise_Instrument11_2",
|
|
"Noise_Instrument12_2",
|
|
"Noise_Instrument13_2",
|
|
"Noise_Instrument14_2",
|
|
"Noise_Instrument15_2",
|
|
"Noise_Instrument16_2",
|
|
"Noise_Instrument17_2",
|
|
"Noise_Instrument18_2",
|
|
"Noise_Instrument19_2",
|
|
"Cry00_2",
|
|
"Cry01_2",
|
|
"Cry02_2",
|
|
"Cry03_2",
|
|
"Cry04_2",
|
|
"Cry05_2",
|
|
"Cry06_2",
|
|
"Cry07_2",
|
|
"Cry08_2",
|
|
"Cry09_2",
|
|
"Cry0A_2",
|
|
"Cry0B_2",
|
|
"Cry0C_2",
|
|
"Cry0D_2",
|
|
"Cry0E_2",
|
|
"Cry0F_2",
|
|
"Cry10_2",
|
|
"Cry11_2",
|
|
"Cry12_2",
|
|
"Cry13_2",
|
|
"Cry14_2",
|
|
"Cry15_2",
|
|
"Cry16_2",
|
|
"Cry17_2",
|
|
"Cry18_2",
|
|
"Cry19_2",
|
|
"Cry1A_2",
|
|
"Cry1B_2",
|
|
"Cry1C_2",
|
|
"Cry1D_2",
|
|
"Cry1E_2",
|
|
"Cry1F_2",
|
|
"Cry20_2",
|
|
"Cry21_2",
|
|
"Cry22_2",
|
|
"Cry23_2",
|
|
"Cry24_2",
|
|
"Cry25_2",
|
|
"Level_Up",
|
|
"Get_Item2_2",
|
|
"Tink_2",
|
|
"Heal_HP_2",
|
|
"Heal_Ailment_2",
|
|
"Start_Menu_2",
|
|
"Press_AB_2",
|
|
"Ball_Toss",
|
|
"Ball_Poof",
|
|
"Faint_Thud",
|
|
"Run",
|
|
"Dex_Page_Added",
|
|
"Caught_Mon",
|
|
"Peck",
|
|
"Faint_Fall",
|
|
"Battle_09",
|
|
"Pound",
|
|
"Battle_0B",
|
|
"Battle_0C",
|
|
"Battle_0D",
|
|
"Battle_0E",
|
|
"Battle_0F",
|
|
"Damage",
|
|
"Not_Very_Effective",
|
|
"Battle_12",
|
|
"Battle_13",
|
|
"Battle_14",
|
|
"Vine_Whip",
|
|
"Battle_16",
|
|
"Battle_17",
|
|
"Battle_18",
|
|
"Battle_19",
|
|
"Super_Effective",
|
|
"Battle_1B",
|
|
"Battle_1C",
|
|
"Doubleslap",
|
|
"Battle_1E",
|
|
"Horn_Drill",
|
|
"Battle_20",
|
|
"Battle_21",
|
|
"Battle_22",
|
|
"Battle_23",
|
|
"Battle_24",
|
|
"Battle_25",
|
|
"Battle_26",
|
|
"Battle_27",
|
|
"Battle_28",
|
|
"Battle_29",
|
|
"Battle_2A",
|
|
"Battle_2B",
|
|
"Battle_2C",
|
|
"Psybeam",
|
|
"Battle_2E",
|
|
"Battle_2F",
|
|
"Psychic_M",
|
|
"Battle_31",
|
|
"Battle_32",
|
|
"Battle_33",
|
|
"Battle_34",
|
|
"Battle_35",
|
|
"Battle_36",
|
|
"Silph_Scope",
|
|
]
|
|
|
|
sfx_names_3 = [
|
|
"Noise_Instrument01_3",
|
|
"Noise_Instrument02_3",
|
|
"Noise_Instrument03_3",
|
|
"Noise_Instrument04_3",
|
|
"Noise_Instrument05_3",
|
|
"Noise_Instrument06_3",
|
|
"Noise_Instrument07_3",
|
|
"Noise_Instrument08_3",
|
|
"Noise_Instrument09_3",
|
|
"Noise_Instrument10_3",
|
|
"Noise_Instrument11_3",
|
|
"Noise_Instrument12_3",
|
|
"Noise_Instrument13_3",
|
|
"Noise_Instrument14_3",
|
|
"Noise_Instrument15_3",
|
|
"Noise_Instrument16_3",
|
|
"Noise_Instrument17_3",
|
|
"Noise_Instrument18_3",
|
|
"Noise_Instrument19_3",
|
|
"Cry00_3",
|
|
"Cry01_3",
|
|
"Cry02_3",
|
|
"Cry03_3",
|
|
"Cry04_3",
|
|
"Cry05_3",
|
|
"Cry06_3",
|
|
"Cry07_3",
|
|
"Cry08_3",
|
|
"Cry09_3",
|
|
"Cry0A_3",
|
|
"Cry0B_3",
|
|
"Cry0C_3",
|
|
"Cry0D_3",
|
|
"Cry0E_3",
|
|
"Cry0F_3",
|
|
"Cry10_3",
|
|
"Cry11_3",
|
|
"Cry12_3",
|
|
"Cry13_3",
|
|
"Cry14_3",
|
|
"Cry15_3",
|
|
"Cry16_3",
|
|
"Cry17_3",
|
|
"Cry18_3",
|
|
"Cry19_3",
|
|
"Cry1A_3",
|
|
"Cry1B_3",
|
|
"Cry1C_3",
|
|
"Cry1D_3",
|
|
"Cry1E_3",
|
|
"Cry1F_3",
|
|
"Cry20_3",
|
|
"Cry21_3",
|
|
"Cry22_3",
|
|
"Cry23_3",
|
|
"Cry24_3",
|
|
"Cry25_3",
|
|
"Get_Item1_3",
|
|
"Get_Item2_3",
|
|
"Tink_3",
|
|
"Heal_HP_3",
|
|
"Heal_Ailment_3",
|
|
"Start_Menu_3",
|
|
"Press_AB_3",
|
|
"Pokedex_Rating_3",
|
|
"Get_Key_Item_3",
|
|
"Poisoned_3",
|
|
"Trade_Machine_3",
|
|
"Turn_On_PC_3",
|
|
"Turn_Off_PC_3",
|
|
"Enter_PC_3",
|
|
"Shrink_3",
|
|
"Switch_3",
|
|
"Healing_Machine_3",
|
|
"Teleport_Exit1_3",
|
|
"Teleport_Enter1_3",
|
|
"Teleport_Exit2_3",
|
|
"Ledge_3",
|
|
"Teleport_Enter2_3",
|
|
"Fly_3",
|
|
"Denied_3",
|
|
"Arrow_Tiles_3",
|
|
"Push_Boulder_3",
|
|
"SS_Anne_Horn_3",
|
|
"Withdraw_Deposit_3",
|
|
"Cut_3",
|
|
"Go_Inside_3",
|
|
"Swap_3",
|
|
"59_3",
|
|
"Purchase_3",
|
|
"Collision_3",
|
|
"Go_Outside_3",
|
|
"Save_3",
|
|
"Intro_Lunge",
|
|
"Intro_Hip",
|
|
"Intro_Hop",
|
|
"Intro_Raise",
|
|
"Intro_Crash",
|
|
"Intro_Whoosh",
|
|
"Slots_Stop_Wheel",
|
|
"Slots_Reward",
|
|
"Slots_New_Spin",
|
|
"Shooting_Star",
|
|
]
|
|
|
|
sfx_banks = [
|
|
0x02,
|
|
0x08,
|
|
0x1f,
|
|
]
|
|
|
|
sfx_groups = {
|
|
0x02: sfx_names_1,
|
|
0x08: sfx_names_2,
|
|
0x1f: sfx_names_3,
|
|
}
|
|
|
|
def dump_all_sfx_headers_in_bank(bank, sfx_names, path, i):
|
|
file = open(path + "sfxheaders" + str(i) + ".asm", "w")
|
|
file.write("SFX_Headers_{}::\n".format(i))
|
|
file.write("\tdb $ff, $ff, $ff ; padding\n")
|
|
address = bank * 0x4000 + 3
|
|
for sfx_name in sfx_names:
|
|
file.write("\nSFX_{}::\n".format(sfx_name))
|
|
file.write("\taudio_header SFX_{}".format(sfx_name))
|
|
num_channels = (rom[address] >> 6) + 1
|
|
for channel in range(num_channels):
|
|
file.write(", Ch{}".format(rom[address] % 0x10 + 1))
|
|
address += 3
|
|
file.write("\n")
|
|
file.close()
|
|
|
|
def dump_all_sfx_headers(path):
|
|
import os
|
|
os.makedirs(path, exist_ok=True)
|
|
for i, bank in enumerate(sfx_banks):
|
|
dump_all_sfx_headers_in_bank(bank, sfx_groups[bank], path, i + 1)
|
|
|
|
if __name__ == "__main__":
|
|
dump_all_sfx_headers("audio/headers/")
|