ogrebattle64/tools/ob.py

202 lines
4.3 KiB
Python

# OgreBattle util
ELEMENT_NAME = {
0: "Physical",
1: "Wind",
2: "Flame",
3: "Earth",
4: "Water",
5: "Virtue",
6: "Bane",
7: "Unknown_7",
8: "Unknown_8",
9: "Unknown_9",
10: "Unknown_10",
11: "Unknown_11",
12: "Unknown_12",
13: "Unknown_13",
14: "Unknown_14",
15: "Unknown_15",
16: "Wind (Special)",
255: "Invalid"
}
def get_element_name(index):
return ELEMENT_NAME[index] if index in ELEMENT_NAME else f"Unknown({index})"
CLASS_NAME = {
0x01: "Soldier",
0x02: "Fighter",
0x03: "Lycanthrope",
0x04: "Amazon",
0x05: "Knight",
0x06: "Berserker",
0x07: "Fencer",
0x08: "Phalanx",
0x09: "BeastTamer",
0x0A: "DollMaster",
0x0B: "Ninja",
0x0C: "Wizard",
0x0D: "Archer",
0x0E: "DragonTamer",
0x0F: "Valkyrie",
0x10: "Witch",
0x11: "Sorceress",
0x12: "Cleric",
0x13: "Paladin",
0x14: "Dragoon",
0x15: "BlackKnight",
0x16: "SwordMaster",
0x17: "Cataphract",
0x18: "BeastMaster",
0x19: "Enchanter",
0x1A: "NinjaMaster",
0x1B: "Archmage",
0x1C: "Diana",
0x1D: "DragonMaster",
0x1E: "Freya",
0x1F: "Siren",
0x20: "Priest",
0x21: "Princess",
0x22: "Centurion",
0x23: "Centurion",
0x24: "AngelKnight",
0x25: "Seraph",
0x26: "Lich",
0x27: "Hawkman",
0x28: "Vultan",
0x29: "Raven",
0x2A: "Werewolf",
0x2B: "Vampire",
0x2C: "Vampire",
0x2D: "Zombie",
0x2E: "Zombie",
0x2F: "Skeleton",
0x30: "Ghost",
0x31: "Gorgon",
0x32: "Pumpkinhead",
0x33: "Faerie",
0x34: "Gremlin",
0x35: "Goblin",
0x36: "Saturos",
0x37: "Ogre",
0x38: "YoungDragon",
0x39: "ThunderDragon",
0x3A: "RedDragon",
0x3B: "EarthDragon",
0x3C: "BlueDragon",
0x3D: "PlatinumDragon",
0x3E: "BlackDragon",
0x3F: "Quetzalcoatl",
0x40: "Flarebrass",
0x41: "AhziDahaka",
0x42: "Hydra",
0x43: "Bahamut",
0x44: "Tiamat",
0x45: "Wyrm",
0x46: "Wyvern",
0x47: "Griffin",
0x48: "Opinincus",
0x49: "Cockatrice",
0x4A: "Sphinx",
0x4B: "Hellhound",
0x4C: "Cerberus",
0x4D: "Giant",
0x4E: "Golem",
0x4F: "StoneGolem",
0x50: "BaldrGolem",
0x51: "Gladiator",
0x52: "Vanguard",
0x53: "General",
0x54: "Gladiator",
0x55: "Warrior",
0x56: "BlazeKnight",
0x57: "RuneKnight",
0x58: "Lord",
0x59: "General",
0x5A: "BeastMaster",
0x5B: "Priest",
0x5C: "Warlock",
0x5D: "Grappler",
0x5E: "Centurion",
0x5F: "Lycanthrope",
0x60: "Werewolf",
0x61: "Solidblade",
0x62: "Overlord",
0x63: "DarkPrince",
0x64: "SpecialClass",
0x65: "FlailMonarch",
0x66: "DeathTemplar",
0x67: "TempleCommander",
0x68: "TempleCommander",
0x69: "TempleCommander",
0x6A: "TempleCommander",
0x6B: "TempleCommander",
0x6C: "Vanity",
0x6D: "Vanity",
0x6E: "Vanity",
0x6F: "SuperiorKnight",
0x70: "SuperiorKnight",
0x71: "Gatekeeper",
0x72: "Grappler",
0x73: "KnightTemplar",
0x74: "Daemon",
0x75: "Phalanx",
0x76: "Berserker",
0x77: "Cleric",
0x78: "Archer",
0x79: "Hawkman",
0x7A: "Siren",
0x7B: "Enchanter",
0x7C: "BlackKnight",
0x7D: "SpecialClass",
0x7E: "SpecialClass",
0x7F: "SpecialClass",
0x80: "SpecialClass",
0x81: "SpecialClass",
0x82: "Barkeep",
0x83: "ElderlyMan",
0x84: "Commoner",
0x85: "Commoner",
0x86: "Danika",
0x87: "Danika_01",
0x88: "Danika_02",
0x89: "Archer",
0x8A: "Berserker",
0x8B: "BeastTamer",
0x8C: "Valkyrie",
0x8D: "Wizard",
0x8E: "Phalanx",
0x8F: "Berserker",
0x90: "Knight",
0x91: "NinjaMaster",
0x92: "DollMaster",
0x93: "KnightTemplar",
0x94: "Archmage",
0x95: "Priest",
0x96: "BlackKnight",
0x97: "DragonMaster",
0x98: "Siren",
0x99: "Saturos",
0x9A: "SwordMaster",
0x9B: "KnightTemplar",
0x9C: "Dragoon",
0x9D: "Gorgon",
0x9E: "Lich",
0x9F: "Daemon",
0xA0: "Plaladin",
0xA1: "Danika",
0xA2: "Paladin",
0xA3: "Witch",
0xA4: "DeathBahamut",
}
def read_rom(start, end):
chunksize = end - start
with open("baserom.z64", "rb") as f:
f.seek(start)
return f.read(chunksize)