Last active
July 16, 2020 00:54
-
-
Save raffitz/eb2480434bb212610d8d628d4eea1ee6 to your computer and use it in GitHub Desktop.
Pokémon gen iii structure reader
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python | |
| import argparse | |
| import struct | |
| parser = argparse.ArgumentParser(description='Read a gen iii pokémon') | |
| parser.add_argument('pokemon', action='store', | |
| help='Binary pokémon file to be read') | |
| args = parser.parse_args() | |
| def translate(thebyte): | |
| dictionary = { | |
| 0x00: " ", | |
| 0x01: "À", | |
| 0x02: "Á", | |
| 0x03: "Â", | |
| 0x04: "Ç", | |
| 0x05: "È", | |
| 0x06: "É", | |
| 0x07: "Ê", | |
| 0x08: "Ë", | |
| 0x09: "Ì", | |
| 0x0B: "Î", | |
| 0x0C: "Ï", | |
| 0x0D: "Ò", | |
| 0x0E: "Ó", | |
| 0x0F: "Ô", | |
| 0x10: "Œ", | |
| 0x11: "Ù", | |
| 0x12: "Ú", | |
| 0x13: "Û", | |
| 0x14: "Ñ", | |
| 0x15: "ß", | |
| 0x16: "à", | |
| 0x17: "á", | |
| 0x19: "ç", | |
| 0x1A: "è", | |
| 0x1B: "é", | |
| 0x1C: "ê", | |
| 0x1D: "ë", | |
| 0x1E: "ì", | |
| 0x20: "î", | |
| 0x21: "ï", | |
| 0x22: "ò", | |
| 0x23: "ó", | |
| 0x24: "ô", | |
| 0x25: "œ", | |
| 0x26: "ù", | |
| 0x27: "ú", | |
| 0x28: "û", | |
| 0x29: "ñ", | |
| 0x2A: "º", | |
| 0x2B: "ª", | |
| 0x2C: "ᵉʳ", | |
| 0x2D: "&", | |
| 0x2E: "+", | |
| 0x35: "Lv", | |
| 0x35: "=", | |
| 0x36: ";", | |
| 0x50: "▯", | |
| 0x51: "¿", | |
| 0x52: "¡", | |
| 0x53: "ᴾₖ", | |
| 0x54: "ᴹₙ", | |
| 0x55: "ᴾₒ", | |
| 0x56: "ᴷₑ", | |
| 0x5A: "Í", | |
| 0x5B: "%", | |
| 0x5C: "(", | |
| 0x5D: ")", | |
| 0x68: "â", | |
| 0x6f: "í", | |
| 0x79: "⬆", | |
| 0x7a: "⬇", | |
| 0x7b: "⬅", | |
| 0x7c: "➡", | |
| 0x7d: " ", | |
| 0x7e: " ", | |
| 0x7f: " ", | |
| 0x80: " ", | |
| 0x81: " ", | |
| 0x82: " ", | |
| 0x83: " ", | |
| 0x84: "ᵉ", | |
| 0x85: "<", | |
| 0x86: ">", | |
| 0xA0: "ʳᵉ", | |
| 0xA1: "0", | |
| 0xA2: "1", | |
| 0xA3: "2", | |
| 0xA4: "3", | |
| 0xA5: "4", | |
| 0xA6: "5", | |
| 0xA7: "6", | |
| 0xA8: "7", | |
| 0xA9: "8", | |
| 0xAA: "9", | |
| 0xAB: "!", | |
| 0xAC: "?", | |
| 0xAD: ".", | |
| 0xAE: "-", | |
| 0xAF: "・", | |
| 0xB0: "...", | |
| 0xB1: "\"", | |
| 0xB2: "\"", | |
| 0xB3: "'", | |
| 0xB4: "'", | |
| 0xB5: "♂", | |
| 0xB6: "♀", | |
| 0xB7: "$", | |
| 0xB8: ",", | |
| 0xB9: "×", | |
| 0xBA: "/", | |
| 0xBB: "A", | |
| 0xBC: "B", | |
| 0xBD: "C", | |
| 0xBE: "D", | |
| 0xBF: "E", | |
| 0xC0: "F", | |
| 0xC1: "G", | |
| 0xC2: "H", | |
| 0xC3: "I", | |
| 0xC4: "J", | |
| 0xC5: "K", | |
| 0xC6: "L", | |
| 0xC7: "M", | |
| 0xC8: "N", | |
| 0xC9: "O", | |
| 0xCA: "P", | |
| 0xCB: "Q", | |
| 0xCC: "R", | |
| 0xCD: "S", | |
| 0xCE: "T", | |
| 0xCF: "U", | |
| 0xD0: "V", | |
| 0xD1: "W", | |
| 0xD2: "X", | |
| 0xD3: "Y", | |
| 0xD4: "Z", | |
| 0xD5: "a", | |
| 0xD6: "b", | |
| 0xD7: "c", | |
| 0xD8: "d", | |
| 0xD9: "e", | |
| 0xDA: "f", | |
| 0xDB: "g", | |
| 0xDC: "h", | |
| 0xDD: "i", | |
| 0xDE: "j", | |
| 0xDF: "k", | |
| 0xE0: "l", | |
| 0xE1: "m", | |
| 0xE2: "n", | |
| 0xE3: "o", | |
| 0xE4: "p", | |
| 0xE5: "q", | |
| 0xE6: "r", | |
| 0xE7: "s", | |
| 0xE8: "t", | |
| 0xE9: "u", | |
| 0xEA: "v", | |
| 0xEB: "w", | |
| 0xEC: "x", | |
| 0xED: "y", | |
| 0xEE: "z", | |
| 0xEF: "▶", | |
| 0xF0: ":", | |
| 0xF1: "Ä", | |
| 0xF2: "Ö", | |
| 0xF3: "Ü", | |
| 0xF4: "ä", | |
| 0xF5: "ö", | |
| 0xF6: "ü", | |
| 0xFF: "↩" | |
| } | |
| return dictionary.get(thebyte, "�") | |
| def language(code): | |
| langs = { | |
| 0x0201: "Japanese", | |
| 0x0202: "English", | |
| 0x0203: "French", | |
| 0x0204: "Italian", | |
| 0x0205: "German", | |
| 0x0206: "Korean", | |
| 0x0207: "Spanish" | |
| } | |
| return langs.get(code, "Unknown Language") | |
| def markings(thebyte): | |
| marks = { | |
| 0: "----", | |
| 1: "●---", | |
| 2: "-■--", | |
| 3: "●■--", | |
| 4: "--▲-", | |
| 5: "●-▲-", | |
| 6: "-■▲-", | |
| 7: "●■▲-", | |
| 8: "---♥", | |
| 9: "●--♥", | |
| 10: "-■-♥", | |
| 11: "●■-♥", | |
| 12: "--▲♥", | |
| 13: "●-▲♥", | |
| 14: "-■▲♥", | |
| 15: "●■▲♥" | |
| } | |
| return marks.get(thebyte & 15,"××××") | |
| def getorder(index): | |
| orders = { | |
| 0: "GAEM", | |
| 1: "GAME", | |
| 2: "GEAM", | |
| 3: "GEMA", | |
| 4: "GMAE", | |
| 5: "GMEA", | |
| 6: "AGEM", | |
| 7: "AGME", | |
| 8: "AEGM", | |
| 9: "AEMG", | |
| 10: "AMGE", | |
| 11: "AMEG", | |
| 12: "EGAM", | |
| 13: "EGMA", | |
| 14: "EAGM", | |
| 15: "EAMG", | |
| 16: "EMGA", | |
| 17: "EMAG", | |
| 18: "MGAE", | |
| 19: "MGEA", | |
| 20: "MAGE", | |
| 21: "MAEG", | |
| 22: "MEGA", | |
| 23: "MEAG" | |
| } | |
| return orders.get(index, "XXXX") | |
| def getspecies(index): | |
| pokes = { | |
| 1: "BULBASAUR", | |
| 2: "IVYSAUR", | |
| 3: "VENUSAUR", | |
| 4: "CHARMANDER", | |
| 5: "CHARMELEON", | |
| 6: "CHARIZARD", | |
| 7: "SQUIRTLE", | |
| 8: "WARTORTLE", | |
| 9: "BLASTOISE", | |
| 10: "CATERPIE", | |
| 11: "METAPOD", | |
| 12: "BUTTERFREE", | |
| 13: "WEEDLE", | |
| 14: "KAKUNA", | |
| 15: "BEEDRILL", | |
| 16: "PIDGEY", | |
| 17: "PIDGEOTTO", | |
| 18: "PIDGEOT", | |
| 19: "RATTATA", | |
| 20: "RATICATE", | |
| 21: "SPEAROW", | |
| 22: "FEAROW", | |
| 23: "EKANS", | |
| 24: "ARBOK", | |
| 25: "PIKACHU", | |
| 26: "RAICHU", | |
| 27: "SANDSHREW", | |
| 28: "SANDSLASH", | |
| 29: "NIDORANF", | |
| 30: "NIDORINA", | |
| 31: "NIDOQUEEN", | |
| 32: "NIDORANM", | |
| 33: "NIDORINO", | |
| 34: "NIDOKING", | |
| 35: "CLEFAIRY", | |
| 36: "CLEFABLE", | |
| 37: "VULPIX", | |
| 38: "NINETALES", | |
| 39: "JIGGLYPUFF", | |
| 40: "WIGGLYTUFF", | |
| 41: "ZUBAT", | |
| 42: "GOLBAT", | |
| 43: "ODDISH", | |
| 44: "GLOOM", | |
| 45: "VILEPLUME", | |
| 46: "PARAS", | |
| 47: "PARASECT", | |
| 48: "VENONAT", | |
| 49: "VENOMOTH", | |
| 50: "DIGLETT", | |
| 51: "DUGTRIO", | |
| 52: "MEOWTH", | |
| 53: "PERSIAN", | |
| 54: "PSYDUCK", | |
| 55: "GOLDUCK", | |
| 56: "MANKEY", | |
| 57: "PRIMEAPE", | |
| 58: "GROWLITHE", | |
| 59: "ARCANINE", | |
| 60: "POLIWAG", | |
| 61: "POLIWHIRL", | |
| 62: "POLIWRATH", | |
| 63: "ABRA", | |
| 64: "KADABRA", | |
| 65: "ALAKAZAM", | |
| 66: "MACHOP", | |
| 67: "MACHOKE", | |
| 68: "MACHAMP", | |
| 69: "BELLSPROUT", | |
| 70: "WEEPINBELL", | |
| 71: "VICTREEBEL", | |
| 72: "TENTACOOL", | |
| 73: "TENTACRUEL", | |
| 74: "GEODUDE", | |
| 75: "GRAVELER", | |
| 76: "GOLEM", | |
| 77: "PONYTA", | |
| 78: "RAPIDASH", | |
| 79: "SLOWPOKE", | |
| 80: "SLOWBRO", | |
| 81: "MAGNEMITE", | |
| 82: "MAGNETON", | |
| 83: "FARFETCH'D", | |
| 84: "DODUO", | |
| 85: "DODRIO", | |
| 86: "SEEL", | |
| 87: "DEWGONG", | |
| 88: "GRIMER", | |
| 89: "MUK", | |
| 90: "SHELLDER", | |
| 91: "CLOYSTER", | |
| 92: "GASTLY", | |
| 93: "HAUNTER", | |
| 94: "GENGAR", | |
| 95: "ONIX", | |
| 96: "DROWZEE", | |
| 97: "HYPNO", | |
| 98: "KRABBY", | |
| 99: "KINGLER", | |
| 100: "VOLTORB", | |
| 101: "ELECTRODE", | |
| 102: "EXEGGCUTE", | |
| 103: "EXEGGUTOR", | |
| 104: "CUBONE", | |
| 105: "MAROWAK", | |
| 106: "HITMONLEE", | |
| 107: "HITMONCHAN", | |
| 108: "LICKITUNG", | |
| 109: "KOFFING", | |
| 110: "WEEZING", | |
| 111: "RHYHORN", | |
| 112: "RHYDON", | |
| 113: "CHANSEY", | |
| 114: "TANGELA", | |
| 115: "KANGASKHAN", | |
| 116: "HORSEA", | |
| 117: "SEADRA", | |
| 118: "GOLDEEN", | |
| 119: "SEAKING", | |
| 120: "STARYU", | |
| 121: "STARMIE", | |
| 122: "MR. MIME", | |
| 123: "SCYTHER", | |
| 124: "JYNX", | |
| 125: "ELECTABUZZ", | |
| 126: "MAGMAR", | |
| 127: "PINSIR", | |
| 128: "TAUROS", | |
| 129: "MAGIKARP", | |
| 130: "GYARADOS", | |
| 131: "LAPRAS", | |
| 132: "DITTO", | |
| 133: "EEVEE", | |
| 134: "VAPOREON", | |
| 135: "JOLTEON", | |
| 136: "FLAREON", | |
| 137: "PORYGON", | |
| 138: "OMANYTE", | |
| 139: "OMASTAR", | |
| 140: "KABUTO", | |
| 141: "KABUTOPS", | |
| 142: "AERODACTYL", | |
| 143: "SNORLAX", | |
| 144: "ARTICUNO", | |
| 145: "ZAPDOS", | |
| 146: "MOLTRES", | |
| 147: "DRATINI", | |
| 148: "DRAGONAIR", | |
| 149: "DRAGONITE", | |
| 150: "MEWTWO", | |
| 151: "MEW", | |
| 152: "CHIKORITA", | |
| 153: "BAYLEEF", | |
| 154: "MEGANIUM", | |
| 155: "CYNDAQUIL", | |
| 156: "QUILAVA", | |
| 157: "TYPHLOSION", | |
| 158: "TOTODILE", | |
| 159: "CROCONAW", | |
| 160: "FERALIGATR", | |
| 161: "SENTRET", | |
| 162: "FURRET", | |
| 163: "HOOTHOOT", | |
| 164: "NOCTOWL", | |
| 165: "LEDYBA", | |
| 166: "LEDIAN", | |
| 167: "SPINARAK", | |
| 168: "ARIADOS", | |
| 169: "CROBAT", | |
| 170: "CHINCHOU", | |
| 171: "LANTURN", | |
| 172: "PICHU", | |
| 173: "CLEFFA", | |
| 174: "IGGLYBUFF", | |
| 175: "TOGEPI", | |
| 176: "TOGETIC", | |
| 177: "NATU", | |
| 178: "XATU", | |
| 179: "MAREEP", | |
| 180: "FLAAFFY", | |
| 181: "AMPHAROS", | |
| 182: "BELLOSSOM", | |
| 183: "MARILL", | |
| 184: "AZUMARILL", | |
| 185: "SUDOWOODO", | |
| 186: "POLITOED", | |
| 187: "HOPPIP", | |
| 188: "SKIPLOOM", | |
| 189: "JUMPLUFF", | |
| 190: "AIPOM", | |
| 191: "SUNKERN", | |
| 192: "SUNFLORA", | |
| 193: "YANMA", | |
| 194: "WOOPER", | |
| 195: "QUAGSIRE", | |
| 196: "ESPEON", | |
| 197: "UMBREON", | |
| 198: "MURKROW", | |
| 199: "SLOWKING", | |
| 200: "MISDREAVUS", | |
| 201: "UNOWN", | |
| 202: "WOBBUFFET", | |
| 203: "GIRAFARIG", | |
| 204: "PINECO", | |
| 205: "FORRETRESS", | |
| 206: "DUNSPARCE", | |
| 207: "GLIGAR", | |
| 208: "STEELIX", | |
| 209: "SNUBBULL", | |
| 210: "GRANBULL", | |
| 211: "QWILFISH", | |
| 212: "SCIZOR", | |
| 213: "SHUCKLE", | |
| 214: "HERACROSS", | |
| 215: "SNEASEL", | |
| 216: "TEDDIURSA", | |
| 217: "URSARING", | |
| 218: "SLUGMA", | |
| 219: "MAGCARGO", | |
| 220: "SWINUB", | |
| 221: "PILOSWINE", | |
| 222: "CORSOLA", | |
| 223: "REMORAID", | |
| 224: "OCTILLERY", | |
| 225: "DELIBIRD", | |
| 226: "MANTINE", | |
| 227: "SKARMORY", | |
| 228: "HOUNDOUR", | |
| 229: "HOUNDOOM", | |
| 230: "KINGDRA", | |
| 231: "PHANPY", | |
| 232: "DONPHAN", | |
| 233: "PORYGON2", | |
| 234: "STANTLER", | |
| 235: "SMEARGLE", | |
| 236: "TYROGUE", | |
| 237: "HITMONTOP", | |
| 238: "SMOOCHUM", | |
| 239: "ELEKID", | |
| 240: "MAGBY", | |
| 241: "MILTANK", | |
| 242: "BLISSEY", | |
| 243: "RAIKOU", | |
| 244: "ENTEI", | |
| 245: "SUICUNE", | |
| 246: "LARVITAR", | |
| 247: "PUPITAR", | |
| 248: "TYRANITAR", | |
| 249: "LUGIA", | |
| 250: "HO-OH", | |
| 251: "CELEBI", | |
| 277: "TREECKO", | |
| 278: "GROVYLE", | |
| 279: "SCEPTILE", | |
| 280: "TORCHIC", | |
| 281: "COMBUSKEN", | |
| 282: "BLAZIKEN", | |
| 283: "MUDKIP", | |
| 284: "MARSHTOMP", | |
| 285: "SWAMPERT", | |
| 286: "POOCHYENA", | |
| 287: "MIGHTYENA", | |
| 288: "ZIGZAGOON", | |
| 289: "LINOONE", | |
| 290: "WURMPLE", | |
| 291: "SILCOON", | |
| 292: "BEAUTIFLY", | |
| 293: "CASCOON", | |
| 294: "DUSTOX", | |
| 295: "LOTAD", | |
| 296: "LOMBRE", | |
| 297: "LUDICOLO", | |
| 298: "SEEDOT", | |
| 299: "NUZLEAF", | |
| 300: "SHIFTRY", | |
| 301: "NINCADA", | |
| 302: "NINJASK", | |
| 303: "SHEDINJA", | |
| 304: "TAILLOW", | |
| 305: "SWELLOW", | |
| 306: "SHROOMISH", | |
| 307: "BRELOOM", | |
| 308: "SPINDA", | |
| 309: "WINGULL", | |
| 310: "PELIPPER", | |
| 311: "SURSKIT", | |
| 312: "MASQUERAIN", | |
| 313: "WAILMER", | |
| 314: "WAILORD", | |
| 315: "SKITTY", | |
| 316: "DELCATTY", | |
| 317: "KECLEON", | |
| 318: "BALTOY", | |
| 319: "CLAYDOL", | |
| 320: "NOSEPASS", | |
| 321: "TORKOAL", | |
| 322: "SABLEYE", | |
| 323: "BARBOACH", | |
| 324: "WHISCASH", | |
| 325: "LUVDISC", | |
| 326: "CORPHISH", | |
| 327: "CRAWDAUNT", | |
| 328: "FEEBAS", | |
| 329: "MILOTIC", | |
| 330: "CARVANHA", | |
| 331: "SHARPEDO", | |
| 332: "TRAPINCH", | |
| 333: "VIBRAVA", | |
| 334: "FLYGON", | |
| 335: "MAKUHITA", | |
| 336: "HARIYAMA", | |
| 337: "ELECTRIKE", | |
| 338: "MANECTRIC", | |
| 339: "NUMEL", | |
| 340: "CAMERUPT", | |
| 341: "SPHEAL", | |
| 342: "SEALEO", | |
| 343: "WALREIN", | |
| 344: "CACNEA", | |
| 345: "CACTURNE", | |
| 346: "SNORUNT", | |
| 347: "GLALIE", | |
| 348: "LUNATONE", | |
| 349: "SOLROCK", | |
| 350: "AZURILL", | |
| 351: "SPOINK", | |
| 352: "GRUMPIG", | |
| 353: "PLUSLE", | |
| 354: "MINUN", | |
| 355: "MAWILE", | |
| 356: "MEDITITE", | |
| 357: "MEDICHAM", | |
| 358: "SWABLU", | |
| 359: "ALTARIA", | |
| 360: "WYNAUT", | |
| 361: "DUSKULL", | |
| 362: "DUSCLOPS", | |
| 363: "ROSELIA", | |
| 364: "SLAKOTH", | |
| 365: "VIGOROTH", | |
| 366: "SLAKING", | |
| 367: "GULPIN", | |
| 368: "SWALOT", | |
| 369: "TROPIUS", | |
| 370: "WHISMUR", | |
| 371: "LOUDRED", | |
| 372: "EXPLOUD", | |
| 373: "CLAMPERL", | |
| 374: "HUNTAIL", | |
| 375: "GOREBYSS", | |
| 376: "ABSOL", | |
| 377: "SHUPPET", | |
| 378: "BANETTE", | |
| 379: "SEVIPER", | |
| 380: "ZANGOOSE", | |
| 381: "RELICANTH", | |
| 382: "ARON", | |
| 383: "LAIRON", | |
| 384: "AGGRON", | |
| 385: "CASTFORM", | |
| 386: "VOLBEAT", | |
| 387: "ILLUMISE", | |
| 388: "LILEEP", | |
| 389: "CRADILY", | |
| 390: "ANORITH", | |
| 391: "ARMALDO", | |
| 392: "RALTS", | |
| 393: "KIRLIA", | |
| 394: "GARDEVOIR", | |
| 395: "BAGON", | |
| 396: "SHELGON", | |
| 397: "SALAMENCE", | |
| 398: "BELDUM", | |
| 399: "METANG", | |
| 400: "METAGROSS", | |
| 401: "REGIROCK", | |
| 402: "REGICE", | |
| 403: "REGISTEEL", | |
| 404: "KYOGRE", | |
| 405: "GROUDON", | |
| 406: "RAYQUAZA", | |
| 407: "LATIAS", | |
| 408: "LATIOS", | |
| 409: "JIRACHI", | |
| 410: "DEOXYS", | |
| 411: "CHIMECHO" | |
| } | |
| return pokes.get(index,"?") | |
| def getitem(index): | |
| items = { | |
| 0x000: "NOTHING", | |
| 0x001: "MASTER BALL", | |
| 0x002: "ULTRA BALL", | |
| 0x003: "GREAT BALL", | |
| 0x004: "POKE BALL", | |
| 0x005: "SAFARI BALL", | |
| 0x006: "NET BALL", | |
| 0x007: "DIVE BALL", | |
| 0x008: "NEST BALL", | |
| 0x009: "REPEAT BALL", | |
| 0x00A: "TIMER BALL", | |
| 0x00B: "LUXURY BALL", | |
| 0x00C: "PREMIER BALL", | |
| 0x00D: "POTION", | |
| 0x00E: "ANTIDOTE", | |
| 0x00F: "BURN HEAL", | |
| 0x010: "ICE HEAL", | |
| 0x011: "AWAKENING", | |
| 0x012: "PARALYZ HEAL", | |
| 0x013: "FULL RESTORE", | |
| 0x014: "MAX POTION", | |
| 0x015: "HYPER POTION", | |
| 0x016: "SUPER POTION", | |
| 0x017: "FULL HEAL", | |
| 0x018: "REVIVE", | |
| 0x019: "MAX REVIVE", | |
| 0x01A: "FRESH WATER", | |
| 0x01B: "SODA POP", | |
| 0x01C: "LEMONADE", | |
| 0x01D: "MOOMOO MILK", | |
| 0x01E: "ENERGY POWDER", | |
| 0x01F: "ENERGY ROOT", | |
| 0x020: "HEAL POWDER", | |
| 0x021: "REVIVAL HERB", | |
| 0x022: "ETHER", | |
| 0x023: "MAX ETHER", | |
| 0x024: "ELIXIR", | |
| 0x025: "MAX ELIXIR", | |
| 0x026: "LAVA COOKIE", | |
| 0x027: "BLUE FLUTE", | |
| 0x028: "YELLOW FLUTE", | |
| 0x029: "RED FLUTE", | |
| 0x02A: "BLACK FLUTE", | |
| 0x02B: "WHITE FLUTE", | |
| 0x02C: "BERRY JUICE", | |
| 0x02D: "SACRED ASH", | |
| 0x02E: "SHOAL SALT", | |
| 0x02F: "SHOAL SHELL", | |
| 0x030: "RED SHARD", | |
| 0x031: "BLUE SHARD", | |
| 0x032: "YELLOW SHARD", | |
| 0x033: "GREEN SHARD", | |
| 0x03F: "HR UP", | |
| 0x040: "PROTEIN", | |
| 0x041: "IRON", | |
| 0x042: "CARBOS", | |
| 0x043: "CALCIUM", | |
| 0x044: "RARE CANDY", | |
| 0x045: "PP UP", | |
| 0x046: "ZINC", | |
| 0x047: "PP MAX", | |
| 0x049: "GUARD SPEC", | |
| 0x04A: "DIRE HIT", | |
| 0x04B: "X ATTACK", | |
| 0x04C: "X DEFEND", | |
| 0x04D: "X SPEED", | |
| 0x04E: "X ACCURACY", | |
| 0x04F: "X SPECIAL", | |
| 0x050: "POKE DOLL", | |
| 0x051: "FLUFFY TAIL", | |
| 0x053: "FIRE STONE", | |
| 0x054: "MAX REPEL", | |
| 0x055: "ESCAPE ROPE", | |
| 0x056: "REPEL", | |
| 0x05D: "SUN STONE", | |
| 0x05E: "MOON STONE", | |
| 0x05F: "FIRE STONE", | |
| 0x060: "THUNDER STONE", | |
| 0x061: "WATER STONE", | |
| 0x062: "LEAF STONE", | |
| 0x067: "TINY MUSHROOM", | |
| 0x068: "BIG MUSHROOM", | |
| 0x06A: "PEARL", | |
| 0x06B: "BIG PEARL", | |
| 0x06C: "STARDUST", | |
| 0x06D: "STAR PIECE", | |
| 0x06E: "NUGGET", | |
| 0x06F: "HEART SCALE", | |
| 0x079: "ORANGE MAIL", | |
| 0x07A: "HARBOR MAIL", | |
| 0x07B: "GLITTER MAIL", | |
| 0x07C: "MECH MAIL", | |
| 0x07D: "WOOD MAIL", | |
| 0x07E: "WAVE MAIL", | |
| 0x07F: "BEAD MAIL", | |
| 0x080: "SHADOW MAIL", | |
| 0x081: "TROPIC MAIL", | |
| 0x082: "DREAM MAIL", | |
| 0x083: "FAB MAIL", | |
| 0x084: "RETRO MAIL", | |
| 0x085: "CHERI BERRY", | |
| 0x086: "CHESTO BERRY", | |
| 0x087: "PECHA BERRY", | |
| 0x088: "RAWST BERRY", | |
| 0x089: "ASPEAR BERRY", | |
| 0x08A: "LEPPA BERRY", | |
| 0x08B: "ORAN BERRY", | |
| 0x08C: "PERSIM BERRY", | |
| 0x08D: "LUM BERRY", | |
| 0x08E: "SITRUS BERRY", | |
| 0x08F: "FIGY BERRY", | |
| 0x090: "WIKI BERRY", | |
| 0x091: "MAGO BERRY", | |
| 0x092: "AGUAV BERRY", | |
| 0x093: "IAPAPA BERRY", | |
| 0x094: "RAZZ BERRY", | |
| 0x095: "BLUK BERRY", | |
| 0x096: "NANAB BERRY", | |
| 0x097: "WEPEAR BERRY", | |
| 0x098: "PINAP BERRY", | |
| 0x099: "POMEG BERRY", | |
| 0x09A: "KELPSY BERRY", | |
| 0x09B: "QUALOT BERRY", | |
| 0x09C: "HONDEW BERRY", | |
| 0x09D: "GREPA BERRY", | |
| 0x09E: "TAMATO BERRY", | |
| 0x09F: "CORNN BERRY", | |
| 0x0A0: "MAGOST BERRY", | |
| 0x0A1: "RABUTA BERRY", | |
| 0x0A2: "NOMEL BERRY", | |
| 0x0A3: "SPELON BERRY", | |
| 0x0A4: "PAMTRE BERRY", | |
| 0x0A5: "WATMEL BERRY", | |
| 0x0A6: "DURIN BERRY", | |
| 0x0A7: "BELUE BERRY", | |
| 0x0A8: "LIECHI BERRY", | |
| 0x0A9: "GANLON BERRY", | |
| 0x0AA: "SALAC BERRY", | |
| 0x0AB: "PETAYA BERRY", | |
| 0x0AC: "APICOT BERRY", | |
| 0x0AD: "LANSAT BERRY", | |
| 0x0AE: "STARF BERRY", | |
| 0x0AF: "ENIGMA BERRY", | |
| 0x0B3: "BRIGHTPOWDER", | |
| 0x0B4: "WHITE HERB", | |
| 0x0B5: "MACHO BRACE", | |
| 0x0B6: "EXP SHARE", | |
| 0x0B7: "QUICK CLAW", | |
| 0x0B8: "SOOTHE BELL", | |
| 0x0B9: "MENTAL HERB", | |
| 0x0BA: "CHOICE BAND", | |
| 0x0BB: "KINGS ROCK", | |
| 0x0BC: "SILVERPOWDER", | |
| 0x0BD: "AMULET COIN", | |
| 0x0BE: "CLEANSE TAG", | |
| 0x0BF: "SOUL DEW", | |
| 0x0C0: "DEEP SEA TOOTH", | |
| 0x0C1: "DEEP SEA SCALE", | |
| 0x0C2: "SMOKE BALL", | |
| 0x0C3: "EVERSTONE", | |
| 0x0C4: "FOCUS BAND", | |
| 0x0C5: "LUCKY EGG", | |
| 0x0C6: "SCOPE LENS", | |
| 0x0C7: "METAL COAT", | |
| 0x0C8: "LEFTOVERS", | |
| 0x0C9: "DRAGON SCALE", | |
| 0x0CA: "LIGHT BALL", | |
| 0x0CB: "SOFT SAND", | |
| 0x0CC: "HARD STONE", | |
| 0x0CD: "MIRACLE SEED", | |
| 0x0CE: "BLACK GLASSES", | |
| 0x0CF: "BLACK BELT", | |
| 0x0D0: "MAGNET", | |
| 0x0D1: "MYSTIC WATER", | |
| 0x0D2: "SHARP BEAK", | |
| 0x0D3: "POISON BARB", | |
| 0x0D4: "NEVERMELTICE", | |
| 0x0D5: "SPELL TAG", | |
| 0x0D6: "TWISTEDSPOON", | |
| 0x0D7: "CHARCOAL", | |
| 0x0D8: "DRAGON FANG", | |
| 0x0D9: "SILK SCARF", | |
| 0x0DA: "UP-GRADE", | |
| 0x0DB: "SHELL BELL", | |
| 0x0DC: "SEA INCENSE", | |
| 0x0DD: "LAX INCENSE", | |
| 0x0DE: "LUCKY PUNCH", | |
| 0x0DF: "METAL POWDER", | |
| 0x0E0: "THICK CLUB", | |
| 0x0E1: "STICK", | |
| 0x0FE: "RED SCARF", | |
| 0x0FF: "BLUE SCARF", | |
| 0x100: "PINK SCARF", | |
| 0x101: "GREEN SCARF", | |
| 0x102: "YELLOW SCARF", | |
| 0x103: "MACH BIKE", | |
| 0x104: "COIN CASE", | |
| 0x105: "ITEMFINDER", | |
| 0x106: "OLD ROD", | |
| 0x107: "GOOD ROD", | |
| 0x108: "SUPER ROD", | |
| 0x109: "SS TICKET", | |
| 0x10A: "CONTEST PASS", | |
| 0x10C: "WAILMER PAIL", | |
| 0x10D: "DEVON GOODS", | |
| 0x10E: "SOOT SACK", | |
| 0x10F: "BASEMENT KEY", | |
| 0x110: "ACRO BIKE", | |
| 0x111: "POKEBLOCK CASE", | |
| 0x112: "LETTER", | |
| 0x113: "EON TICKET", | |
| 0x114: "RED ORB", | |
| 0x115: "BLUE ORB", | |
| 0x116: "SCANNER", | |
| 0x117: "GO-GOGGLES", | |
| 0x118: "METEORITE", | |
| 0x119: "RM 1 KEY", | |
| 0x11A: "RM 2 KEY", | |
| 0x11B: "RM 4 KEY", | |
| 0x11C: "RM 6 KEY", | |
| 0x11D: "STORAGE KEY", | |
| 0x11E: "ROOT FOSSIL", | |
| 0x11F: "CLAW FOSSIL", | |
| 0x120: "DEVON SCOPE", | |
| 0x121: "TM01", | |
| 0x122: "TM02", | |
| 0x123: "TM03", | |
| 0x124: "TM04", | |
| 0x125: "TM05", | |
| 0x126: "TM06", | |
| 0x127: "TM07", | |
| 0x128: "TM08", | |
| 0x129: "TM09", | |
| 0x12A: "TM10", | |
| 0x12B: "TM11", | |
| 0x12C: "TM12", | |
| 0x12D: "TM13", | |
| 0x12E: "TM14", | |
| 0x12F: "TM15", | |
| 0x130: "TM16", | |
| 0x131: "TM17", | |
| 0x132: "TM18", | |
| 0x133: "TM19", | |
| 0x134: "TM20", | |
| 0x135: "TM21", | |
| 0x136: "TM22", | |
| 0x137: "TM23", | |
| 0x138: "TM24", | |
| 0x139: "TM25", | |
| 0x13A: "TM26", | |
| 0x13B: "TM27", | |
| 0x13C: "TM28", | |
| 0x13D: "TM29", | |
| 0x13E: "TM30", | |
| 0x13F: "TM31", | |
| 0x140: "TM32", | |
| 0x141: "TM33", | |
| 0x142: "TM34", | |
| 0x143: "TM35", | |
| 0x144: "TM36", | |
| 0x145: "TM37", | |
| 0x146: "TM38", | |
| 0x147: "TM39", | |
| 0x148: "TM40", | |
| 0x149: "TM41", | |
| 0x14A: "TM42", | |
| 0x14B: "TM43", | |
| 0x14C: "TM44", | |
| 0x14D: "TM45", | |
| 0x14E: "TM46", | |
| 0x14F: "TM47", | |
| 0x150: "TM48", | |
| 0x151: "TM49", | |
| 0x152: "TM50", | |
| 0x153: "HM01", | |
| 0x154: "HM02", | |
| 0x155: "HM03", | |
| 0x156: "HM04", | |
| 0x157: "HM05", | |
| 0x158: "HM06", | |
| 0x159: "HM07", | |
| 0x15A: "HM08", | |
| 0x15D: "OAK’S PARCEL", | |
| 0x15E: "POKE FLUTE", | |
| 0x15F: "SECRET KEY", | |
| 0x160: "BIKE VOUCHER", | |
| 0x161: "GOLD TEETH", | |
| 0x162: "OLD AMBER", | |
| 0x163: "CARD KEY", | |
| 0x164: "ELEVATOR KEY", | |
| 0x165: "HELIX FOSSIL", | |
| 0x166: "DOME FOSSIL", | |
| 0x167: "SILPH SCOPE", | |
| 0x168: "BIKE", | |
| 0x169: "TOWN MAP", | |
| 0x16A: "VS SEEKER", | |
| 0x16B: "FAME CHECKER", | |
| 0x16C: "TM CASE", | |
| 0x16D: "BERRY POUCH", | |
| 0x16E: "TEACHY TV", | |
| 0x16F: "TRI-PASS", | |
| 0x170: "RAINBOW PASS", | |
| 0x171: "TEA", | |
| 0x172: "MYSTERYTICKET", | |
| 0x173: "AURORATICKET", | |
| 0x174: "POWDER JAR", | |
| 0x175: "RUBY", | |
| 0x176: "SAPPHIRE", | |
| 0x177: "MAGMA EMBLEM", | |
| 0x178: "OLD SEA MAP" | |
| } | |
| return items.get(index,"?") | |
| def getmovename(index): | |
| moves = { | |
| 0: "-", | |
| 1: "POUND", | |
| 2: "KARATE CHOP", | |
| 3: "DOUBLESLAP", | |
| 4: "COMET PUNCH", | |
| 5: "MEGA PUNCH", | |
| 6: "PAY DAY", | |
| 7: "FIRE PUNCH", | |
| 8: "ICE PUNCH", | |
| 9: "THUNDERPUNCH", | |
| 10: "SCRATCH", | |
| 11: "VICEGRIP", | |
| 12: "GUILLOTINE", | |
| 13: "RAZOR WIND", | |
| 14: "SWORDS DANCE", | |
| 15: "CUT", | |
| 16: "GUST", | |
| 17: "WING ATTACK", | |
| 18: "WHIRLWIND", | |
| 19: "FLY", | |
| 20: "BIND", | |
| 21: "SLAM", | |
| 22: "VINE WHIP", | |
| 23: "STOMP", | |
| 24: "DOUBLE KICK", | |
| 25: "MEGA KICK", | |
| 26: "JUMP KICK", | |
| 27: "ROLLING KICK", | |
| 28: "SAND-ATTACK", | |
| 29: "HEADBUTT", | |
| 30: "HORN ATTACK", | |
| 31: "FURY ATTACK", | |
| 32: "HORN DRILL", | |
| 33: "TACKLE", | |
| 34: "BODY SLAM", | |
| 35: "WRAP", | |
| 36: "TAKE DOWN", | |
| 37: "THRASH", | |
| 38: "DOUBLE-EDGE", | |
| 39: "TAIL WHIP", | |
| 40: "POISON STING", | |
| 41: "TWINEEDLE", | |
| 42: "PIN MISSILE", | |
| 43: "LEER", | |
| 44: "BITE", | |
| 45: "GROWL", | |
| 46: "ROAR", | |
| 47: "SING", | |
| 48: "SUPERSONIC", | |
| 49: "SONICBOOM", | |
| 50: "DISABLE", | |
| 51: "ACID", | |
| 52: "EMBER", | |
| 53: "FLAMETHROWER", | |
| 54: "MIST", | |
| 55: "WATER GUN", | |
| 56: "HYDRO PUMP", | |
| 57: "SURF", | |
| 58: "ICE BEAM", | |
| 59: "BLIZZARD", | |
| 60: "PSYBEAM", | |
| 61: "BUBBLEBEAM", | |
| 62: "AURORA BEAM", | |
| 63: "HYPER BEAM", | |
| 64: "PECK", | |
| 65: "DRILL PECK", | |
| 66: "SUBMISSION", | |
| 67: "LOW KICK", | |
| 68: "COUNTER", | |
| 69: "SEISMIC TOSS", | |
| 70: "STRENGTH", | |
| 71: "ABSORB", | |
| 72: "MEGA DRAIN", | |
| 73: "LEECH SEED", | |
| 74: "GROWTH", | |
| 75: "RAZOR LEAF", | |
| 76: "SOLARBEAM", | |
| 77: "POISONPOWDER", | |
| 78: "STUN SPORE", | |
| 79: "SLEEP POWDER", | |
| 80: "PETAL DANCE", | |
| 81: "STRINGSHOT", | |
| 82: "DRAGON RAGE", | |
| 83: "FIRE SPIN", | |
| 84: "THUNDERSHOCK", | |
| 85: "THUNDERBOLT", | |
| 86: "THUNDER WAVE", | |
| 87: "THUNDER", | |
| 88: "ROCK THROW", | |
| 89: "EARTHQUAKE", | |
| 90: "FISSURE", | |
| 91: "DIG", | |
| 92: "TOXIC", | |
| 93: "CONFUSION", | |
| 94: "PSYCHIC", | |
| 95: "HYPNOSIS", | |
| 96: "MEDITATE", | |
| 97: "AGILITY", | |
| 98: "QUICK ATTACK", | |
| 99: "RAGE", | |
| 100: "TELEPORT", | |
| 101: "NIGHT SHADE", | |
| 102: "MIMIC", | |
| 103: "SCREECH", | |
| 104: "DOUBLE TEAM", | |
| 105: "RECOVER", | |
| 106: "HARDEN", | |
| 107: "MINIMIZE", | |
| 108: "SMOKESCREEN", | |
| 109: "CONFUSE RAY", | |
| 110: "WITHDRAW", | |
| 111: "DEFENSE CURL", | |
| 112: "BARRIER", | |
| 113: "LIGHT SCREEN", | |
| 114: "HAZE", | |
| 115: "REFLECT", | |
| 116: "FOCUS ENERGY", | |
| 117: "BIDE", | |
| 118: "METRONOME", | |
| 119: "MIRROR MOVE", | |
| 120: "SELFDESTRUCT", | |
| 121: "EGG BOMB", | |
| 122: "LICK", | |
| 123: "SMOG", | |
| 124: "SLUDGE", | |
| 125: "BONE CLUB", | |
| 126: "FIRE BLAST", | |
| 127: "WATERFALL", | |
| 128: "CLAMP", | |
| 129: "SWIFT", | |
| 130: "SKULL BASH", | |
| 131: "SPIKE CANNON", | |
| 132: "CONSTRICT", | |
| 133: "AMNESIA", | |
| 134: "KINESIS", | |
| 135: "SOFTBOILED", | |
| 136: "HI JUMP KICK", | |
| 137: "GLARE", | |
| 138: "DREAM EATER", | |
| 139: "POISON GAS", | |
| 140: "BARRAGE", | |
| 141: "LEECH LIFE", | |
| 142: "LOVELY KISS", | |
| 143: "SKY ATTACK", | |
| 144: "TRANSFORM", | |
| 145: "BUBBLE", | |
| 146: "DIZZY PUNCH", | |
| 147: "SPORE", | |
| 148: "FLASH", | |
| 149: "PSYWAVE", | |
| 150: "SPLASH", | |
| 151: "ACID ARMOR", | |
| 152: "CRABHAMMER", | |
| 153: "EXPLOSION", | |
| 154: "FURY SWIPES", | |
| 155: "BONEMERANG", | |
| 156: "REST", | |
| 157: "ROCK SLIDE", | |
| 158: "HYPER FANG", | |
| 159: "SHARPEN", | |
| 160: "CONVERSION", | |
| 161: "TRI ATTACK", | |
| 162: "SUPER FANG", | |
| 163: "SLASH", | |
| 164: "SUBSTITUTE", | |
| 165: "STRUGGLE", | |
| 166: "SKETCH", | |
| 167: "TRIPLE KICK", | |
| 168: "THIEF", | |
| 169: "SPIDER WEB", | |
| 170: "MIND READER", | |
| 171: "NIGHTMARE", | |
| 172: "FLAME WHEEL", | |
| 173: "SNORE", | |
| 174: "CURSE", | |
| 175: "FLAIL", | |
| 176: "CONVERSION 2", | |
| 177: "AEROBLAST", | |
| 178: "COTTON SPORE", | |
| 179: "REVERSAL", | |
| 180: "SPITE", | |
| 181: "POWDER SNOW", | |
| 182: "PROTECT", | |
| 183: "MACH PUNCH", | |
| 184: "SCARY FACE", | |
| 185: "FAINT ATTACK", | |
| 186: "SWEET KISS", | |
| 187: "BELLY DRUM", | |
| 188: "SLUDGE BOMB", | |
| 189: "MUD-SLAP", | |
| 190: "OCTAZOOKA", | |
| 191: "SPIKES", | |
| 192: "ZAPCANNON", | |
| 193: "FORESIGHT", | |
| 194: "DESTINY BOND", | |
| 195: "PERISH SONG", | |
| 196: "ICY WIND", | |
| 197: "DETECT", | |
| 198: "BONE RUSH", | |
| 199: "LOCK-ON", | |
| 200: "OUTRAGE", | |
| 201: "SANDSTORM", | |
| 202: "GIGA DRAIN", | |
| 203: "ENDURE", | |
| 204: "CHARM", | |
| 205: "ROLLOUT", | |
| 206: "FALSE SWIPE", | |
| 207: "SWAGGER", | |
| 208: "MILK DRINK", | |
| 209: "SPARK", | |
| 210: "FURY CUTTER", | |
| 211: "STEEL WING", | |
| 212: "MEAN LOOK", | |
| 213: "ATTRACT", | |
| 214: "SLEEPTALK", | |
| 215: "HEAL BELL", | |
| 216: "RETURN", | |
| 217: "PRESENT", | |
| 218: "FRUSTRATION", | |
| 219: "SAFEGUARD", | |
| 220: "PAIN SPLIT", | |
| 221: "SACRED FIRE", | |
| 222: "MAGNITUDE", | |
| 223: "DYNAMICPUNCH", | |
| 224: "MEGAHORN", | |
| 225: "DRAGONBREATH", | |
| 226: "BATON PASS", | |
| 227: "ENCORE", | |
| 228: "PURSUIT", | |
| 229: "RAPID SPIN", | |
| 230: "SWEETSCENT", | |
| 231: "IRON TAIL", | |
| 232: "METAL CLAW", | |
| 233: "VITAL THROW", | |
| 234: "MORNING SUN", | |
| 235: "SYNTHESIS", | |
| 236: "MOONLIGHT", | |
| 237: "HIDDEN POWER", | |
| 238: "CROSS CHOP", | |
| 239: "TWISTER", | |
| 240: "RAIN DANCE", | |
| 241: "SUNNY DAY", | |
| 242: "CRUNCH", | |
| 243: "MIRROR COAT", | |
| 244: "PSYCH UP", | |
| 245: "EXTREMESPEED", | |
| 246: "ANCIENTPOWER", | |
| 247: "SHADOW BALL", | |
| 248: "FUTURE SIGHT", | |
| 249: "ROCK SMASH", | |
| 250: "WHIRLPOOL", | |
| 251: "BEATUP", | |
| 252: "FAKE OUT", | |
| 253: "UPROAR", | |
| 254: "STOCKPILE", | |
| 255: "SPIT UP", | |
| 256: "SWALLOW", | |
| 257: "HEAT WAVE", | |
| 258: "HAIL", | |
| 259: "TORMENT", | |
| 260: "FLATTER", | |
| 261: "WILL-O-WISP", | |
| 262: "MEMENTO", | |
| 263: "FACADE", | |
| 264: "FOCUS PUNCH", | |
| 265: "SMELLINGSALT", | |
| 266: "FOLLOW ME", | |
| 267: "NATURE POWER", | |
| 268: "CHARGE", | |
| 269: "TAUNT", | |
| 270: "HELPING HAND", | |
| 271: "TRICK", | |
| 272: "ROLE PLAY", | |
| 273: "WISH", | |
| 274: "ASSIST", | |
| 275: "INGRAIN", | |
| 276: "SUPERPOWER", | |
| 277: "MAGIC COAT", | |
| 278: "RECYCLE", | |
| 279: "REVENGE", | |
| 280: "BRICK BREAK", | |
| 281: "YAWN", | |
| 282: "KNOCK OFF", | |
| 283: "ENDEAVOR", | |
| 284: "ERUPTION", | |
| 285: "SKILL SWAP", | |
| 286: "IMPRISON", | |
| 287: "REFRESH", | |
| 288: "GRUDGE", | |
| 289: "SNATCH", | |
| 290: "SECRET POWER", | |
| 291: "DIVE", | |
| 292: "ARM THRUST", | |
| 293: "CAMOUFLAGE", | |
| 294: "TAIL GLOW", | |
| 295: "LUSTER PURGE", | |
| 296: "MIST BALL", | |
| 297: "FEATHERDANCE", | |
| 298: "TEETER DANCE", | |
| 299: "BLAZE KICK", | |
| 300: "MUD SPORT", | |
| 301: "ICE BALL", | |
| 302: "NEEDLE ARM", | |
| 303: "SLACK OFF", | |
| 304: "HYPER VOICE", | |
| 305: "POISONFANG", | |
| 306: "CRUSH CLAW", | |
| 307: "BLAST BURN", | |
| 308: "HYDRO CANNON", | |
| 309: "METEOR MASH", | |
| 310: "ASTONISH", | |
| 311: "WEATHER BALL", | |
| 312: "AROMATHERAPY", | |
| 313: "FAKE TEARS", | |
| 314: "AIR CUTTER", | |
| 315: "OVERHEAT", | |
| 316: "ODOR SLEUTH", | |
| 317: "ROCK TOMB", | |
| 318: "SILVER WIND", | |
| 319: "METAL SOUND", | |
| 320: "GRASSWHISTLE", | |
| 321: "TICKLE", | |
| 322: "COSMIC POWER", | |
| 323: "WATER SPOUT", | |
| 324: "SIGNAL BEAM", | |
| 325: "SHADOW PUNCH", | |
| 326: "EXTRASENSORY", | |
| 327: "SKY UPPERCUT", | |
| 328: "SAND TOMB", | |
| 329: "SHEER COLD", | |
| 330: "MUDDY WATER", | |
| 331: "BULLET SEED", | |
| 332: "AERIAL ACE", | |
| 333: "ICICLE SPEAR", | |
| 334: "IRON DEFENSE", | |
| 335: "BLOCK", | |
| 336: "HOWL", | |
| 337: "DRAGONCLAW", | |
| 338: "FRENZY PLANT", | |
| 339: "BULK UP", | |
| 340: "BOUNCE", | |
| 341: "MUD SHOT", | |
| 342: "POISON TAIL", | |
| 343: "COVET", | |
| 344: "VOLT TACKLE", | |
| 345: "MAGICAL LEAF", | |
| 346: "WATER SPORT", | |
| 347: "CALMMIND", | |
| 348: "LEAF BLADE", | |
| 349: "DRAGON DANCE", | |
| 350: "ROCK BLAST", | |
| 351: "SHOCK WAVE", | |
| 352: "WATER PULSE", | |
| 353: "DOOM DESIRE", | |
| 354: "PSYCHO BOOST" | |
| } | |
| return moves.get(index,"?") | |
| def getgame(index): | |
| games = { | |
| 0: "Colosseum Bonus Disc", | |
| 1: "Sapphire", | |
| 2: "Ruby", | |
| 3: "Emerald", | |
| 4: "FireRed", | |
| 5: "LeafGreen", | |
| 15: "Colosseum/XD" | |
| } | |
| return games.get(index,"Unknown Game") | |
| def getball(index): | |
| balls = { | |
| 1: "Master Ball", | |
| 2: "Ultra Ball", | |
| 3: "Great Ball", | |
| 4: "Poké Ball", | |
| 5: "Safari Ball", | |
| 6: "Net Ball", | |
| 7: "Dive Ball", | |
| 8: "Nest Ball", | |
| 9: "Repeat Ball", | |
| 10: "Timer Ball", | |
| 11: "Luxury Ball", | |
| 12: "Premier Ball", | |
| } | |
| return balls.get(index,"Unknown Ball") | |
| def getnature(index): | |
| natures = { | |
| 0: ("Hardy", (+00,+00,+00,+00,+00)), #neutral | |
| 1: ("Lonely", (+10,-10,+00,+00,+00)), | |
| 2: ("Brave", (+10,+00,-10,+00,+00)), | |
| 3: ("Adamant", (+10,+00,+00,-10,+00)), | |
| 4: ("Naughty", (+10,+00,+00,+00,-10)), | |
| 5: ("Bold", (-10,+10,+00,+00,+00)), | |
| 6: ("Docile", (+00,+00,+00,+00,+00)), #neutral | |
| 7: ("Relaxed", (+00,+10,-10,+00,+00)), | |
| 8: ("Impish", (+00,+10,+00,-10,+00)), | |
| 9: ("Lax", (+00,+10,+00,+00,-10)), | |
| 10: ("Timid", (-10,+00,+10,+00,+00)), | |
| 11: ("Hasty", (+00,-10,+10,+00,+00)), | |
| 12: ("Serious", (+00,+00,+00,+00,+00)), #neutral | |
| 13: ("Jolly", (+00,+00,+10,-10,+00)), | |
| 14: ("Naive", (+00,+00,+10,+00,-10)), | |
| 15: ("Modest", (-10,+00,+00,+10,+00)), | |
| 16: ("Mild", (+00,-10,+00,+10,+00)), | |
| 17: ("Quiet", (+00,+00,-10,+10,+00)), | |
| 18: ("Bashful", (+00,+00,+00,+00,+00)), #neutral | |
| 19: ("Rash", (+00,+00,+00,+10,-10)), | |
| 20: ("Calm", (-10,+00,+00,+00,+10)), | |
| 21: ("Gentle", (+00,-10,+00,+00,+10)), | |
| 22: ("Sassy", (+00,+00,-10,+00,+10)), | |
| 23: ("Careful", (+00,+00,+00,-10,+10)), | |
| 24: ("Quirky ", (+00,+00,+00,+00,+00)) #neutral | |
| } | |
| return natures.get(index, ("Error", (0,0,0,0,0))) | |
| def getbasestats(index): | |
| stats = { | |
| 1: (0x2d, 0x31, 0x31, 0x2d, 0x41, 0x41), | |
| 2: (0x3c, 0x3e, 0x3f, 0x3c, 0x50, 0x50), | |
| 3: (0x50, 0x52, 0x53, 0x50, 0x64, 0x64), | |
| 4: (0x27, 0x34, 0x2b, 0x41, 0x3c, 0x32), | |
| 5: (0x3a, 0x40, 0x3a, 0x50, 0x50, 0x41), | |
| 6: (0x4e, 0x54, 0x4e, 0x64, 0x6d, 0x55), | |
| 7: (0x2c, 0x30, 0x41, 0x2b, 0x32, 0x40), | |
| 8: (0x3b, 0x3f, 0x50, 0x3a, 0x41, 0x50), | |
| 9: (0x4f, 0x53, 0x64, 0x4e, 0x55, 0x69), | |
| 10: (0x2d, 0x1e, 0x23, 0x2d, 0x14, 0x14), | |
| 11: (0x32, 0x14, 0x37, 0x1e, 0x19, 0x19), | |
| 12: (0x3c, 0x2d, 0x32, 0x46, 0x50, 0x50), | |
| 13: (0x28, 0x23, 0x1e, 0x32, 0x14, 0x14), | |
| 14: (0x2d, 0x19, 0x32, 0x23, 0x19, 0x19), | |
| 15: (0x41, 0x50, 0x28, 0x4b, 0x2d, 0x50), | |
| 16: (0x28, 0x2d, 0x28, 0x38, 0x23, 0x23), | |
| 17: (0x3f, 0x3c, 0x37, 0x47, 0x32, 0x32), | |
| 18: (0x53, 0x50, 0x4b, 0x5b, 0x46, 0x46), | |
| 19: (0x1e, 0x38, 0x23, 0x48, 0x19, 0x23), | |
| 20: (0x37, 0x51, 0x3c, 0x61, 0x32, 0x46), | |
| 21: (0x28, 0x3c, 0x1e, 0x46, 0x1f, 0x1f), | |
| 22: (0x41, 0x5a, 0x41, 0x64, 0x3d, 0x3d), | |
| 23: (0x23, 0x3c, 0x2c, 0x37, 0x28, 0x36), | |
| 24: (0x3c, 0x55, 0x45, 0x50, 0x41, 0x4f), | |
| 25: (0x23, 0x37, 0x1e, 0x5a, 0x32, 0x28), | |
| 26: (0x3c, 0x5a, 0x37, 0x64, 0x5a, 0x50), | |
| 27: (0x32, 0x4b, 0x55, 0x28, 0x14, 0x1e), | |
| 28: (0x4b, 0x64, 0x6e, 0x41, 0x2d, 0x37), | |
| 29: (0x37, 0x2f, 0x34, 0x29, 0x28, 0x28), | |
| 30: (0x46, 0x3e, 0x43, 0x38, 0x37, 0x37), | |
| 31: (0x5a, 0x52, 0x57, 0x4c, 0x4b, 0x55), | |
| 32: (0x2e, 0x39, 0x28, 0x32, 0x28, 0x28), | |
| 33: (0x3d, 0x48, 0x39, 0x41, 0x37, 0x37), | |
| 34: (0x51, 0x5c, 0x4d, 0x55, 0x55, 0x4b), | |
| 35: (0x46, 0x2d, 0x30, 0x23, 0x3c, 0x41), | |
| 36: (0x5f, 0x46, 0x49, 0x3c, 0x55, 0x5a), | |
| 37: (0x26, 0x29, 0x28, 0x41, 0x32, 0x41), | |
| 38: (0x49, 0x4c, 0x4b, 0x64, 0x51, 0x64), | |
| 39: (0x73, 0x2d, 0x14, 0x14, 0x2d, 0x19), | |
| 40: (0x8c, 0x46, 0x2d, 0x2d, 0x4b, 0x32), | |
| 41: (0x28, 0x2d, 0x23, 0x37, 0x1e, 0x28), | |
| 42: (0x4b, 0x50, 0x46, 0x5a, 0x41, 0x4b), | |
| 43: (0x2d, 0x32, 0x37, 0x1e, 0x4b, 0x41), | |
| 44: (0x3c, 0x41, 0x46, 0x28, 0x55, 0x4b), | |
| 45: (0x4b, 0x50, 0x55, 0x32, 0x64, 0x5a), | |
| 46: (0x23, 0x46, 0x37, 0x19, 0x2d, 0x37), | |
| 47: (0x3c, 0x5f, 0x50, 0x1e, 0x3c, 0x50), | |
| 48: (0x3c, 0x37, 0x32, 0x2d, 0x28, 0x37), | |
| 49: (0x46, 0x41, 0x3c, 0x5a, 0x5a, 0x4b), | |
| 50: (0x0a, 0x37, 0x19, 0x5f, 0x23, 0x2d), | |
| 51: (0x23, 0x50, 0x32, 0x78, 0x32, 0x46), | |
| 52: (0x28, 0x2d, 0x23, 0x5a, 0x28, 0x28), | |
| 53: (0x41, 0x46, 0x3c, 0x73, 0x41, 0x41), | |
| 54: (0x32, 0x34, 0x30, 0x37, 0x41, 0x32), | |
| 55: (0x50, 0x52, 0x4e, 0x55, 0x5f, 0x50), | |
| 56: (0x28, 0x50, 0x23, 0x46, 0x23, 0x2d), | |
| 57: (0x41, 0x69, 0x3c, 0x5f, 0x3c, 0x46), | |
| 58: (0x37, 0x46, 0x2d, 0x3c, 0x46, 0x32), | |
| 59: (0x5a, 0x6e, 0x50, 0x5f, 0x64, 0x50), | |
| 60: (0x28, 0x32, 0x28, 0x5a, 0x28, 0x28), | |
| 61: (0x41, 0x41, 0x41, 0x5a, 0x32, 0x32), | |
| 62: (0x5a, 0x55, 0x5f, 0x46, 0x46, 0x5a), | |
| 63: (0x19, 0x14, 0x0f, 0x5a, 0x69, 0x37), | |
| 64: (0x28, 0x23, 0x1e, 0x69, 0x78, 0x46), | |
| 65: (0x37, 0x32, 0x2d, 0x78, 0x87, 0x55), | |
| 66: (0x46, 0x50, 0x32, 0x23, 0x23, 0x23), | |
| 67: (0x50, 0x64, 0x46, 0x2d, 0x32, 0x3c), | |
| 68: (0x5a, 0x82, 0x50, 0x37, 0x41, 0x55), | |
| 69: (0x32, 0x4b, 0x23, 0x28, 0x46, 0x1e), | |
| 70: (0x41, 0x5a, 0x32, 0x37, 0x55, 0x2d), | |
| 71: (0x50, 0x69, 0x41, 0x46, 0x64, 0x3c), | |
| 72: (0x28, 0x28, 0x23, 0x46, 0x32, 0x64), | |
| 73: (0x50, 0x46, 0x41, 0x64, 0x50, 0x78), | |
| 74: (0x28, 0x50, 0x64, 0x14, 0x1e, 0x1e), | |
| 75: (0x37, 0x5f, 0x73, 0x23, 0x2d, 0x2d), | |
| 76: (0x50, 0x6e, 0x82, 0x2d, 0x37, 0x41), | |
| 77: (0x32, 0x55, 0x37, 0x5a, 0x41, 0x41), | |
| 78: (0x41, 0x64, 0x46, 0x69, 0x50, 0x50), | |
| 79: (0x5a, 0x41, 0x41, 0x0f, 0x28, 0x28), | |
| 80: (0x5f, 0x4b, 0x6e, 0x1e, 0x64, 0x50), | |
| 81: (0x19, 0x23, 0x46, 0x2d, 0x5f, 0x37), | |
| 82: (0x32, 0x3c, 0x5f, 0x46, 0x78, 0x46), | |
| 83: (0x34, 0x41, 0x37, 0x3c, 0x3a, 0x3e), | |
| 84: (0x23, 0x55, 0x2d, 0x4b, 0x23, 0x23), | |
| 85: (0x3c, 0x6e, 0x46, 0x64, 0x3c, 0x3c), | |
| 86: (0x41, 0x2d, 0x37, 0x2d, 0x2d, 0x46), | |
| 87: (0x5a, 0x46, 0x50, 0x46, 0x46, 0x5f), | |
| 88: (0x50, 0x50, 0x32, 0x19, 0x28, 0x32), | |
| 89: (0x69, 0x69, 0x4b, 0x32, 0x41, 0x64), | |
| 90: (0x1e, 0x41, 0x64, 0x28, 0x2d, 0x19), | |
| 91: (0x32, 0x5f, 0xb4, 0x46, 0x55, 0x2d), | |
| 92: (0x1e, 0x23, 0x1e, 0x50, 0x64, 0x23), | |
| 93: (0x2d, 0x32, 0x2d, 0x5f, 0x73, 0x37), | |
| 94: (0x3c, 0x41, 0x3c, 0x6e, 0x82, 0x4b), | |
| 95: (0x23, 0x2d, 0xa0, 0x46, 0x1e, 0x2d), | |
| 96: (0x3c, 0x30, 0x2d, 0x2a, 0x2b, 0x5a), | |
| 97: (0x55, 0x49, 0x46, 0x43, 0x49, 0x73), | |
| 98: (0x1e, 0x69, 0x5a, 0x32, 0x19, 0x19), | |
| 99: (0x37, 0x82, 0x73, 0x4b, 0x32, 0x32), | |
| 100: (0x28, 0x1e, 0x32, 0x64, 0x37, 0x37), | |
| 101: (0x3c, 0x32, 0x46, 0x8c, 0x50, 0x50), | |
| 102: (0x3c, 0x28, 0x50, 0x28, 0x3c, 0x2d), | |
| 103: (0x5f, 0x5f, 0x55, 0x37, 0x7d, 0x41), | |
| 104: (0x32, 0x32, 0x5f, 0x23, 0x28, 0x32), | |
| 105: (0x3c, 0x50, 0x6e, 0x2d, 0x32, 0x50), | |
| 106: (0x32, 0x78, 0x35, 0x57, 0x23, 0x6e), | |
| 107: (0x32, 0x69, 0x4f, 0x4c, 0x23, 0x6e), | |
| 108: (0x5a, 0x37, 0x4b, 0x1e, 0x3c, 0x4b), | |
| 109: (0x28, 0x41, 0x5f, 0x23, 0x3c, 0x2d), | |
| 110: (0x41, 0x5a, 0x78, 0x3c, 0x55, 0x46), | |
| 111: (0x50, 0x55, 0x5f, 0x19, 0x1e, 0x1e), | |
| 112: (0x69, 0x82, 0x78, 0x28, 0x2d, 0x2d), | |
| 113: (0xfa, 0x05, 0x05, 0x32, 0x23, 0x69), | |
| 114: (0x41, 0x37, 0x73, 0x3c, 0x64, 0x28), | |
| 115: (0x69, 0x5f, 0x50, 0x5a, 0x28, 0x50), | |
| 116: (0x1e, 0x28, 0x46, 0x3c, 0x46, 0x19), | |
| 117: (0x37, 0x41, 0x5f, 0x55, 0x5f, 0x2d), | |
| 118: (0x2d, 0x43, 0x3c, 0x3f, 0x23, 0x32), | |
| 119: (0x50, 0x5c, 0x41, 0x44, 0x41, 0x50), | |
| 120: (0x1e, 0x2d, 0x37, 0x55, 0x46, 0x37), | |
| 121: (0x3c, 0x4b, 0x55, 0x73, 0x64, 0x55), | |
| 122: (0x28, 0x2d, 0x41, 0x5a, 0x64, 0x78), | |
| 123: (0x46, 0x6e, 0x50, 0x69, 0x37, 0x50), | |
| 124: (0x41, 0x32, 0x23, 0x5f, 0x73, 0x5f), | |
| 125: (0x41, 0x53, 0x39, 0x69, 0x5f, 0x55), | |
| 126: (0x41, 0x5f, 0x39, 0x5d, 0x64, 0x55), | |
| 127: (0x41, 0x7d, 0x64, 0x55, 0x37, 0x46), | |
| 128: (0x4b, 0x64, 0x5f, 0x6e, 0x28, 0x46), | |
| 129: (0x14, 0x0a, 0x37, 0x50, 0x0f, 0x14), | |
| 130: (0x5f, 0x7d, 0x4f, 0x51, 0x3c, 0x64), | |
| 131: (0x82, 0x55, 0x50, 0x3c, 0x55, 0x5f), | |
| 132: (0x30, 0x30, 0x30, 0x30, 0x30, 0x30), | |
| 133: (0x37, 0x37, 0x32, 0x37, 0x2d, 0x41), | |
| 134: (0x82, 0x41, 0x3c, 0x41, 0x6e, 0x5f), | |
| 135: (0x41, 0x41, 0x3c, 0x82, 0x6e, 0x5f), | |
| 136: (0x41, 0x82, 0x3c, 0x41, 0x5f, 0x6e), | |
| 137: (0x41, 0x3c, 0x46, 0x28, 0x55, 0x4b), | |
| 138: (0x23, 0x28, 0x64, 0x23, 0x5a, 0x37), | |
| 139: (0x46, 0x3c, 0x7d, 0x37, 0x73, 0x46), | |
| 140: (0x1e, 0x50, 0x5a, 0x37, 0x37, 0x2d), | |
| 141: (0x3c, 0x73, 0x69, 0x50, 0x41, 0x46), | |
| 142: (0x50, 0x69, 0x41, 0x82, 0x3c, 0x4b), | |
| 143: (0xa0, 0x6e, 0x41, 0x1e, 0x41, 0x6e), | |
| 144: (0x5a, 0x55, 0x64, 0x55, 0x5f, 0x7d), | |
| 145: (0x5a, 0x5a, 0x55, 0x64, 0x7d, 0x5a), | |
| 146: (0x5a, 0x64, 0x5a, 0x5a, 0x7d, 0x55), | |
| 147: (0x29, 0x40, 0x2d, 0x32, 0x32, 0x32), | |
| 148: (0x3d, 0x54, 0x41, 0x46, 0x46, 0x46), | |
| 149: (0x5b, 0x86, 0x5f, 0x50, 0x64, 0x64), | |
| 150: (0x6a, 0x6e, 0x5a, 0x82, 0x9a, 0x5a), | |
| 151: (0x64, 0x64, 0x64, 0x64, 0x64, 0x64), | |
| 152: (0x2d, 0x31, 0x41, 0x2d, 0x31, 0x41), | |
| 153: (0x3c, 0x3e, 0x50, 0x3c, 0x3f, 0x50), | |
| 154: (0x50, 0x52, 0x64, 0x50, 0x53, 0x64), | |
| 155: (0x27, 0x34, 0x2b, 0x41, 0x3c, 0x32), | |
| 156: (0x3a, 0x40, 0x3a, 0x50, 0x50, 0x41), | |
| 157: (0x4e, 0x54, 0x4e, 0x64, 0x6d, 0x55), | |
| 158: (0x32, 0x41, 0x40, 0x2b, 0x2c, 0x30), | |
| 159: (0x41, 0x50, 0x50, 0x3a, 0x3b, 0x3f), | |
| 160: (0x55, 0x69, 0x64, 0x4e, 0x4f, 0x53), | |
| 161: (0x23, 0x2e, 0x22, 0x14, 0x23, 0x2d), | |
| 162: (0x55, 0x4c, 0x40, 0x5a, 0x2d, 0x37), | |
| 163: (0x3c, 0x1e, 0x1e, 0x32, 0x24, 0x38), | |
| 164: (0x64, 0x32, 0x32, 0x46, 0x4c, 0x60), | |
| 165: (0x28, 0x14, 0x1e, 0x37, 0x28, 0x50), | |
| 166: (0x37, 0x23, 0x32, 0x55, 0x37, 0x6e), | |
| 167: (0x28, 0x3c, 0x28, 0x1e, 0x28, 0x28), | |
| 168: (0x46, 0x5a, 0x46, 0x28, 0x3c, 0x3c), | |
| 169: (0x55, 0x5a, 0x50, 0x82, 0x46, 0x50), | |
| 170: (0x4b, 0x26, 0x26, 0x43, 0x38, 0x38), | |
| 171: (0x7d, 0x3a, 0x3a, 0x43, 0x4c, 0x4c), | |
| 172: (0x14, 0x28, 0x0f, 0x3c, 0x23, 0x23), | |
| 173: (0x32, 0x19, 0x1c, 0x0f, 0x2d, 0x37), | |
| 174: (0x5a, 0x1e, 0x0f, 0x0f, 0x28, 0x14), | |
| 175: (0x23, 0x14, 0x41, 0x14, 0x28, 0x41), | |
| 176: (0x37, 0x28, 0x55, 0x28, 0x50, 0x69), | |
| 177: (0x28, 0x32, 0x2d, 0x46, 0x46, 0x2d), | |
| 178: (0x41, 0x4b, 0x46, 0x5f, 0x5f, 0x46), | |
| 179: (0x37, 0x28, 0x28, 0x23, 0x41, 0x2d), | |
| 180: (0x46, 0x37, 0x37, 0x2d, 0x50, 0x3c), | |
| 181: (0x5a, 0x4b, 0x4b, 0x37, 0x73, 0x5a), | |
| 182: (0x4b, 0x50, 0x55, 0x32, 0x5a, 0x64), | |
| 183: (0x46, 0x14, 0x32, 0x28, 0x14, 0x32), | |
| 184: (0x64, 0x32, 0x50, 0x32, 0x32, 0x50), | |
| 185: (0x46, 0x64, 0x73, 0x1e, 0x1e, 0x41), | |
| 186: (0x5a, 0x4b, 0x4b, 0x46, 0x5a, 0x64), | |
| 187: (0x23, 0x23, 0x28, 0x32, 0x23, 0x37), | |
| 188: (0x37, 0x2d, 0x32, 0x50, 0x2d, 0x41), | |
| 189: (0x4b, 0x37, 0x46, 0x6e, 0x37, 0x55), | |
| 190: (0x37, 0x46, 0x37, 0x55, 0x28, 0x37), | |
| 191: (0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e), | |
| 192: (0x4b, 0x4b, 0x37, 0x1e, 0x69, 0x55), | |
| 193: (0x41, 0x41, 0x2d, 0x5f, 0x4b, 0x2d), | |
| 194: (0x37, 0x2d, 0x2d, 0x0f, 0x19, 0x19), | |
| 195: (0x5f, 0x55, 0x55, 0x23, 0x41, 0x41), | |
| 196: (0x41, 0x41, 0x3c, 0x6e, 0x82, 0x5f), | |
| 197: (0x5f, 0x41, 0x6e, 0x41, 0x3c, 0x82), | |
| 198: (0x3c, 0x55, 0x2a, 0x5b, 0x55, 0x2a), | |
| 199: (0x5f, 0x4b, 0x50, 0x1e, 0x64, 0x6e), | |
| 200: (0x3c, 0x3c, 0x3c, 0x55, 0x55, 0x55), | |
| 201: (0x30, 0x48, 0x30, 0x30, 0x48, 0x30), | |
| 202: (0xbe, 0x21, 0x3a, 0x21, 0x21, 0x3a), | |
| 203: (0x46, 0x50, 0x41, 0x55, 0x5a, 0x41), | |
| 204: (0x32, 0x41, 0x5a, 0x0f, 0x23, 0x23), | |
| 205: (0x4b, 0x5a, 0x8c, 0x28, 0x3c, 0x3c), | |
| 206: (0x64, 0x46, 0x46, 0x2d, 0x41, 0x41), | |
| 207: (0x41, 0x4b, 0x69, 0x55, 0x23, 0x41), | |
| 208: (0x4b, 0x55, 0xc8, 0x1e, 0x37, 0x41), | |
| 209: (0x3c, 0x50, 0x32, 0x1e, 0x28, 0x28), | |
| 210: (0x5a, 0x78, 0x4b, 0x2d, 0x3c, 0x3c), | |
| 211: (0x41, 0x5f, 0x4b, 0x55, 0x37, 0x37), | |
| 212: (0x46, 0x82, 0x64, 0x41, 0x37, 0x50), | |
| 213: (0x14, 0x0a, 0xe6, 0x05, 0x0a, 0xe6), | |
| 214: (0x50, 0x7d, 0x4b, 0x55, 0x28, 0x5f), | |
| 215: (0x37, 0x5f, 0x37, 0x73, 0x23, 0x4b), | |
| 216: (0x3c, 0x50, 0x32, 0x28, 0x32, 0x32), | |
| 217: (0x5a, 0x82, 0x4b, 0x37, 0x4b, 0x4b), | |
| 218: (0x28, 0x28, 0x28, 0x14, 0x46, 0x28), | |
| 219: (0x32, 0x32, 0x78, 0x1e, 0x50, 0x50), | |
| 220: (0x32, 0x32, 0x28, 0x32, 0x1e, 0x1e), | |
| 221: (0x64, 0x64, 0x50, 0x32, 0x3c, 0x3c), | |
| 222: (0x37, 0x37, 0x55, 0x23, 0x41, 0x55), | |
| 223: (0x23, 0x41, 0x23, 0x41, 0x41, 0x23), | |
| 224: (0x4b, 0x69, 0x4b, 0x2d, 0x69, 0x4b), | |
| 225: (0x2d, 0x37, 0x2d, 0x4b, 0x41, 0x2d), | |
| 226: (0x41, 0x28, 0x46, 0x46, 0x50, 0x8c), | |
| 227: (0x41, 0x50, 0x8c, 0x46, 0x28, 0x46), | |
| 228: (0x2d, 0x3c, 0x1e, 0x41, 0x50, 0x32), | |
| 229: (0x4b, 0x5a, 0x32, 0x5f, 0x6e, 0x50), | |
| 230: (0x4b, 0x5f, 0x5f, 0x55, 0x5f, 0x5f), | |
| 231: (0x5a, 0x3c, 0x3c, 0x28, 0x28, 0x28), | |
| 232: (0x5a, 0x78, 0x78, 0x32, 0x3c, 0x3c), | |
| 233: (0x55, 0x50, 0x5a, 0x3c, 0x69, 0x5f), | |
| 234: (0x49, 0x5f, 0x3e, 0x55, 0x55, 0x41), | |
| 235: (0x37, 0x14, 0x23, 0x4b, 0x14, 0x2d), | |
| 236: (0x23, 0x23, 0x23, 0x23, 0x23, 0x23), | |
| 237: (0x32, 0x5f, 0x5f, 0x46, 0x23, 0x6e), | |
| 238: (0x2d, 0x1e, 0x0f, 0x41, 0x55, 0x41), | |
| 239: (0x2d, 0x3f, 0x25, 0x5f, 0x41, 0x37), | |
| 240: (0x2d, 0x4b, 0x25, 0x53, 0x46, 0x37), | |
| 241: (0x5f, 0x50, 0x69, 0x64, 0x28, 0x46), | |
| 242: (0xff, 0x0a, 0x0a, 0x37, 0x4b, 0x87), | |
| 243: (0x5a, 0x55, 0x4b, 0x73, 0x73, 0x64), | |
| 244: (0x73, 0x73, 0x55, 0x64, 0x5a, 0x4b), | |
| 245: (0x64, 0x4b, 0x73, 0x55, 0x5a, 0x73), | |
| 246: (0x32, 0x40, 0x32, 0x29, 0x2d, 0x32), | |
| 247: (0x46, 0x54, 0x46, 0x33, 0x41, 0x46), | |
| 248: (0x64, 0x86, 0x6e, 0x3d, 0x5f, 0x64), | |
| 249: (0x6a, 0x5a, 0x82, 0x6e, 0x5a, 0x9a), | |
| 250: (0x6a, 0x82, 0x5a, 0x5a, 0x6e, 0x9a), | |
| 251: (0x64, 0x64, 0x64, 0x64, 0x64, 0x64), | |
| 252: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 253: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 254: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 255: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 256: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 257: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 258: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 259: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 260: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 261: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 262: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 263: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 264: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 265: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 266: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 267: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 268: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 269: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 270: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 271: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 272: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 273: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 274: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 275: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 276: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 277: (0x28, 0x2d, 0x23, 0x46, 0x41, 0x37), | |
| 278: (0x32, 0x41, 0x2d, 0x5f, 0x55, 0x41), | |
| 279: (0x46, 0x55, 0x41, 0x78, 0x69, 0x55), | |
| 280: (0x2d, 0x3c, 0x28, 0x2d, 0x46, 0x32), | |
| 281: (0x3c, 0x55, 0x3c, 0x37, 0x55, 0x3c), | |
| 282: (0x50, 0x78, 0x46, 0x50, 0x6e, 0x46), | |
| 283: (0x32, 0x46, 0x32, 0x28, 0x32, 0x32), | |
| 284: (0x46, 0x55, 0x46, 0x32, 0x3c, 0x46), | |
| 285: (0x64, 0x6e, 0x5a, 0x3c, 0x55, 0x5a), | |
| 286: (0x23, 0x37, 0x23, 0x23, 0x1e, 0x1e), | |
| 287: (0x46, 0x5a, 0x46, 0x46, 0x3c, 0x3c), | |
| 288: (0x26, 0x1e, 0x29, 0x3c, 0x1e, 0x29), | |
| 289: (0x4e, 0x46, 0x3d, 0x64, 0x32, 0x3d), | |
| 290: (0x2d, 0x2d, 0x23, 0x14, 0x14, 0x1e), | |
| 291: (0x32, 0x23, 0x37, 0x0f, 0x19, 0x19), | |
| 292: (0x3c, 0x46, 0x32, 0x41, 0x5a, 0x32), | |
| 293: (0x32, 0x23, 0x37, 0x0f, 0x19, 0x19), | |
| 294: (0x3c, 0x32, 0x46, 0x41, 0x32, 0x5a), | |
| 295: (0x28, 0x1e, 0x1e, 0x1e, 0x28, 0x32), | |
| 296: (0x3c, 0x32, 0x32, 0x32, 0x3c, 0x46), | |
| 297: (0x50, 0x46, 0x46, 0x46, 0x5a, 0x64), | |
| 298: (0x28, 0x28, 0x32, 0x1e, 0x1e, 0x1e), | |
| 299: (0x46, 0x46, 0x28, 0x3c, 0x3c, 0x28), | |
| 300: (0x5a, 0x64, 0x3c, 0x50, 0x5a, 0x3c), | |
| 301: (0x1f, 0x2d, 0x5a, 0x28, 0x1e, 0x1e), | |
| 302: (0x3d, 0x5a, 0x2d, 0xa0, 0x32, 0x32), | |
| 303: (0x01, 0x5a, 0x2d, 0x28, 0x1e, 0x1e), | |
| 304: (0x28, 0x37, 0x1e, 0x55, 0x1e, 0x1e), | |
| 305: (0x3c, 0x55, 0x3c, 0x7d, 0x32, 0x32), | |
| 306: (0x3c, 0x28, 0x3c, 0x23, 0x28, 0x3c), | |
| 307: (0x3c, 0x82, 0x50, 0x46, 0x3c, 0x3c), | |
| 308: (0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c), | |
| 309: (0x28, 0x1e, 0x1e, 0x55, 0x37, 0x1e), | |
| 310: (0x3c, 0x32, 0x64, 0x41, 0x55, 0x46), | |
| 311: (0x28, 0x1e, 0x20, 0x41, 0x32, 0x34), | |
| 312: (0x46, 0x3c, 0x3e, 0x3c, 0x50, 0x52), | |
| 313: (0x82, 0x46, 0x23, 0x3c, 0x46, 0x23), | |
| 314: (0xaa, 0x5a, 0x2d, 0x3c, 0x5a, 0x2d), | |
| 315: (0x32, 0x2d, 0x2d, 0x32, 0x23, 0x23), | |
| 316: (0x46, 0x41, 0x41, 0x46, 0x37, 0x37), | |
| 317: (0x3c, 0x5a, 0x46, 0x28, 0x3c, 0x78), | |
| 318: (0x28, 0x28, 0x37, 0x37, 0x28, 0x46), | |
| 319: (0x3c, 0x46, 0x69, 0x4b, 0x46, 0x78), | |
| 320: (0x1e, 0x2d, 0x87, 0x1e, 0x2d, 0x5a), | |
| 321: (0x46, 0x55, 0x8c, 0x14, 0x55, 0x46), | |
| 322: (0x32, 0x4b, 0x4b, 0x32, 0x41, 0x41), | |
| 323: (0x32, 0x30, 0x2b, 0x3c, 0x2e, 0x29), | |
| 324: (0x6e, 0x4e, 0x49, 0x3c, 0x4c, 0x47), | |
| 325: (0x2b, 0x1e, 0x37, 0x61, 0x28, 0x41), | |
| 326: (0x2b, 0x50, 0x41, 0x23, 0x32, 0x23), | |
| 327: (0x3f, 0x78, 0x55, 0x37, 0x5a, 0x37), | |
| 328: (0x14, 0x0f, 0x14, 0x50, 0x0a, 0x37), | |
| 329: (0x5f, 0x3c, 0x4f, 0x51, 0x64, 0x7d), | |
| 330: (0x2d, 0x5a, 0x14, 0x41, 0x41, 0x14), | |
| 331: (0x46, 0x78, 0x28, 0x5f, 0x5f, 0x28), | |
| 332: (0x2d, 0x64, 0x2d, 0x0a, 0x2d, 0x2d), | |
| 333: (0x32, 0x46, 0x32, 0x46, 0x32, 0x32), | |
| 334: (0x50, 0x64, 0x50, 0x64, 0x50, 0x50), | |
| 335: (0x48, 0x3c, 0x1e, 0x19, 0x14, 0x1e), | |
| 336: (0x90, 0x78, 0x3c, 0x32, 0x28, 0x3c), | |
| 337: (0x28, 0x2d, 0x28, 0x41, 0x41, 0x28), | |
| 338: (0x46, 0x4b, 0x3c, 0x69, 0x69, 0x3c), | |
| 339: (0x3c, 0x3c, 0x28, 0x23, 0x41, 0x2d), | |
| 340: (0x46, 0x64, 0x46, 0x28, 0x69, 0x4b), | |
| 341: (0x46, 0x28, 0x32, 0x19, 0x37, 0x32), | |
| 342: (0x5a, 0x3c, 0x46, 0x2d, 0x4b, 0x46), | |
| 343: (0x6e, 0x50, 0x5a, 0x41, 0x5f, 0x5a), | |
| 344: (0x32, 0x55, 0x28, 0x23, 0x55, 0x28), | |
| 345: (0x46, 0x73, 0x3c, 0x37, 0x73, 0x3c), | |
| 346: (0x32, 0x32, 0x32, 0x32, 0x32, 0x32), | |
| 347: (0x50, 0x50, 0x50, 0x50, 0x50, 0x50), | |
| 348: (0x46, 0x37, 0x41, 0x46, 0x5f, 0x55), | |
| 349: (0x46, 0x5f, 0x55, 0x46, 0x37, 0x41), | |
| 350: (0x32, 0x14, 0x28, 0x14, 0x14, 0x28), | |
| 351: (0x3c, 0x19, 0x23, 0x3c, 0x46, 0x50), | |
| 352: (0x50, 0x2d, 0x41, 0x50, 0x5a, 0x6e), | |
| 353: (0x3c, 0x32, 0x28, 0x5f, 0x55, 0x4b), | |
| 354: (0x3c, 0x28, 0x32, 0x5f, 0x4b, 0x55), | |
| 355: (0x32, 0x55, 0x55, 0x32, 0x37, 0x37), | |
| 356: (0x1e, 0x28, 0x37, 0x3c, 0x28, 0x37), | |
| 357: (0x3c, 0x3c, 0x4b, 0x50, 0x3c, 0x4b), | |
| 358: (0x2d, 0x28, 0x3c, 0x32, 0x28, 0x4b), | |
| 359: (0x4b, 0x46, 0x5a, 0x50, 0x46, 0x69), | |
| 360: (0x5f, 0x17, 0x30, 0x17, 0x17, 0x30), | |
| 361: (0x14, 0x28, 0x5a, 0x19, 0x1e, 0x5a), | |
| 362: (0x28, 0x46, 0x82, 0x19, 0x3c, 0x82), | |
| 363: (0x32, 0x3c, 0x2d, 0x41, 0x64, 0x50), | |
| 364: (0x3c, 0x3c, 0x3c, 0x1e, 0x23, 0x23), | |
| 365: (0x50, 0x50, 0x50, 0x5a, 0x37, 0x37), | |
| 366: (0x96, 0xa0, 0x64, 0x64, 0x5f, 0x41), | |
| 367: (0x46, 0x2b, 0x35, 0x28, 0x2b, 0x35), | |
| 368: (0x64, 0x49, 0x53, 0x37, 0x49, 0x53), | |
| 369: (0x63, 0x44, 0x53, 0x33, 0x48, 0x57), | |
| 370: (0x40, 0x33, 0x17, 0x1c, 0x33, 0x17), | |
| 371: (0x54, 0x47, 0x2b, 0x30, 0x47, 0x2b), | |
| 372: (0x68, 0x5b, 0x3f, 0x44, 0x5b, 0x3f), | |
| 373: (0x23, 0x40, 0x55, 0x20, 0x4a, 0x37), | |
| 374: (0x37, 0x68, 0x69, 0x34, 0x5e, 0x4b), | |
| 375: (0x37, 0x54, 0x69, 0x34, 0x72, 0x4b), | |
| 376: (0x41, 0x82, 0x3c, 0x4b, 0x4b, 0x3c), | |
| 377: (0x2c, 0x4b, 0x23, 0x2d, 0x3f, 0x21), | |
| 378: (0x40, 0x73, 0x41, 0x41, 0x53, 0x3f), | |
| 379: (0x49, 0x64, 0x3c, 0x41, 0x64, 0x3c), | |
| 380: (0x49, 0x73, 0x3c, 0x5a, 0x3c, 0x3c), | |
| 381: (0x64, 0x5a, 0x82, 0x37, 0x2d, 0x41), | |
| 382: (0x32, 0x46, 0x64, 0x1e, 0x28, 0x28), | |
| 383: (0x3c, 0x5a, 0x8c, 0x28, 0x32, 0x32), | |
| 384: (0x46, 0x6e, 0xb4, 0x32, 0x3c, 0x3c), | |
| 385: (0x46, 0x46, 0x46, 0x46, 0x46, 0x46), | |
| 386: (0x41, 0x49, 0x37, 0x55, 0x2f, 0x4b), | |
| 387: (0x41, 0x2f, 0x37, 0x55, 0x49, 0x4b), | |
| 388: (0x42, 0x29, 0x4d, 0x17, 0x3d, 0x57), | |
| 389: (0x56, 0x51, 0x61, 0x2b, 0x51, 0x6b), | |
| 390: (0x2d, 0x5f, 0x32, 0x4b, 0x28, 0x32), | |
| 391: (0x4b, 0x7d, 0x64, 0x2d, 0x46, 0x50), | |
| 392: (0x1c, 0x19, 0x19, 0x28, 0x2d, 0x23), | |
| 393: (0x26, 0x23, 0x23, 0x32, 0x41, 0x37), | |
| 394: (0x44, 0x41, 0x41, 0x50, 0x7d, 0x73), | |
| 395: (0x2d, 0x4b, 0x3c, 0x32, 0x28, 0x1e), | |
| 396: (0x41, 0x5f, 0x64, 0x32, 0x3c, 0x32), | |
| 397: (0x5f, 0x87, 0x50, 0x64, 0x6e, 0x50), | |
| 398: (0x28, 0x37, 0x50, 0x1e, 0x23, 0x3c), | |
| 399: (0x3c, 0x4b, 0x64, 0x32, 0x37, 0x50), | |
| 400: (0x50, 0x87, 0x82, 0x46, 0x5f, 0x5a), | |
| 401: (0x50, 0x64, 0xc8, 0x32, 0x32, 0x64), | |
| 402: (0x50, 0x32, 0x64, 0x32, 0x64, 0xc8), | |
| 403: (0x50, 0x4b, 0x96, 0x32, 0x4b, 0x96), | |
| 404: (0x64, 0x64, 0x5a, 0x5a, 0x96, 0x8c), | |
| 405: (0x64, 0x96, 0x8c, 0x5a, 0x64, 0x5a), | |
| 406: (0x69, 0x96, 0x5a, 0x5f, 0x96, 0x5a), | |
| 407: (0x50, 0x50, 0x5a, 0x6e, 0x6e, 0x82), | |
| 408: (0x50, 0x5a, 0x50, 0x6e, 0x82, 0x6e), | |
| 409: (0x64, 0x64, 0x64, 0x64, 0x64, 0x64), | |
| 410: (0x32, 0x96, 0x32, 0x96, 0x96, 0x32), | |
| 411: (0x41, 0x32, 0x46, 0x41, 0x5f, 0x50) | |
| } | |
| return stats.get(index, (0,0,0,0,0,0)) | |
| with open(args.pokemon, mode='rb') as pokefile: | |
| pokecontent = pokefile.read() | |
| unpacked = struct.unpack("4H10BH7BBHH48BIBB7H",pokecontent) | |
| #print(unpacked) | |
| pvl = unpacked[0] | |
| pvh = unpacked[1] | |
| pv = (pvh << 16) + pvl | |
| print("Personality value: %010d (%05d,%05d)" % (pv,pvl,pvh)) | |
| tid = unpacked[2] | |
| sid = unpacked[3] | |
| print("Trainer ID: %05d" % (tid)) | |
| print("Secret ID: %05d" % (sid)) | |
| addkey = [] | |
| keyl = pvl ^ tid | |
| addkey.append(keyl & 255) | |
| addkey.append(keyl >> 8) | |
| keyh = pvh ^ sid | |
| addkey.append(keyh & 255) | |
| addkey.append(keyh >> 8) | |
| key = (keyh << 16) + keyl | |
| nickname = ''.join(map(translate, unpacked[4:14])) | |
| print("Nickname: %s" % (nickname)) | |
| print("Nickname bytes: %s" % (','.join(map(str,unpacked[4:14])))) | |
| langcode = unpacked[14] | |
| print("Language: %3x %s" % (langcode,language(langcode))) | |
| trainername = ''.join(map(translate, unpacked[15:22])) | |
| print("Trainer name: %s" % (trainername)) | |
| print("Trainer name bytes: %s" % (','.join(map(str,unpacked[15:22])))) | |
| marks = unpacked[22] | |
| print("Markings: %s" % (markings(marks))) | |
| checksum = unpacked[23] | |
| print("Checksum: %d" % (checksum)) | |
| zeros = unpacked[24] | |
| print("Zero: %d" % (zeros)) | |
| data = list(unpacked[25:73]) | |
| decrypted = [] | |
| calcsum = 0 | |
| for i, byte in enumerate(data): | |
| decbyte = byte ^ addkey[i%4] | |
| if i % 2 == 0: | |
| calcsum += decbyte | |
| else: | |
| calcsum += decbyte << 8 | |
| decrypted.append(decbyte) | |
| calcsum = calcsum & 65535 | |
| print("Calculated checksum: %d" % (calcsum)) | |
| orderindex = pv % 24 | |
| order = getorder(orderindex) | |
| print("Substructure order: %s" % (order)) | |
| try: | |
| growthindex = order.index("G") | |
| offset = growthindex * 12 | |
| species = decrypted[offset] + (decrypted[offset + 1] << 8) | |
| speciesname = getspecies(species) | |
| print("(G) Species: %03d %s" % (species,speciesname)) | |
| helditem = decrypted[offset+2] + (decrypted[offset + 3] << 8) | |
| helditemname = getitem(helditem) | |
| print("(G) Held Item: %03d %s" % (helditem,helditemname)) | |
| experience = decrypted[offset+4] + ((decrypted[offset + 5] + (decrypted[offset + 6] + (decrypted[offset + 7] << 8)) << 8) << 8) | |
| print("(G) Experience: %07d" % (experience)) | |
| ppbonus = decrypted[offset + 8] | |
| ppbonus1 = ppbonus % 4 | |
| ppbonus2 = (ppbonus >> 2) % 4 | |
| ppbonus3 = (ppbonus >> 4) % 4 | |
| ppbonus4 = (ppbonus >> 6) % 4 | |
| print("(G) Move 1 PP Boost: %1d" % (ppbonus1)) | |
| print("(G) Move 2 PP Boost: %1d" % (ppbonus2)) | |
| print("(G) Move 3 PP Boost: %1d" % (ppbonus3)) | |
| print("(G) Move 4 PP Boost: %1d" % (ppbonus4)) | |
| friendship = decrypted[offset + 9] | |
| print("(G) Friendship: %03d" % (friendship)) | |
| unknownval = decrypted[offset+10] + (decrypted[offset + 11] << 8) | |
| print("(G) Unknown Value: %05d" % (unknownval)) | |
| except ValueError: | |
| print("Unable to get growth data") | |
| try: | |
| attackindex = order.index("A") | |
| offset = attackindex * 12 | |
| move1 = decrypted[offset + 0] + (decrypted[offset + 1] << 8) | |
| move2 = decrypted[offset + 2] + (decrypted[offset + 3] << 8) | |
| move3 = decrypted[offset + 4] + (decrypted[offset + 5] << 8) | |
| move4 = decrypted[offset + 6] + (decrypted[offset + 7] << 8) | |
| move1name = getmovename(move1) | |
| move2name = getmovename(move2) | |
| move3name = getmovename(move3) | |
| move4name = getmovename(move4) | |
| print("(A) Move 1: %03d %s" % (move1, move1name)) | |
| print("(A) Move 2: %03d %s" % (move2, move2name)) | |
| print("(A) Move 3: %03d %s" % (move3, move3name)) | |
| print("(A) Move 4: %03d %s" % (move4, move4name)) | |
| pp1 = decrypted[offset + 8] | |
| pp2 = decrypted[offset + 9] | |
| pp3 = decrypted[offset + 10] | |
| pp4 = decrypted[offset + 11] | |
| print("(A) PP 1: %02d" % (pp1)) | |
| print("(A) PP 2: %02d" % (pp2)) | |
| print("(A) PP 3: %02d" % (pp3)) | |
| print("(A) PP 4: %02d" % (pp4)) | |
| except ValueError: | |
| print("Unable to get attack data") | |
| try: | |
| evindex = order.index("E") | |
| offset = evindex * 12 | |
| hpev = decrypted[offset + 0] | |
| atkev = decrypted[offset + 1] | |
| defev = decrypted[offset + 2] | |
| spdev = decrypted[offset + 3] | |
| spatkev = decrypted[offset + 4] | |
| spdefev = decrypted[offset + 5] | |
| print("(E) HP EV: %03d" % (hpev)) | |
| print("(E) Atk EV: %03d" % (atkev)) | |
| print("(E) Def EV: %03d" % (defev)) | |
| print("(E) Spd EV: %03d" % (spdev)) | |
| print("(E) SpAtk EV: %03d" % (spatkev)) | |
| print("(E) SpDef EV: %03d" % (spdefev)) | |
| cool = decrypted[offset + 6] | |
| beau = decrypted[offset + 7] | |
| cute = decrypted[offset + 8] | |
| smrt = decrypted[offset + 9] | |
| togh = decrypted[offset + 10] | |
| feel = decrypted[offset + 11] | |
| print("(E) Coolness: %03d" % (cool)) | |
| print("(E) Beauty: %03d" % (beau)) | |
| print("(E) Cuteness: %03d" % (cute)) | |
| print("(E) Smartness: %03d" % (smrt)) | |
| print("(E) Toughness: %03d" % (togh)) | |
| print("(E) Feel: %03d" % (feel)) | |
| except ValueError: | |
| print("Unable to get EV and Condition data") | |
| try: | |
| miscindex = order.index("M") | |
| offset = miscindex * 12 | |
| pokerus = decrypted[offset + 0] | |
| print("(M) Pokerus: %03d [strain:%02d] [counter:%d]" % (pokerus,pokerus>>3,pokerus%8)) | |
| location = decrypted[offset + 1] | |
| print("(M) Location: %03d" % (location)) | |
| origins = decrypted[offset + 2] + (decrypted[offset + 3] << 8) | |
| levelmet = origins % 128 | |
| if levelmet == 0: | |
| print("(M) Origin: Hatched") | |
| else: | |
| print("(M) Level met: %03d" % (levelmet)) | |
| game = (origins >> 7) % 16 | |
| print("(M) Game: %03d %s" % (game, getgame(game))) | |
| ball = (origins >> 11) % 16 | |
| print("(M) Caught in: %03d %s" % (ball, getball(ball))) | |
| if origins >> 15 == 0: | |
| print("(M) OT Gender: ♂") | |
| else: | |
| print("(M) OT Gender: ♀") | |
| ivs = decrypted[offset + 7] | |
| ivs = (ivs << 8) + decrypted[offset + 6] | |
| ivs = (ivs << 8) + decrypted[offset + 5] | |
| ivs = (ivs << 8) + decrypted[offset + 4] | |
| hpiv = ivs % 32 | |
| atkiv = (ivs >> 5) % 32 | |
| defiv = (ivs >> 10) % 32 | |
| spdiv = (ivs >> 15) % 32 | |
| spatkiv = (ivs >> 20) % 32 | |
| spdefiv = (ivs >> 25) % 32 | |
| egg = (ivs >> 30) & 1 | |
| ability = (ivs >> 31) & 1 | |
| print("(M) HP IV: %03d" % (hpiv)) | |
| print("(M) Atk IV: %03d" % (atkiv)) | |
| print("(M) Def IV: %03d" % (defiv)) | |
| print("(M) Spd IV: %03d" % (spdiv)) | |
| print("(M) SpAtk IV: %03d" % (spatkiv)) | |
| print("(M) SpDef IV: %03d" % (spdefiv)) | |
| if egg == 1: | |
| print("(M) Egg: Yes") | |
| else: | |
| print("(M) Egg: No") | |
| if ability == 0: | |
| print("(M) Ability: First") | |
| else: | |
| print("(M) Ability: Second") | |
| ribbons = decrypted[offset+8] + ((decrypted[offset + 9] + (decrypted[offset + 10] + (decrypted[offset + 11] << 8)) << 8) << 8) | |
| coolrib = ribbons % 8 | |
| beaurib = (ribbons >> 3) % 8 | |
| cuterib = (ribbons >> 6) % 8 | |
| smrtrib = (ribbons >> 9) % 8 | |
| toghrib = (ribbons >> 12) % 8 | |
| champion = (ribbons >> 15) & 1 | |
| winning = (ribbons >> 16) & 1 | |
| victory = (ribbons >> 17) & 1 | |
| artist = (ribbons >> 18) & 1 | |
| effort = (ribbons >> 19) & 1 | |
| special = (ribbons >> 20) & 63 | |
| obedient = (ribbons >> 31) & 1 | |
| if coolrib > 0: | |
| print("(M) Coolness Ribbon: %2d",coolrib) | |
| if beaurib > 0: | |
| print("(M) Beauty Ribbon: %2d",beaurib) | |
| if cuterib > 0: | |
| print("(M) Cuteness Ribbon: %2d",cuterib) | |
| if smrtrib > 0: | |
| print("(M) Smartness Ribbon: %2d",smrtrib) | |
| if toghrib > 0: | |
| print("(M) Toughness Ribbon: %2d",toghrib) | |
| if champion > 0: | |
| print("(M) Champion Ribbon: Yes") | |
| if winning > 0: | |
| print("(M) Winning Ribbon: Yes") | |
| if victory > 0: | |
| print("(M) Victory Ribbon: Yes") | |
| if artist > 0: | |
| print("(M) Artist Ribbon: Yes") | |
| if effort > 0: | |
| print("(M) Effort Ribbon: Yes") | |
| if special > 0: | |
| print("(M) Special Ribbon: %02x" % (special)) | |
| if obedient > 0: | |
| print("(M) Obedient/Fateful: Yes") | |
| except ValueError: | |
| print("Unable to get EV and Condition data") | |
| status = unpacked[73] | |
| print("Sleep turns: %01d"% (status % 7)) | |
| if status & 8: | |
| print("Poisoned: Yes") | |
| else: | |
| print("Poisoned: No") | |
| if status & 16: | |
| print("Burnt: Yes") | |
| else: | |
| print("Burnt: No") | |
| if status & 32: | |
| print("Frozen: Yes") | |
| else: | |
| print("Frozen: No") | |
| if status & 64: | |
| print("Paralysed: Yes") | |
| else: | |
| print("Paralysed: No") | |
| if status & 128: | |
| print("Badly Poisoned: Yes") | |
| else: | |
| print("Badly Poisoned: No") | |
| level = unpacked[74] | |
| print("Level: %03d" % (level)) | |
| pkrsrm = unpacked[75] | |
| print("Pokerus Remaining: %03d" % (pkrsrm)) | |
| hp = unpacked[76] | |
| print("Current HP: %03d" % (hp)) | |
| hpmax = unpacked[77] | |
| print("Max HP: %03d" % (hpmax)) | |
| attack = unpacked[78] | |
| print("Attack: %03d" % (attack)) | |
| defense = unpacked[79] | |
| print("Defense: %03d" % (defense)) | |
| speed = unpacked[80] | |
| print("Speed: %03d" % (speed)) | |
| spattack = unpacked[81] | |
| print("Sp. Attack: %03d" % (spattack)) | |
| spdefense = unpacked[82] | |
| print("Sp. Defense: %03d" % (spdefense)) | |
| basestats = getbasestats(species) | |
| print("Calculated stats:") | |
| calchealth = (2*basestats[0] + hpiv + hpev//4) * level // 100 + level + 10 | |
| print(" HP: %03d" % (calchealth)) | |
| natureval = pv % 25 | |
| (nature,_) = getnature(natureval) | |
| print(" Nature: %s" % (nature)) | |
| atkmul = 100 | |
| if natureval // 5 == 0: | |
| atkmul += 10 | |
| if natureval % 5 == 0: | |
| atkmul -= 10 | |
| calcatk = ((2*basestats[1] + atkiv + atkev//4) * level // 100 + 5) * atkmul // 100 | |
| print(" Attack: %03d" % (calcatk)) | |
| defmul = 100 | |
| if natureval // 5 == 1: | |
| defmul += 10 | |
| if natureval % 5 == 1: | |
| defmul -= 10 | |
| calcdef = ((2*basestats[2] + defiv + defev//4) * level // 100 + 5) * defmul // 100 | |
| print(" Defense: %03d" % (calcdef)) | |
| spdmul = 100 | |
| if natureval // 5 == 2: | |
| spdmul += 10 | |
| if natureval % 5 == 2: | |
| spdmul -= 10 | |
| calcspd = ((2*basestats[3] + spdiv + spdev//4) * level // 100 + 5) * spdmul // 100 | |
| print(" Speed: %03d" % (calcspd)) | |
| spatkmul = 100 | |
| if natureval // 5 == 3: | |
| spatkmul += 10 | |
| if natureval % 5 == 3: | |
| spatkmul -= 10 | |
| calcspatk = ((2*basestats[4] + spatkiv + spatkev//4) * level // 100 + 5) * spatkmul // 100 | |
| print(" Sp.Atk: %03d" % (calcspatk)) | |
| spdefmul = 100 | |
| if natureval // 5 == 4: | |
| spdefmul += 10 | |
| if natureval % 5 == 4: | |
| spdefmul -= 10 | |
| calcspdef = ((2*basestats[5] + spdefiv + spdefev//4) * level // 100 + 5) * spdefmul // 100 | |
| print(" Sp.Def: %03d" % (calcspdef)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment