202 lines
4.3 KiB
Python
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) |