From 17ab9dc558db716e02d86c48a0682489c499337e Mon Sep 17 00:00:00 2001 From: C Nelson Date: Tue, 17 Apr 2012 21:37:46 -0500 Subject: [PATCH] Move a bunch of constant data into separate files. --- extras/chars.py | 274 ++++++++ extras/crystal.py | 1243 +---------------------------------- extras/item_constants.py | 222 +++++++ extras/pksv.py | 502 ++++++++++++++ extras/pokemon_constants.py | 253 +++++++ 5 files changed, 1257 insertions(+), 1237 deletions(-) create mode 100644 extras/chars.py create mode 100644 extras/item_constants.py create mode 100644 extras/pksv.py create mode 100644 extras/pokemon_constants.py diff --git a/extras/chars.py b/extras/chars.py new file mode 100644 index 000000000..870e0bd74 --- /dev/null +++ b/extras/chars.py @@ -0,0 +1,274 @@ +# -*- coding: utf-8 -*- +#this is straight out of ../textpre.py because i'm lazy +#see jap_chars for overrides if you are in japanese mode? +chars = { + 0x50: "@", + 0x54: "#", + 0x75: "…", + + 0x79: "┌", + 0x7A: "─", + 0x7B: "┐", + 0x7C: "│", + 0x7D: "└", + 0x7E: "┘", + + 0x74: "№", + + 0x7F: " ", + 0x80: "A", + 0x81: "B", + 0x82: "C", + 0x83: "D", + 0x84: "E", + 0x85: "F", + 0x86: "G", + 0x87: "H", + 0x88: "I", + 0x89: "J", + 0x8A: "K", + 0x8B: "L", + 0x8C: "M", + 0x8D: "N", + 0x8E: "O", + 0x8F: "P", + 0x90: "Q", + 0x91: "R", + 0x92: "S", + 0x93: "T", + 0x94: "U", + 0x95: "V", + 0x96: "W", + 0x97: "X", + 0x98: "Y", + 0x99: "Z", + 0x9A: "(", + 0x9B: ")", + 0x9C: ":", + 0x9D: ";", + 0x9E: "[", + 0x9F: "]", + 0xA0: "a", + 0xA1: "b", + 0xA2: "c", + 0xA3: "d", + 0xA4: "e", + 0xA5: "f", + 0xA6: "g", + 0xA7: "h", + 0xA8: "i", + 0xA9: "j", + 0xAA: "k", + 0xAB: "l", + 0xAC: "m", + 0xAD: "n", + 0xAE: "o", + 0xAF: "p", + 0xB0: "q", + 0xB1: "r", + 0xB2: "s", + 0xB3: "t", + 0xB4: "u", + 0xB5: "v", + 0xB6: "w", + 0xB7: "x", + 0xB8: "y", + 0xB9: "z", + 0xC0: "Ä", + 0xC1: "Ö", + 0xC2: "Ü", + 0xC3: "ä", + 0xC4: "ö", + 0xC5: "ü", + 0xD0: "'d", + 0xD1: "'l", + 0xD2: "'m", + 0xD3: "'r", + 0xD4: "'s", + 0xD5: "'t", + 0xD6: "'v", + 0xE0: "'", + 0xE3: "-", + 0xE6: "?", + 0xE7: "!", + 0xE8: ".", + 0xE9: "&", + 0xEA: "é", + 0xEB: "→", + 0xEF: "♂", + 0xF0: "¥", + 0xF1: "×", + 0xF3: "/", + 0xF4: ",", + 0xF5: "♀", + 0xF6: "0", + 0xF7: "1", + 0xF8: "2", + 0xF9: "3", + 0xFA: "4", + 0xFB: "5", + 0xFC: "6", + 0xFD: "7", + 0xFE: "8", + 0xFF: "9", +} + +#override whatever defaults for japanese symbols +jap_chars = copy(chars) +jap_chars.update({ + 0x05: "ガ", + 0x06: "ギ", + 0x07: "グ", + 0x08: "ゲ", + 0x09: "ゴ", + 0x0A: "ザ", + 0x0B: "ジ", + 0x0C: "ズ", + 0x0D: "ゼ", + 0x0E: "ゾ", + 0x0F: "ダ", + 0x10: "ヂ", + 0x11: "ヅ", + 0x12: "デ", + 0x13: "ド", + 0x19: "バ", + 0x1A: "ビ", + 0x1B: "ブ", + 0x1C: "ボ", + 0x26: "が", + 0x27: "ぎ", + 0x28: "ぐ", + 0x29: "げ", + 0x2A: "ご", + 0x2B: "ざ", + 0x2C: "じ", + 0x2D: "ず", + 0x2E: "ぜ", + 0x2F: "ぞ", + 0x30: "だ", + 0x31: "ぢ", + 0x32: "づ", + 0x33: "で", + 0x34: "ど", + 0x3A: "ば", + 0x3B: "び", + 0x3C: "ぶ", + 0x3D: "べ", + 0x3E: "ぼ", + 0x40: "パ", + 0x41: "ピ", + 0x42: "プ", + 0x43: "ポ", + 0x44: "ぱ", + 0x45: "ぴ", + 0x46: "ぷ", + 0x47: "ぺ", + 0x48: "ぽ", + 0x80: "ア", + 0x81: "イ", + 0x82: "ウ", + 0x83: "エ", + 0x84: "ォ", + 0x85: "カ", + 0x86: "キ", + 0x87: "ク", + 0x88: "ケ", + 0x89: "コ", + 0x8A: "サ", + 0x8B: "シ", + 0x8C: "ス", + 0x8D: "セ", + 0x8E: "ソ", + 0x8F: "タ", + 0x90: "チ", + 0x91: "ツ", + 0x92: "テ", + 0x93: "ト", + 0x94: "ナ", + 0x95: "ニ", + 0x96: "ヌ", + 0x97: "ネ", + 0x98: "ノ", + 0x99: "ハ", + 0x9A: "ヒ", + 0x9B: "フ", + 0x9C: "ホ", + 0x9D: "マ", + 0x9E: "ミ", + 0x9F: "ム", + 0xA0: "メ", + 0xA1: "モ", + 0xA2: "ヤ", + 0xA3: "ユ", + 0xA4: "ヨ", + 0xA5: "ラ", + 0xA6: "ル", + 0xA7: "レ", + 0xA8: "ロ", + 0xA9: "ワ", + 0xAA: "ヲ", + 0xAB: "ン", + 0xAC: "ッ", + 0xAD: "ャ", + 0xAE: "ュ", + 0xAF: "ョ", + 0xB0: "ィ", + 0xB1: "あ", + 0xB2: "い", + 0xB3: "う", + 0xB4: "え", + 0xB5: "お", + 0xB6: "か", + 0xB7: "き", + 0xB8: "く", + 0xB9: "け", + 0xBA: "こ", + 0xBB: "さ", + 0xBC: "し", + 0xBD: "す", + 0xBE: "せ", + 0xBF: "そ", + 0xC0: "た", + 0xC1: "ち", + 0xC2: "つ", + 0xC3: "て", + 0xC4: "と", + 0xC5: "な", + 0xC6: "に", + 0xC7: "ぬ", + 0xC8: "ね", + 0xC9: "の", + 0xCA: "は", + 0xCB: "ひ", + 0xCC: "ふ", + 0xCD: "へ", + 0xCE: "ほ", + 0xCF: "ま", + 0xD0: "み", + 0xD1: "む", + 0xD2: "め", + 0xD3: "も", + 0xD4: "や", + 0xD5: "ゆ", + 0xD6: "よ", + 0xD7: "ら", + 0xD8: "り", + 0xD9: "る", + 0xDA: "れ", + 0xDB: "ろ", + 0xDC: "わ", + 0xDD: "を", + 0xDE: "ん", + 0xDF: "っ", + 0xE0: "ゃ", + 0xE1: "ゅ", + 0xE2: "ょ", + 0xE3: "ー", +}) + +#some of the japanese characters can probably fit into the english table +#without overriding any of the other mappings. +for key, value in jap_chars.items(): + if key not in chars.keys(): + chars[key] = value + diff --git a/extras/crystal.py b/extras/crystal.py index 04253b349..b8411f035 100644 --- a/extras/crystal.py +++ b/extras/crystal.py @@ -55,278 +55,8 @@ texts = [] #this doesn't do anything but is still used in TextScript constant_abbreviation_bytes = {} -#this is straight out of ../textpre.py because i'm lazy -#see jap_chars for overrides if you are in japanese mode? -chars = { - 0x50: "@", - 0x54: "#", - 0x75: "…", - - 0x79: "┌", - 0x7A: "─", - 0x7B: "┐", - 0x7C: "│", - 0x7D: "└", - 0x7E: "┘", - - 0x74: "№", - - 0x7F: " ", - 0x80: "A", - 0x81: "B", - 0x82: "C", - 0x83: "D", - 0x84: "E", - 0x85: "F", - 0x86: "G", - 0x87: "H", - 0x88: "I", - 0x89: "J", - 0x8A: "K", - 0x8B: "L", - 0x8C: "M", - 0x8D: "N", - 0x8E: "O", - 0x8F: "P", - 0x90: "Q", - 0x91: "R", - 0x92: "S", - 0x93: "T", - 0x94: "U", - 0x95: "V", - 0x96: "W", - 0x97: "X", - 0x98: "Y", - 0x99: "Z", - 0x9A: "(", - 0x9B: ")", - 0x9C: ":", - 0x9D: ";", - 0x9E: "[", - 0x9F: "]", - 0xA0: "a", - 0xA1: "b", - 0xA2: "c", - 0xA3: "d", - 0xA4: "e", - 0xA5: "f", - 0xA6: "g", - 0xA7: "h", - 0xA8: "i", - 0xA9: "j", - 0xAA: "k", - 0xAB: "l", - 0xAC: "m", - 0xAD: "n", - 0xAE: "o", - 0xAF: "p", - 0xB0: "q", - 0xB1: "r", - 0xB2: "s", - 0xB3: "t", - 0xB4: "u", - 0xB5: "v", - 0xB6: "w", - 0xB7: "x", - 0xB8: "y", - 0xB9: "z", - 0xC0: "Ä", - 0xC1: "Ö", - 0xC2: "Ü", - 0xC3: "ä", - 0xC4: "ö", - 0xC5: "ü", - 0xD0: "'d", - 0xD1: "'l", - 0xD2: "'m", - 0xD3: "'r", - 0xD4: "'s", - 0xD5: "'t", - 0xD6: "'v", - 0xE0: "'", - 0xE3: "-", - 0xE6: "?", - 0xE7: "!", - 0xE8: ".", - 0xE9: "&", - 0xEA: "é", - 0xEB: "→", - 0xEF: "♂", - 0xF0: "¥", - 0xF1: "×", - 0xF3: "/", - 0xF4: ",", - 0xF5: "♀", - 0xF6: "0", - 0xF7: "1", - 0xF8: "2", - 0xF9: "3", - 0xFA: "4", - 0xFB: "5", - 0xFC: "6", - 0xFD: "7", - 0xFE: "8", - 0xFF: "9", -} - -#override whatever defaults for japanese symbols -jap_chars = copy(chars) -jap_chars.update({ - 0x05: "ガ", - 0x06: "ギ", - 0x07: "グ", - 0x08: "ゲ", - 0x09: "ゴ", - 0x0A: "ザ", - 0x0B: "ジ", - 0x0C: "ズ", - 0x0D: "ゼ", - 0x0E: "ゾ", - 0x0F: "ダ", - 0x10: "ヂ", - 0x11: "ヅ", - 0x12: "デ", - 0x13: "ド", - 0x19: "バ", - 0x1A: "ビ", - 0x1B: "ブ", - 0x1C: "ボ", - 0x26: "が", - 0x27: "ぎ", - 0x28: "ぐ", - 0x29: "げ", - 0x2A: "ご", - 0x2B: "ざ", - 0x2C: "じ", - 0x2D: "ず", - 0x2E: "ぜ", - 0x2F: "ぞ", - 0x30: "だ", - 0x31: "ぢ", - 0x32: "づ", - 0x33: "で", - 0x34: "ど", - 0x3A: "ば", - 0x3B: "び", - 0x3C: "ぶ", - 0x3D: "べ", - 0x3E: "ぼ", - 0x40: "パ", - 0x41: "ピ", - 0x42: "プ", - 0x43: "ポ", - 0x44: "ぱ", - 0x45: "ぴ", - 0x46: "ぷ", - 0x47: "ぺ", - 0x48: "ぽ", - 0x80: "ア", - 0x81: "イ", - 0x82: "ウ", - 0x83: "エ", - 0x84: "ォ", - 0x85: "カ", - 0x86: "キ", - 0x87: "ク", - 0x88: "ケ", - 0x89: "コ", - 0x8A: "サ", - 0x8B: "シ", - 0x8C: "ス", - 0x8D: "セ", - 0x8E: "ソ", - 0x8F: "タ", - 0x90: "チ", - 0x91: "ツ", - 0x92: "テ", - 0x93: "ト", - 0x94: "ナ", - 0x95: "ニ", - 0x96: "ヌ", - 0x97: "ネ", - 0x98: "ノ", - 0x99: "ハ", - 0x9A: "ヒ", - 0x9B: "フ", - 0x9C: "ホ", - 0x9D: "マ", - 0x9E: "ミ", - 0x9F: "ム", - 0xA0: "メ", - 0xA1: "モ", - 0xA2: "ヤ", - 0xA3: "ユ", - 0xA4: "ヨ", - 0xA5: "ラ", - 0xA6: "ル", - 0xA7: "レ", - 0xA8: "ロ", - 0xA9: "ワ", - 0xAA: "ヲ", - 0xAB: "ン", - 0xAC: "ッ", - 0xAD: "ャ", - 0xAE: "ュ", - 0xAF: "ョ", - 0xB0: "ィ", - 0xB1: "あ", - 0xB2: "い", - 0xB3: "う", - 0xB4: "え", - 0xB5: "お", - 0xB6: "か", - 0xB7: "き", - 0xB8: "く", - 0xB9: "け", - 0xBA: "こ", - 0xBB: "さ", - 0xBC: "し", - 0xBD: "す", - 0xBE: "せ", - 0xBF: "そ", - 0xC0: "た", - 0xC1: "ち", - 0xC2: "つ", - 0xC3: "て", - 0xC4: "と", - 0xC5: "な", - 0xC6: "に", - 0xC7: "ぬ", - 0xC8: "ね", - 0xC9: "の", - 0xCA: "は", - 0xCB: "ひ", - 0xCC: "ふ", - 0xCD: "へ", - 0xCE: "ほ", - 0xCF: "ま", - 0xD0: "み", - 0xD1: "む", - 0xD2: "め", - 0xD3: "も", - 0xD4: "や", - 0xD5: "ゆ", - 0xD6: "よ", - 0xD7: "ら", - 0xD8: "り", - 0xD9: "る", - 0xDA: "れ", - 0xDB: "ろ", - 0xDC: "わ", - 0xDD: "を", - 0xDE: "ん", - 0xDF: "っ", - 0xE0: "ゃ", - 0xE1: "ゅ", - 0xE2: "ょ", - 0xE3: "ー", -}) - -#some of the japanese characters can probably fit into the english table -#without overriding any of the other mappings. -for key, value in jap_chars.items(): - if key not in chars.keys(): - chars[key] = value +# Import the characters from its module. +from chars import chars, jap_chars class Size(): """a simple way to track whether or not a size @@ -1333,259 +1063,7 @@ def generate_map_constants(): print groups print maps -pokemon_constants = { -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: "NIDORAN_F", -30: "NIDORINA", -31: "NIDOQUEEN", -32: "NIDORAN_M", -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", -} +from pokemon_constants import pokemon_constants def get_pokemon_constant_by_id(id): if id == 0: return None @@ -1595,228 +1073,7 @@ def parse_script_asm_at(*args, **kwargs): #XXX TODO return None -item_constants = {1: 'MASTER_BALL', -2: 'ULTRA_BALL', -3: 'BRIGHTPOWDER', -4: 'GREAT_BALL', -5: 'POKE_BALL', -7: 'BICYCLE', -8: 'MOON_STONE', -9: 'ANTIDOTE', -10: 'BURN_HEAL', -11: 'ICE_HEAL', -12: 'AWAKENING', -13: 'PARLYZ_HEAL', -14: 'FULL_RESTORE', -15: 'MAX_POTION', -16: 'HYPER_POTION', -17: 'SUPER_POTION', -18: 'POTION', -19: 'ESCAPE_ROPE', -20: 'REPEL', -21: 'MAX_ELIXER', -22: 'FIRE_STONE', -23: 'THUNDERSTONE', -24: 'WATER_STONE', -26: 'HP_UP', -27: 'PROTEIN', -28: 'IRON', -29: 'CARBOS', -30: 'LUCKY_PUNCH', -31: 'CALCIUM', -32: 'RARE_CANDY', -33: 'X_ACCURACY', -34: 'LEAF_STONE', -35: 'METAL_POWDER', -36: 'NUGGET', -37: 'POKE_DOLL', -38: 'FULL_HEAL', -39: 'REVIVE', -40: 'MAX_REVIVE', -41: 'GUARD_SPEC.', -42: 'SUPER_REPEL', -43: 'MAX_REPEL', -44: 'DIRE_HIT', -46: 'FRESH_WATER', -47: 'SODA_POP', -48: 'LEMONADE', -49: 'X_ATTACK', -51: 'X_DEFEND', -52: 'X_SPEED', -53: 'X_SPECIAL', -54: 'COIN_CASE', -55: 'ITEMFINDER', -57: 'EXP_SHARE', -58: 'OLD_ROD', -59: 'GOOD_ROD', -60: 'SILVER_LEAF', -61: 'SUPER_ROD', -62: 'PP_UP', -63: 'ETHER', -64: 'MAX_ETHER', -65: 'ELIXER', -66: 'RED_SCALE', -67: 'SECRETPOTION', -68: 'S.S.TICKET', -69: 'MYSTERY_EGG', -70: 'CLEAR_BELL', -71: 'SILVER_WING', -72: 'MOOMOO_MILK', -73: 'QUICK_CLAW', -74: 'PSNCUREBERRY', -75: 'GOLD_LEAF', -76: 'SOFT_SAND', -77: 'SHARP_BEAK', -78: 'PRZCUREBERRY', -79: 'BURNT_BERRY', -80: 'ICE_BERRY', -81: 'POISON_BARB', -82: "KING'S_ROCK", -83: 'BITTER_BERRY', -84: 'MINT_BERRY', -85: 'RED_APRICORN', -86: 'TINYMUSHROOM', -87: 'BIG_MUSHROOM', -88: 'SILVERPOWDER', -89: 'BLU_APRICORN', -91: 'AMULET_COIN', -92: 'YLW_APRICORN', -93: 'GRN_APRICORN', -94: 'CLEANSE_TAG', -95: 'MYSTIC_WATER', -96: 'TWISTEDSPOON', -97: 'WHT_APRICORN', -98: 'BLACKBELT', -99: 'BLK_APRICORN', -101: 'PNK_APRICORN', -102: 'BLACKGLASSES', -103: 'SLOWPOKETAIL', -104: 'PINK_BOW', -105: 'STICK', -106: 'SMOKE_BALL', -107: 'NEVERMELTICE', -108: 'MAGNET', -109: 'MIRACLEBERRY', -110: 'PEARL', -111: 'BIG_PEARL', -112: 'EVERSTONE', -113: 'SPELL_TAG', -114: 'RAGECANDYBAR', -115: 'GS_BALL', -116: 'BLUE_CARD', -117: 'MIRACLE_SEED', -118: 'THICK_CLUB', -119: 'FOCUS_BAND', -121: 'ENERGYPOWDER', -122: 'ENERGY_ROOT', -123: 'HEAL_POWDER', -124: 'REVIVAL_HERB', -125: 'HARD_STONE', -126: 'LUCKY_EGG', -127: 'CARD_KEY', -128: 'MACHINE_PART', -129: 'EGG_TICKET', -130: 'LOST_ITEM', -131: 'STARDUST', -132: 'STAR_PIECE', -133: 'BASEMENT_KEY', -134: 'PASS', -138: 'CHARCOAL', -139: 'BERRY_JUICE', -140: 'SCOPE_LENS', -143: 'METAL_COAT', -144: 'DRAGON_FANG', -146: 'LEFTOVERS', -150: 'MYSTERYBERRY', -151: 'DRAGON_SCALE', -152: 'BERSERK_GENE', -156: 'SACRED_ASH', -157: 'HEAVY_BALL', -158: 'FLOWER_MAIL', -159: 'LEVEL_BALL', -160: 'LURE_BALL', -161: 'FAST_BALL', -163: 'LIGHT_BALL', -164: 'FRIEND_BALL', -165: 'MOON_BALL', -166: 'LOVE_BALL', -167: 'NORMAL_BOX', -168: 'GORGEOUS_BOX', -169: 'SUN_STONE', -170: 'POLKADOT_BOW', -172: 'UP_GRADE', -173: 'BERRY', -174: 'GOLD_BERRY', -175: 'SQUIRTBOTTLE', -177: 'PARK_BALL', -178: 'RAINBOW_WING', -180: 'BRICK_PIECE', -181: 'SURF_MAIL', -182: 'LITEBLUEMAIL', -183: 'PORTRAITM_AIL', -184: 'LOVELY_MAIL', -185: 'EON_MAIL', -186: 'MORPH_MAIL', -187: 'BLUESKY_MAIL', -188: 'MUSIC_MAIL', -189: 'MIRAGE_MAIL', -191: 'TM_01', -192: 'TM_02', -193: 'TM_03', -194: 'TM_04', -196: 'TM_05', -197: 'TM_06', -198: 'TM_07', -199: 'TM_08', -200: 'TM_09', -201: 'TM_10', -202: 'TM_11', -203: 'TM_12', -204: 'TM_13', -205: 'TM_14', -206: 'TM_15', -207: 'TM_16', -208: 'TM_17', -209: 'TM_18', -210: 'TM_19', -211: 'TM_20', -212: 'TM_21', -213: 'TM_22', -214: 'TM_23', -215: 'TM_24', -216: 'TM_25', -217: 'TM_26', -218: 'TM_27', -219: 'TM_28', -221: 'TM_29', -222: 'TM_30', -223: 'TM_31', -224: 'TM_32', -225: 'TM_33', -226: 'TM_34', -227: 'TM_35', -228: 'TM_36', -229: 'TM_37', -230: 'TM_38', -231: 'TM_39', -232: 'TM_40', -233: 'TM_41', -234: 'TM_42', -235: 'TM_43', -236: 'TM_44', -237: 'TM_45', -238: 'TM_46', -239: 'TM_47', -240: 'TM_48', -241: 'TM_49', -242: 'TM_50', -243: 'HM_01', -244: 'HM_02', -245: 'HM_03', -246: 'HM_04', -247: 'HM_05', -248: 'HM_06', -249: 'HM_07'} +from item_constants import item_constants def find_item_label_by_id(id): if id in item_constants.keys(): @@ -1879,310 +1136,8 @@ def translate_command_byte(crystal=None, gold=None): if gold > 0xA3: raise Exception, "dunno yet if crystal has new insertions after gold:0xA3 (crystal:0xA5)" else: raise Exception, "translate_command_byte needs either a crystal or gold command" -pksv_gs = { - 0x00: "2call", - 0x01: "3call", - 0x02: "2ptcall", - 0x03: "2jump", - 0x04: "3jump", - 0x05: "2ptjump", - 0x06: "if equal", - 0x07: "if not equal", - 0x08: "if false", - 0x09: "if true", - 0x0A: "if less than", - 0x0B: "if greater than", - 0x0C: "jumpstd", - 0x0D: "callstd", - 0x0E: "3callasm", - 0x0F: "special", - 0x10: "2ptcallasm", - 0x11: "checkmaptriggers", - 0x12: "domaptrigger", - 0x13: "checktriggers", - 0x14: "dotrigger", - 0x15: "writebyte", - 0x16: "addvar", - 0x17: "random", - 0x19: "copybytetovar", - 0x1A: "copyvartobyte", - 0x1B: "loadvar", - 0x1C: "checkcode", - 0x1E: "writecode", - 0x1F: "giveitem", - 0x20: "takeitem", - 0x21: "checkitem", - 0x22: "givemoney", - 0x23: "takemoney", - 0x24: "checkmonkey", - 0x25: "givecoins", - 0x26: "takecoins", - 0x27: "checkcoins", - 0x2B: "checktime", - 0x2C: "checkpoke", - 0x2D: "givepoke", - 0x2E: "giveegg", - 0x2F: "givepokeitem", - 0x31: "checkbit1", - 0x32: "clearbit1", - 0x33: "setbit1", - 0x34: "checkbit2", - 0x35: "clearbit2", - 0x36: "setbit2", - 0x37: "wildoff", - 0x38: "wildon", - 0x39: "xycompare", - 0x3A: "warpmod", - 0x3B: "blackoutmod", - 0x3C: "warp", - 0x41: "itemtotext", - 0x43: "trainertotext", - 0x44: "stringtotext", - 0x45: "itemnotify", - 0x46: "pocketisfull", - 0x47: "loadfont", - 0x48: "refreshscreen", - 0x49: "loadmovesprites", - 0x4B: "3writetext", - 0x4C: "2writetext", - 0x4E: "yesorno", - 0x4F: "loadmenudata", - 0x50: "writebackup", - 0x51: "jumptextfaceplayer", - 0x52: "jumptext", - 0x53: "closetext", - 0x54: "keeptextopen", - 0x55: "pokepic", - 0x56: "pokepicyesorno", - 0x57: "interpretmenu", - 0x58: "interpretmenu2", - 0x5C: "loadpokedata", - 0x5D: "loadtrainer", - 0x5E: "startbattle", - 0x5F: "returnafterbattle", - 0x60: "catchtutorial", - 0x63: "winlosstext", - 0x65: "talkaftercancel", - 0x67: "setlasttalked", - 0x68: "applymovement", - 0x6A: "faceplayer", - 0x6B: "faceperson", - 0x6C: "variablesprite", - 0x6D: "disappear", - 0x6E: "appear", - 0x6F: "follow", - 0x70: "stopfollow", - 0x71: "moveperson", - 0x74: "showemote", - 0x75: "spriteface", - 0x76: "follownotexact", - 0x77: "earthquake", - 0x79: "changeblock", - 0x7A: "reloadmap", - 0x7B: "reloadmappart", - 0x7C: "writecmdqueue", - 0x7D: "delcmdqueue", - 0x7E: "playmusic", - 0x7F: "playrammusic", - 0x80: "musicfadeout", - 0x81: "playmapmusic", - 0x82: "reloadmapmusic", - 0x83: "cry", - 0x84: "playsound", - 0x85: "waitbutton", - 0x86: "warpsound", - 0x87: "specialsound", - 0x88: "passtoengine", - 0x89: "newloadmap", - 0x8A: "pause", - 0x8B: "deactivatefacing", - 0x8C: "priorityjump", - 0x8D: "warpcheck", - 0x8E: "ptpriorityjump", - 0x8F: "return", - 0x90: "end", - 0x91: "reloadandreturn", - 0x92: "resetfuncs", - 0x93: "pokemart", - 0x94: "elevator", - 0x95: "trade", - 0x96: "askforphonenumber", - 0x97: "phonecall", - 0x98: "hangup", - 0x99: "describedecoration", - 0x9A: "fruittree", - 0x9C: "checkphonecall", - 0x9D: "verbosegiveitem", - 0x9E: "loadwilddata", - 0x9F: "halloffame", - 0xA0: "credits", - 0xA1: "warpfacing", - 0xA2: "storetext", - 0xA3: "displaylocation", -} - -#see http://www.pokecommunity.com/showpost.php?p=4347261 -#NOTE: this has some updates that need to be back-ported to gold -pksv_crystal = { - 0x00: "2call", - 0x01: "3call", - 0x02: "2ptcall", - 0x03: "2jump", - 0x04: "3jump", - 0x05: "2ptjump", - 0x06: "if equal", - 0x07: "if not equal", - 0x08: "if false", - 0x09: "if true", - 0x0A: "if less than", - 0x0B: "if greater than", - 0x0C: "jumpstd", - 0x0D: "callstd", - 0x0E: "3callasm", - 0x0F: "special", - 0x10: "2ptcallasm", - 0x11: "checkmaptriggers", - 0x12: "domaptrigger", - 0x13: "checktriggers", - 0x14: "dotrigger", - 0x15: "writebyte", - 0x16: "addvar", - 0x17: "random", - 0x19: "copybytetovar", - 0x1A: "copyvartobyte", - 0x1B: "loadvar", - 0x1C: "checkcode", - 0x1D: "writevarcode", - 0x1E: "writecode", - 0x1F: "giveitem", - 0x20: "takeitem", - 0x21: "checkitem", - 0x22: "givemoney", - 0x23: "takemoney", - 0x24: "checkmonkey", - 0x25: "givecoins", - 0x26: "takecoins", - 0x27: "checkcoins", - 0x28: "addcellnum", - 0x29: "delcellnum", - 0x2B: "checktime", - 0x2C: "checkpoke", - 0x2D: "givepoke", - 0x2E: "giveegg", - 0x2F: "givepokeitem", - 0x31: "checkbit1", - 0x32: "clearbit1", - 0x33: "setbit1", - 0x34: "checkbit2", - 0x35: "clearbit2", - 0x36: "setbit2", - 0x37: "wildoff", - 0x38: "wildon", - 0x39: "xycompare", - 0x3A: "warpmod", - 0x3B: "blackoutmod", - 0x3C: "warp", - 0x41: "itemtotext", - 0x43: "trainertotext", - 0x44: "stringtotext", - 0x45: "itemnotify", - 0x46: "pocketisfull", - 0x47: "loadfont", - 0x48: "refreshscreen", - 0x49: "loadmovesprites", - 0x4B: "3writetext", - 0x4C: "2writetext", - 0x4E: "yesorno", - 0x4F: "loadmenudata", - 0x50: "writebackup", - 0x51: "jumptextfaceplayer", - 0x53: "jumptext", - 0x54: "closetext", - 0x55: "keeptextopen", - 0x56: "pokepic", - 0x57: "pokepicyesorno", - 0x58: "interpretmenu", - 0x59: "interpretmenu2", - 0x5D: "loadpokedata", - 0x5E: "loadtrainer", - 0x5F: "startbattle", - 0x60: "returnafterbattle", - 0x61: "catchtutorial", - 0x64: "winlosstext", - 0x66: "talkaftercancel", - 0x68: "setlasttalked", - 0x69: "applymovement", - 0x6B: "faceplayer", - 0x6C: "faceperson", - 0x6D: "variablesprite", - 0x6E: "disappear", - 0x6F: "appear", - 0x70: "follow", - 0x71: "stopfollow", - 0x72: "moveperson", - 0x75: "showemote", - 0x76: "spriteface", - 0x77: "follownotexact", - 0x78: "earthquake", - 0x7A: "changeblock", - 0x7B: "reloadmap", - 0x7C: "reloadmappart", - 0x7D: "writecmdqueue", - 0x7E: "delcmdqueue", - 0x7F: "playmusic", - 0x80: "playrammusic", - 0x81: "musicfadeout", - 0x82: "playmapmusic", - 0x83: "reloadmapmusic", - 0x84: "cry", - 0x85: "playsound", - 0x86: "waitbutton", - 0x87: "warpsound", - 0x88: "specialsound", - 0x89: "passtoengine", - 0x8A: "newloadmap", - 0x8B: "pause", - 0x8C: "deactivatefacing", - 0x8D: "priorityjump", - 0x8E: "warpcheck", - 0x8F: "ptpriorityjump", - 0x90: "return", - 0x91: "end", - 0x92: "reloadandreturn", - 0x93: "resetfuncs", - 0x94: "pokemart", - 0x95: "elevator", - 0x96: "trade", - 0x97: "askforphonenumber", - 0x98: "phonecall", - 0x99: "hangup", - 0x9A: "describedecoration", - 0x9B: "fruittree", - 0x9C: "specialphonecall", - 0x9D: "checkphonecall", - 0x9E: "verbosegiveitem", - 0x9F: "verbosegiveitem2", - 0xA0: "loadwilddata", - 0xA1: "halloffame", - 0xA2: "credits", - 0xA3: "warpfacing", - 0xA4: "storetext", - 0xA5: "displaylocation", - 0xB2: "unknown0xb2", -} - -#these have no pksv names as of pksv 2.1.1 -pksv_crystal_unknowns = [ - 0x9F, - 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, - 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, - 0xCC, 0xCD, - 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, - 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, - 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, - 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, -] - +from pksv import pksv_gs, pksv_crystal, pksv_crystal_unknowns,\ + pksv_crystal_more, pksv_crystal_more_enders class SingleByteParam(): """or SingleByte(CommandParam)""" @@ -2489,186 +1444,6 @@ class MapDataPointerParam(PointerLabelParam): pass -#byte: [name, [param1 name, param1 type], [param2 name, param2 type], ...] -#0x9E: ["verbosegiveitem", ["item", ItemLabelByte], ["quantity", SingleByteParam]], -pksv_crystal_more = { - 0x00: ["2call", ["pointer", ScriptPointerLabelParam]], - 0x01: ["3call", ["pointer", ScriptPointerLabelBeforeBank]], - 0x02: ["2ptcall", ["pointer", PointerLabelToScriptPointer]], - 0x03: ["2jump", ["pointer", ScriptPointerLabelParam]], - 0x04: ["3jump", ["pointer", ScriptPointerLabelBeforeBank]], - 0x05: ["2ptjump", ["pointer", PointerLabelToScriptPointer]], - 0x06: ["if equal", ["byte", SingleByteParam], ["pointer", ScriptPointerLabelParam]], - 0x07: ["if not equal", ["byte", SingleByteParam], ["pointer", ScriptPointerLabelParam]], - 0x08: ["if false", ["pointer", ScriptPointerLabelParam]], - 0x09: ["if true", ["pointer", ScriptPointerLabelParam]], - 0x0A: ["if less than", ["byte", SingleByteParam], ["pointer", ScriptPointerLabelParam]], - 0x0B: ["if greater than", ["byte", SingleByteParam], ["pointer", ScriptPointerLabelParam]], - 0x0C: ["jumpstd", ["predefined_script", MultiByteParam]], - 0x0D: ["callstd", ["predefined_script", MultiByteParam]], - 0x0E: ["3callasm", ["asm", AsmPointerParam]], - 0x0F: ["special", ["predefined_script", MultiByteParam]], - 0x10: ["2ptcallasm", ["asm", PointerToAsmPointerParam]], - #should map_group/map_id be dealt with in some special way in the asm? - 0x11: ["checkmaptriggers", ["map_group", SingleByteParam], ["map_id", SingleByteParam]], - 0x12: ["domaptrigger", ["map_group", MapGroupParam], ["map_id", MapIdParam], ["trigger_id", SingleByteParam]], - 0x13: ["checktriggers"], - 0x14: ["dotrigger", ["trigger_id", SingleByteParam]], - 0x15: ["writebyte", ["value", SingleByteParam]], - 0x16: ["addvar", ["value", SingleByteParam]], - 0x17: ["random", ["input", SingleByteParam]], - 0x18: ["checkver"], - 0x19: ["copybytetovar", ["address", RAMAddressParam]], - 0x1A: ["copyvartobyte", ["address", RAMAddressParam]], - 0x1B: ["loadvar", ["address", RAMAddressParam], ["value", SingleByteParam]], - 0x1C: ["checkcode", ["variable_id", SingleByteParam]], - 0x1D: ["writevarcode", ["variable_id", SingleByteParam]], - 0x1E: ["writecode", ["variable_id", SingleByteParam], ["value", SingleByteParam]], - 0x1F: ["giveitem", ["item", ItemLabelByte], ["quantity", SingleByteParam]], - 0x20: ["takeitem", ["item", ItemLabelByte], ["quantity", SingleByteParam]], - 0x21: ["checkitem", ["item", ItemLabelByte]], - 0x22: ["givemoney", ["account", SingleByteParam], ["money", MoneyByteParam]], - 0x23: ["takemoney", ["account", SingleByteParam], ["money", MoneyByteParam]], - 0x24: ["checkmonkey", ["account", SingleByteParam], ["money", MoneyByteParam]], - 0x25: ["givecoins", ["coins", CoinByteParam]], - 0x26: ["takecoins", ["coins", CoinByteParam]], - 0x27: ["checkcoins", ["coins", CoinByteParam]], - #0x28-0x2A not from pksv - 0x28: ["addcellnum", ["person", SingleByteParam]], - 0x29: ["delcellnum", ["person", SingleByteParam]], - 0x2A: ["checkcellnum", ["person", SingleByteParam]], - #back on track... - 0x2B: ["checktime", ["time", SingleByteParam]], - 0x2C: ["checkpoke", ["pkmn", PokemonParam]], -#0x2D: ["givepoke", ], .... see GivePoke class - 0x2E: ["giveegg", ["pkmn", PokemonParam], ["level", DecimalParam]], - 0x2F: ["givepokeitem", ["pointer", PointerParamToItemAndLetter]], - 0x30: ["checkpokeitem", ["pointer", PointerParamToItemAndLetter]], #not pksv - 0x31: ["checkbit1", ["bit_number", MultiByteParam]], - 0x32: ["clearbit1", ["bit_number", MultiByteParam]], - 0x33: ["setbit1", ["bit_number", MultiByteParam]], - 0x34: ["checkbit2", ["bit_number", MultiByteParam]], - 0x35: ["clearbit2", ["bit_number", MultiByteParam]], - 0x36: ["setbit2", ["bit_number", MultiByteParam]], - 0x37: ["wildoff"], - 0x38: ["wildon"], - 0x39: ["xycompare", ["pointer", MultiByteParam]], - 0x3A: ["warpmod", ["warp_id", SingleByteParam], ["map_group", MapGroupParam], ["map_id", MapIdParam]], - 0x3B: ["blackoutmod", ["map_group", MapGroupParam], ["map_id", MapIdParam]], - 0x3C: ["warp", ["map_group", MapGroupParam], ["map_id", MapIdParam], ["x", SingleByteParam], ["y", SingleByteParam]], - 0x3D: ["readmoney", ["account", SingleByteParam], ["memory", SingleByteParam]], #not pksv - 0x3E: ["readcoins", ["memory", SingleByteParam]], #not pksv - 0x3F: ["RAM2MEM", ["memory", SingleByteParam]], #not pksv - 0x40: ["pokenamemem", ["pokemon", PokemonParam], ["memory", SingleByteParam]], #not pksv - 0x41: ["itemtotext", ["item", ItemLabelByte], ["memory", SingleByteParam]], - 0x42: ["mapnametotext", ["memory", SingleByteParam]], #not pksv - 0x43: ["trainertotext", ["trainer_id", TrainerIdParam], ["trainer_group", TrainerGroupParam], ["memory", SingleByteParam]], - 0x44: ["stringtotext", ["text_pointer", RawTextPointerLabelParam], ["memory", SingleByteParam]], - 0x45: ["itemnotify"], - 0x46: ["pocketisfull"], - 0x47: ["loadfont"], - 0x48: ["refreshscreen", ["dummy", SingleByteParam]], - 0x49: ["loadmovesprites"], - 0x4A: ["loadbytec1ce", ["byte", SingleByteParam]], #not pksv - 0x4B: ["3writetext", ["text_pointer", PointerLabelBeforeBank]], - 0x4C: ["2writetext", ["text_pointer", TextPointerLabelParam]], - 0x4D: ["repeattext", ["byte", SingleByteParam], ["byte", SingleByteParam]], #not pksv - 0x4E: ["yesorno"], - 0x4F: ["loadmenudata", ["data", MenuDataPointerParam]], - 0x50: ["writebackup"], - 0x51: ["jumptextfaceplayer", ["text_pointer", RawTextPointerLabelParam]], - 0x53: ["jumptext", ["text_pointer", TextPointerLabelParam]], - 0x54: ["closetext"], - 0x55: ["keeptextopen"], - 0x56: ["pokepic", ["pokemon", PokemonParam]], - 0x57: ["pokepicyesorno"], - 0x58: ["interpretmenu"], - 0x59: ["interpretmenu2"], -#not pksv - 0x5A: ["loadpikachudata"], - 0x5B: ["battlecheck"], - 0x5C: ["loadtrainerdata"], -#back to pksv.. - 0x5D: ["loadpokedata", ["pokemon", PokemonParam], ["level", DecimalParam]], - 0x5E: ["loadtrainer", ["trainer_group", TrainerGroupParam], ["trainer_id", TrainerIdParam]], - 0x5F: ["startbattle"], - 0x60: ["returnafterbattle"], - 0x61: ["catchtutorial", ["byte", SingleByteParam]], -#not pksv - 0x62: ["trainertext", ["which_text", SingleByteParam]], - 0x63: ["trainerstatus", ["action", SingleByteParam]], -#back to pksv.. - 0x64: ["winlosstext", ["win_text_pointer", TextPointerLabelParam], ["loss_text_pointer", TextPointerLabelParam]], - 0x65: ["scripttalkafter"], #not pksv - 0x66: ["talkaftercancel"], - 0x67: ["talkaftercheck"], - 0x68: ["setlasttalked", ["person", SingleByteParam]], - 0x69: ["applymovement", ["person", SingleByteParam], ["data", MovementPointerLabelParam]], - 0x6A: ["applymovement2", ["data", MovementPointerLabelParam]], #not pksv - 0x6B: ["faceplayer"], - 0x6C: ["faceperson", ["person1", SingleByteParam], ["person2", SingleByteParam]], - 0x6D: ["variablesprite", ["byte", SingleByteParam], ["sprite", SingleByteParam]], - 0x6E: ["disappear", ["person", SingleByteParam]], #hideperson - 0x6F: ["appear", ["person", SingleByteParam]], #showperson - 0x70: ["follow", ["person2", SingleByteParam], ["person1", SingleByteParam]], - 0x71: ["stopfollow"], - 0x72: ["moveperson", ["person", SingleByteParam], ["x", SingleByteParam], ["y", SingleByteParam]], - 0x73: ["writepersonxy", ["person", SingleByteParam]], #not pksv - 0x74: ["loademote", ["bubble", SingleByteParam]], - 0x75: ["showemote", ["bubble", SingleByteParam], ["person", SingleByteParam], ["time", SingleByteParam]], - 0x76: ["spriteface", ["person", SingleByteParam], ["facing", SingleByteParam]], - 0x77: ["follownotexact", ["person2", SingleByteParam], ["person1", SingleByteParam]], - 0x78: ["earthquake", ["param", SingleByteParam]], - 0x79: ["changemap", ["map_data_pointer", MapDataPointerParam]], - 0x7A: ["changeblock", ["x", SingleByteParam], ["y", SingleByteParam], ["block", SingleByteParam]], - 0x7B: ["reloadmap"], - 0x7C: ["reloadmappart"], - 0x7D: ["writecmdqueue", ["queue_pointer", MultiByteParam]], - 0x7E: ["delcmdqueue", ["byte", SingleByteParam]], - 0x7F: ["playmusic", ["music_pointer", MultiByteParam]], - 0x80: ["playrammusic"], - 0x81: ["musicfadeout", ["music", MultiByteParam], ["fadetime", SingleByteParam]], - 0x82: ["playmapmusic"], - 0x83: ["reloadmapmusic"], - 0x84: ["cry", ["cry_id", SingleByteParam], ["wtf", SingleByteParam]], #XXX maybe it should use PokemonParam - 0x85: ["playsound", ["sound_pointer", MultiByteParam]], - 0x86: ["waitbutton"], - 0x87: ["warpsound"], - 0x88: ["specialsound"], - 0x89: ["passtoengine", ["data_pointer", PointerLabelBeforeBank]], - 0x8A: ["newloadmap", ["which_method", SingleByteParam]], - 0x8B: ["pause", ["length", SingleByteParam]], - 0x8C: ["deactivatefacing", ["time", SingleByteParam]], - 0x8D: ["priorityjump", ["pointer", ScriptPointerLabelParam]], - 0x8E: ["warpcheck"], - 0x8F: ["ptpriorityjump", ["pointer", ScriptPointerLabelParam]], - 0x90: ["return"], - 0x91: ["end"], - 0x92: ["reloadandreturn"], - 0x93: ["resetfuncs"], - 0x94: ["pokemart", ["dialog_id", SingleByteParam], ["mart_id", MultiByteParam]], #maybe it should be a pokemark constant id/label? - 0x95: ["elevator", ["floor_list_pointer", PointerLabelParam]], - 0x96: ["trade", ["trade_id", SingleByteParam]], - 0x97: ["askforphonenumber", ["number", SingleByteParam]], - 0x98: ["phonecall", ["caller_name", RawTextPointerLabelParam]], - 0x99: ["hangup"], - 0x9A: ["describedecoration", ["byte", SingleByteParam]], - 0x9B: ["fruittree", ["tree_id", SingleByteParam]], - 0x9C: ["specialphonecall", ["call_id", SingleByteParam], ["wtf", SingleByteParam]], - 0x9D: ["checkphonecall"], - 0x9E: ["verbosegiveitem", ["item", ItemLabelByte], ["quantity", DecimalParam]], - 0x9F: ["verbosegiveitem2", ["item", ItemLabelByte]], - 0xA0: ["loadwilddata", ["map_group", MapGroupParam], ["map_id", MapIdParam]], - 0xA1: ["halloffame"], - 0xA2: ["credits"], - 0xA3: ["warpfacing", ["facing", SingleByteParam], ["map_group", MapGroupParam], ["map_id", MapIdParam], ["x", SingleByteParam], ["y", SingleByteParam]], - 0xA4: ["storetext", ["pointer", PointerLabelBeforeBank], ["memory", SingleByteParam]], - 0xA5: ["displaylocation", ["id", SingleByteParam]], - 0xA8: ["unknown0xa8", ["unknown", SingleByteParam]], - 0xB2: ["unknown0xb2", ["unknown", SingleByteParam]], - 0xCC: ["unknown0xcc"], -} - class Command: """ @@ -2811,12 +1586,6 @@ class GivePoke(Command): return True -#these cause the script to end; used in create_command_classes -pksv_crystal_more_enders = [0x03, 0x04, 0x05, 0x0C, 0x51, 0x53, - 0x8D, 0x8F, 0x90, 0x91, 0x92, 0x9B, - 0xB2, #maybe? - 0xCC, #maybe? - ] def create_command_classes(debug=False): """creates some classes for each command byte""" #don't forget to add any manually created script command classes diff --git a/extras/item_constants.py b/extras/item_constants.py new file mode 100644 index 000000000..0346f5696 --- /dev/null +++ b/extras/item_constants.py @@ -0,0 +1,222 @@ +item_constants = {1: 'MASTER_BALL', +2: 'ULTRA_BALL', +3: 'BRIGHTPOWDER', +4: 'GREAT_BALL', +5: 'POKE_BALL', +7: 'BICYCLE', +8: 'MOON_STONE', +9: 'ANTIDOTE', +10: 'BURN_HEAL', +11: 'ICE_HEAL', +12: 'AWAKENING', +13: 'PARLYZ_HEAL', +14: 'FULL_RESTORE', +15: 'MAX_POTION', +16: 'HYPER_POTION', +17: 'SUPER_POTION', +18: 'POTION', +19: 'ESCAPE_ROPE', +20: 'REPEL', +21: 'MAX_ELIXER', +22: 'FIRE_STONE', +23: 'THUNDERSTONE', +24: 'WATER_STONE', +26: 'HP_UP', +27: 'PROTEIN', +28: 'IRON', +29: 'CARBOS', +30: 'LUCKY_PUNCH', +31: 'CALCIUM', +32: 'RARE_CANDY', +33: 'X_ACCURACY', +34: 'LEAF_STONE', +35: 'METAL_POWDER', +36: 'NUGGET', +37: 'POKE_DOLL', +38: 'FULL_HEAL', +39: 'REVIVE', +40: 'MAX_REVIVE', +41: 'GUARD_SPEC.', +42: 'SUPER_REPEL', +43: 'MAX_REPEL', +44: 'DIRE_HIT', +46: 'FRESH_WATER', +47: 'SODA_POP', +48: 'LEMONADE', +49: 'X_ATTACK', +51: 'X_DEFEND', +52: 'X_SPEED', +53: 'X_SPECIAL', +54: 'COIN_CASE', +55: 'ITEMFINDER', +57: 'EXP_SHARE', +58: 'OLD_ROD', +59: 'GOOD_ROD', +60: 'SILVER_LEAF', +61: 'SUPER_ROD', +62: 'PP_UP', +63: 'ETHER', +64: 'MAX_ETHER', +65: 'ELIXER', +66: 'RED_SCALE', +67: 'SECRETPOTION', +68: 'S.S.TICKET', +69: 'MYSTERY_EGG', +70: 'CLEAR_BELL', +71: 'SILVER_WING', +72: 'MOOMOO_MILK', +73: 'QUICK_CLAW', +74: 'PSNCUREBERRY', +75: 'GOLD_LEAF', +76: 'SOFT_SAND', +77: 'SHARP_BEAK', +78: 'PRZCUREBERRY', +79: 'BURNT_BERRY', +80: 'ICE_BERRY', +81: 'POISON_BARB', +82: "KING'S_ROCK", +83: 'BITTER_BERRY', +84: 'MINT_BERRY', +85: 'RED_APRICORN', +86: 'TINYMUSHROOM', +87: 'BIG_MUSHROOM', +88: 'SILVERPOWDER', +89: 'BLU_APRICORN', +91: 'AMULET_COIN', +92: 'YLW_APRICORN', +93: 'GRN_APRICORN', +94: 'CLEANSE_TAG', +95: 'MYSTIC_WATER', +96: 'TWISTEDSPOON', +97: 'WHT_APRICORN', +98: 'BLACKBELT', +99: 'BLK_APRICORN', +101: 'PNK_APRICORN', +102: 'BLACKGLASSES', +103: 'SLOWPOKETAIL', +104: 'PINK_BOW', +105: 'STICK', +106: 'SMOKE_BALL', +107: 'NEVERMELTICE', +108: 'MAGNET', +109: 'MIRACLEBERRY', +110: 'PEARL', +111: 'BIG_PEARL', +112: 'EVERSTONE', +113: 'SPELL_TAG', +114: 'RAGECANDYBAR', +115: 'GS_BALL', +116: 'BLUE_CARD', +117: 'MIRACLE_SEED', +118: 'THICK_CLUB', +119: 'FOCUS_BAND', +121: 'ENERGYPOWDER', +122: 'ENERGY_ROOT', +123: 'HEAL_POWDER', +124: 'REVIVAL_HERB', +125: 'HARD_STONE', +126: 'LUCKY_EGG', +127: 'CARD_KEY', +128: 'MACHINE_PART', +129: 'EGG_TICKET', +130: 'LOST_ITEM', +131: 'STARDUST', +132: 'STAR_PIECE', +133: 'BASEMENT_KEY', +134: 'PASS', +138: 'CHARCOAL', +139: 'BERRY_JUICE', +140: 'SCOPE_LENS', +143: 'METAL_COAT', +144: 'DRAGON_FANG', +146: 'LEFTOVERS', +150: 'MYSTERYBERRY', +151: 'DRAGON_SCALE', +152: 'BERSERK_GENE', +156: 'SACRED_ASH', +157: 'HEAVY_BALL', +158: 'FLOWER_MAIL', +159: 'LEVEL_BALL', +160: 'LURE_BALL', +161: 'FAST_BALL', +163: 'LIGHT_BALL', +164: 'FRIEND_BALL', +165: 'MOON_BALL', +166: 'LOVE_BALL', +167: 'NORMAL_BOX', +168: 'GORGEOUS_BOX', +169: 'SUN_STONE', +170: 'POLKADOT_BOW', +172: 'UP_GRADE', +173: 'BERRY', +174: 'GOLD_BERRY', +175: 'SQUIRTBOTTLE', +177: 'PARK_BALL', +178: 'RAINBOW_WING', +180: 'BRICK_PIECE', +181: 'SURF_MAIL', +182: 'LITEBLUEMAIL', +183: 'PORTRAITM_AIL', +184: 'LOVELY_MAIL', +185: 'EON_MAIL', +186: 'MORPH_MAIL', +187: 'BLUESKY_MAIL', +188: 'MUSIC_MAIL', +189: 'MIRAGE_MAIL', +191: 'TM_01', +192: 'TM_02', +193: 'TM_03', +194: 'TM_04', +196: 'TM_05', +197: 'TM_06', +198: 'TM_07', +199: 'TM_08', +200: 'TM_09', +201: 'TM_10', +202: 'TM_11', +203: 'TM_12', +204: 'TM_13', +205: 'TM_14', +206: 'TM_15', +207: 'TM_16', +208: 'TM_17', +209: 'TM_18', +210: 'TM_19', +211: 'TM_20', +212: 'TM_21', +213: 'TM_22', +214: 'TM_23', +215: 'TM_24', +216: 'TM_25', +217: 'TM_26', +218: 'TM_27', +219: 'TM_28', +221: 'TM_29', +222: 'TM_30', +223: 'TM_31', +224: 'TM_32', +225: 'TM_33', +226: 'TM_34', +227: 'TM_35', +228: 'TM_36', +229: 'TM_37', +230: 'TM_38', +231: 'TM_39', +232: 'TM_40', +233: 'TM_41', +234: 'TM_42', +235: 'TM_43', +236: 'TM_44', +237: 'TM_45', +238: 'TM_46', +239: 'TM_47', +240: 'TM_48', +241: 'TM_49', +242: 'TM_50', +243: 'HM_01', +244: 'HM_02', +245: 'HM_03', +246: 'HM_04', +247: 'HM_05', +248: 'HM_06', +249: 'HM_07'} diff --git a/extras/pksv.py b/extras/pksv.py new file mode 100644 index 000000000..03443dde2 --- /dev/null +++ b/extras/pksv.py @@ -0,0 +1,502 @@ + +pksv_gs = { + 0x00: "2call", + 0x01: "3call", + 0x02: "2ptcall", + 0x03: "2jump", + 0x04: "3jump", + 0x05: "2ptjump", + 0x06: "if equal", + 0x07: "if not equal", + 0x08: "if false", + 0x09: "if true", + 0x0A: "if less than", + 0x0B: "if greater than", + 0x0C: "jumpstd", + 0x0D: "callstd", + 0x0E: "3callasm", + 0x0F: "special", + 0x10: "2ptcallasm", + 0x11: "checkmaptriggers", + 0x12: "domaptrigger", + 0x13: "checktriggers", + 0x14: "dotrigger", + 0x15: "writebyte", + 0x16: "addvar", + 0x17: "random", + 0x19: "copybytetovar", + 0x1A: "copyvartobyte", + 0x1B: "loadvar", + 0x1C: "checkcode", + 0x1E: "writecode", + 0x1F: "giveitem", + 0x20: "takeitem", + 0x21: "checkitem", + 0x22: "givemoney", + 0x23: "takemoney", + 0x24: "checkmonkey", + 0x25: "givecoins", + 0x26: "takecoins", + 0x27: "checkcoins", + 0x2B: "checktime", + 0x2C: "checkpoke", + 0x2D: "givepoke", + 0x2E: "giveegg", + 0x2F: "givepokeitem", + 0x31: "checkbit1", + 0x32: "clearbit1", + 0x33: "setbit1", + 0x34: "checkbit2", + 0x35: "clearbit2", + 0x36: "setbit2", + 0x37: "wildoff", + 0x38: "wildon", + 0x39: "xycompare", + 0x3A: "warpmod", + 0x3B: "blackoutmod", + 0x3C: "warp", + 0x41: "itemtotext", + 0x43: "trainertotext", + 0x44: "stringtotext", + 0x45: "itemnotify", + 0x46: "pocketisfull", + 0x47: "loadfont", + 0x48: "refreshscreen", + 0x49: "loadmovesprites", + 0x4B: "3writetext", + 0x4C: "2writetext", + 0x4E: "yesorno", + 0x4F: "loadmenudata", + 0x50: "writebackup", + 0x51: "jumptextfaceplayer", + 0x52: "jumptext", + 0x53: "closetext", + 0x54: "keeptextopen", + 0x55: "pokepic", + 0x56: "pokepicyesorno", + 0x57: "interpretmenu", + 0x58: "interpretmenu2", + 0x5C: "loadpokedata", + 0x5D: "loadtrainer", + 0x5E: "startbattle", + 0x5F: "returnafterbattle", + 0x60: "catchtutorial", + 0x63: "winlosstext", + 0x65: "talkaftercancel", + 0x67: "setlasttalked", + 0x68: "applymovement", + 0x6A: "faceplayer", + 0x6B: "faceperson", + 0x6C: "variablesprite", + 0x6D: "disappear", + 0x6E: "appear", + 0x6F: "follow", + 0x70: "stopfollow", + 0x71: "moveperson", + 0x74: "showemote", + 0x75: "spriteface", + 0x76: "follownotexact", + 0x77: "earthquake", + 0x79: "changeblock", + 0x7A: "reloadmap", + 0x7B: "reloadmappart", + 0x7C: "writecmdqueue", + 0x7D: "delcmdqueue", + 0x7E: "playmusic", + 0x7F: "playrammusic", + 0x80: "musicfadeout", + 0x81: "playmapmusic", + 0x82: "reloadmapmusic", + 0x83: "cry", + 0x84: "playsound", + 0x85: "waitbutton", + 0x86: "warpsound", + 0x87: "specialsound", + 0x88: "passtoengine", + 0x89: "newloadmap", + 0x8A: "pause", + 0x8B: "deactivatefacing", + 0x8C: "priorityjump", + 0x8D: "warpcheck", + 0x8E: "ptpriorityjump", + 0x8F: "return", + 0x90: "end", + 0x91: "reloadandreturn", + 0x92: "resetfuncs", + 0x93: "pokemart", + 0x94: "elevator", + 0x95: "trade", + 0x96: "askforphonenumber", + 0x97: "phonecall", + 0x98: "hangup", + 0x99: "describedecoration", + 0x9A: "fruittree", + 0x9C: "checkphonecall", + 0x9D: "verbosegiveitem", + 0x9E: "loadwilddata", + 0x9F: "halloffame", + 0xA0: "credits", + 0xA1: "warpfacing", + 0xA2: "storetext", + 0xA3: "displaylocation", +} + +#see http://www.pokecommunity.com/showpost.php?p=4347261 +#NOTE: this has some updates that need to be back-ported to gold +pksv_crystal = { + 0x00: "2call", + 0x01: "3call", + 0x02: "2ptcall", + 0x03: "2jump", + 0x04: "3jump", + 0x05: "2ptjump", + 0x06: "if equal", + 0x07: "if not equal", + 0x08: "if false", + 0x09: "if true", + 0x0A: "if less than", + 0x0B: "if greater than", + 0x0C: "jumpstd", + 0x0D: "callstd", + 0x0E: "3callasm", + 0x0F: "special", + 0x10: "2ptcallasm", + 0x11: "checkmaptriggers", + 0x12: "domaptrigger", + 0x13: "checktriggers", + 0x14: "dotrigger", + 0x15: "writebyte", + 0x16: "addvar", + 0x17: "random", + 0x19: "copybytetovar", + 0x1A: "copyvartobyte", + 0x1B: "loadvar", + 0x1C: "checkcode", + 0x1D: "writevarcode", + 0x1E: "writecode", + 0x1F: "giveitem", + 0x20: "takeitem", + 0x21: "checkitem", + 0x22: "givemoney", + 0x23: "takemoney", + 0x24: "checkmonkey", + 0x25: "givecoins", + 0x26: "takecoins", + 0x27: "checkcoins", + 0x28: "addcellnum", + 0x29: "delcellnum", + 0x2B: "checktime", + 0x2C: "checkpoke", + 0x2D: "givepoke", + 0x2E: "giveegg", + 0x2F: "givepokeitem", + 0x31: "checkbit1", + 0x32: "clearbit1", + 0x33: "setbit1", + 0x34: "checkbit2", + 0x35: "clearbit2", + 0x36: "setbit2", + 0x37: "wildoff", + 0x38: "wildon", + 0x39: "xycompare", + 0x3A: "warpmod", + 0x3B: "blackoutmod", + 0x3C: "warp", + 0x41: "itemtotext", + 0x43: "trainertotext", + 0x44: "stringtotext", + 0x45: "itemnotify", + 0x46: "pocketisfull", + 0x47: "loadfont", + 0x48: "refreshscreen", + 0x49: "loadmovesprites", + 0x4B: "3writetext", + 0x4C: "2writetext", + 0x4E: "yesorno", + 0x4F: "loadmenudata", + 0x50: "writebackup", + 0x51: "jumptextfaceplayer", + 0x53: "jumptext", + 0x54: "closetext", + 0x55: "keeptextopen", + 0x56: "pokepic", + 0x57: "pokepicyesorno", + 0x58: "interpretmenu", + 0x59: "interpretmenu2", + 0x5D: "loadpokedata", + 0x5E: "loadtrainer", + 0x5F: "startbattle", + 0x60: "returnafterbattle", + 0x61: "catchtutorial", + 0x64: "winlosstext", + 0x66: "talkaftercancel", + 0x68: "setlasttalked", + 0x69: "applymovement", + 0x6B: "faceplayer", + 0x6C: "faceperson", + 0x6D: "variablesprite", + 0x6E: "disappear", + 0x6F: "appear", + 0x70: "follow", + 0x71: "stopfollow", + 0x72: "moveperson", + 0x75: "showemote", + 0x76: "spriteface", + 0x77: "follownotexact", + 0x78: "earthquake", + 0x7A: "changeblock", + 0x7B: "reloadmap", + 0x7C: "reloadmappart", + 0x7D: "writecmdqueue", + 0x7E: "delcmdqueue", + 0x7F: "playmusic", + 0x80: "playrammusic", + 0x81: "musicfadeout", + 0x82: "playmapmusic", + 0x83: "reloadmapmusic", + 0x84: "cry", + 0x85: "playsound", + 0x86: "waitbutton", + 0x87: "warpsound", + 0x88: "specialsound", + 0x89: "passtoengine", + 0x8A: "newloadmap", + 0x8B: "pause", + 0x8C: "deactivatefacing", + 0x8D: "priorityjump", + 0x8E: "warpcheck", + 0x8F: "ptpriorityjump", + 0x90: "return", + 0x91: "end", + 0x92: "reloadandreturn", + 0x93: "resetfuncs", + 0x94: "pokemart", + 0x95: "elevator", + 0x96: "trade", + 0x97: "askforphonenumber", + 0x98: "phonecall", + 0x99: "hangup", + 0x9A: "describedecoration", + 0x9B: "fruittree", + 0x9C: "specialphonecall", + 0x9D: "checkphonecall", + 0x9E: "verbosegiveitem", + 0x9F: "verbosegiveitem2", + 0xA0: "loadwilddata", + 0xA1: "halloffame", + 0xA2: "credits", + 0xA3: "warpfacing", + 0xA4: "storetext", + 0xA5: "displaylocation", + 0xB2: "unknown0xb2", +} + +#these cause the script to end; used in create_command_classes +pksv_crystal_more_enders = [0x03, 0x04, 0x05, 0x0C, 0x51, 0x53, + 0x8D, 0x8F, 0x90, 0x91, 0x92, 0x9B, + 0xB2, #maybe? + 0xCC, #maybe? + ] + +#these have no pksv names as of pksv 2.1.1 +pksv_crystal_unknowns = [ + 0x9F, + 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, + 0xCC, 0xCD, + 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, + 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, + 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, +] + +#byte: [name, [param1 name, param1 type], [param2 name, param2 type], ...] +#0x9E: ["verbosegiveitem", ["item", ItemLabelByte], ["quantity", SingleByteParam]], +from crystal import ScriptPointerLabelParam, ScriptPointerLabelBeforeBank,\ + PointerLabelToScriptPointer,\ + SingleByteParam, MultiByteParam, AsmPointerParam,\ + PointerToAsmPointerParam, MapGroupParam, MapIdParam,\ + RAMAddressParam, ItemLabelByte, MoneyByteParam, CoinByteParam,\ + PokemonParam, DecimalParam, PointerParamToItemAndLetter,\ + TrainerIdParam, TrainerGroupParam, RawTextPointerLabelParam,\ + PointerLabelBeforeBank, TextPointerLabelParam, MenuDataPointerParam,\ + MovementPointerLabelParam, MapDataPointerParam, PointerLabelParam + +pksv_crystal_more = { + 0x00: ["2call", ["pointer", ScriptPointerLabelParam]], + 0x01: ["3call", ["pointer", ScriptPointerLabelBeforeBank]], + 0x02: ["2ptcall", ["pointer", PointerLabelToScriptPointer]], + 0x03: ["2jump", ["pointer", ScriptPointerLabelParam]], + 0x04: ["3jump", ["pointer", ScriptPointerLabelBeforeBank]], + 0x05: ["2ptjump", ["pointer", PointerLabelToScriptPointer]], + 0x06: ["if equal", ["byte", SingleByteParam], ["pointer", ScriptPointerLabelParam]], + 0x07: ["if not equal", ["byte", SingleByteParam], ["pointer", ScriptPointerLabelParam]], + 0x08: ["if false", ["pointer", ScriptPointerLabelParam]], + 0x09: ["if true", ["pointer", ScriptPointerLabelParam]], + 0x0A: ["if less than", ["byte", SingleByteParam], ["pointer", ScriptPointerLabelParam]], + 0x0B: ["if greater than", ["byte", SingleByteParam], ["pointer", ScriptPointerLabelParam]], + 0x0C: ["jumpstd", ["predefined_script", MultiByteParam]], + 0x0D: ["callstd", ["predefined_script", MultiByteParam]], + 0x0E: ["3callasm", ["asm", AsmPointerParam]], + 0x0F: ["special", ["predefined_script", MultiByteParam]], + 0x10: ["2ptcallasm", ["asm", PointerToAsmPointerParam]], + #should map_group/map_id be dealt with in some special way in the asm? + 0x11: ["checkmaptriggers", ["map_group", SingleByteParam], ["map_id", SingleByteParam]], + 0x12: ["domaptrigger", ["map_group", MapGroupParam], ["map_id", MapIdParam], ["trigger_id", SingleByteParam]], + 0x13: ["checktriggers"], + 0x14: ["dotrigger", ["trigger_id", SingleByteParam]], + 0x15: ["writebyte", ["value", SingleByteParam]], + 0x16: ["addvar", ["value", SingleByteParam]], + 0x17: ["random", ["input", SingleByteParam]], + 0x18: ["checkver"], + 0x19: ["copybytetovar", ["address", RAMAddressParam]], + 0x1A: ["copyvartobyte", ["address", RAMAddressParam]], + 0x1B: ["loadvar", ["address", RAMAddressParam], ["value", SingleByteParam]], + 0x1C: ["checkcode", ["variable_id", SingleByteParam]], + 0x1D: ["writevarcode", ["variable_id", SingleByteParam]], + 0x1E: ["writecode", ["variable_id", SingleByteParam], ["value", SingleByteParam]], + 0x1F: ["giveitem", ["item", ItemLabelByte], ["quantity", SingleByteParam]], + 0x20: ["takeitem", ["item", ItemLabelByte], ["quantity", SingleByteParam]], + 0x21: ["checkitem", ["item", ItemLabelByte]], + 0x22: ["givemoney", ["account", SingleByteParam], ["money", MoneyByteParam]], + 0x23: ["takemoney", ["account", SingleByteParam], ["money", MoneyByteParam]], + 0x24: ["checkmonkey", ["account", SingleByteParam], ["money", MoneyByteParam]], + 0x25: ["givecoins", ["coins", CoinByteParam]], + 0x26: ["takecoins", ["coins", CoinByteParam]], + 0x27: ["checkcoins", ["coins", CoinByteParam]], + #0x28-0x2A not from pksv + 0x28: ["addcellnum", ["person", SingleByteParam]], + 0x29: ["delcellnum", ["person", SingleByteParam]], + 0x2A: ["checkcellnum", ["person", SingleByteParam]], + #back on track... + 0x2B: ["checktime", ["time", SingleByteParam]], + 0x2C: ["checkpoke", ["pkmn", PokemonParam]], +#0x2D: ["givepoke", ], .... see GivePoke class + 0x2E: ["giveegg", ["pkmn", PokemonParam], ["level", DecimalParam]], + 0x2F: ["givepokeitem", ["pointer", PointerParamToItemAndLetter]], + 0x30: ["checkpokeitem", ["pointer", PointerParamToItemAndLetter]], #not pksv + 0x31: ["checkbit1", ["bit_number", MultiByteParam]], + 0x32: ["clearbit1", ["bit_number", MultiByteParam]], + 0x33: ["setbit1", ["bit_number", MultiByteParam]], + 0x34: ["checkbit2", ["bit_number", MultiByteParam]], + 0x35: ["clearbit2", ["bit_number", MultiByteParam]], + 0x36: ["setbit2", ["bit_number", MultiByteParam]], + 0x37: ["wildoff"], + 0x38: ["wildon"], + 0x39: ["xycompare", ["pointer", MultiByteParam]], + 0x3A: ["warpmod", ["warp_id", SingleByteParam], ["map_group", MapGroupParam], ["map_id", MapIdParam]], + 0x3B: ["blackoutmod", ["map_group", MapGroupParam], ["map_id", MapIdParam]], + 0x3C: ["warp", ["map_group", MapGroupParam], ["map_id", MapIdParam], ["x", SingleByteParam], ["y", SingleByteParam]], + 0x3D: ["readmoney", ["account", SingleByteParam], ["memory", SingleByteParam]], #not pksv + 0x3E: ["readcoins", ["memory", SingleByteParam]], #not pksv + 0x3F: ["RAM2MEM", ["memory", SingleByteParam]], #not pksv + 0x40: ["pokenamemem", ["pokemon", PokemonParam], ["memory", SingleByteParam]], #not pksv + 0x41: ["itemtotext", ["item", ItemLabelByte], ["memory", SingleByteParam]], + 0x42: ["mapnametotext", ["memory", SingleByteParam]], #not pksv + 0x43: ["trainertotext", ["trainer_id", TrainerIdParam], ["trainer_group", TrainerGroupParam], ["memory", SingleByteParam]], + 0x44: ["stringtotext", ["text_pointer", RawTextPointerLabelParam], ["memory", SingleByteParam]], + 0x45: ["itemnotify"], + 0x46: ["pocketisfull"], + 0x47: ["loadfont"], + 0x48: ["refreshscreen", ["dummy", SingleByteParam]], + 0x49: ["loadmovesprites"], + 0x4A: ["loadbytec1ce", ["byte", SingleByteParam]], #not pksv + 0x4B: ["3writetext", ["text_pointer", PointerLabelBeforeBank]], + 0x4C: ["2writetext", ["text_pointer", TextPointerLabelParam]], + 0x4D: ["repeattext", ["byte", SingleByteParam], ["byte", SingleByteParam]], #not pksv + 0x4E: ["yesorno"], + 0x4F: ["loadmenudata", ["data", MenuDataPointerParam]], + 0x50: ["writebackup"], + 0x51: ["jumptextfaceplayer", ["text_pointer", RawTextPointerLabelParam]], + 0x53: ["jumptext", ["text_pointer", TextPointerLabelParam]], + 0x54: ["closetext"], + 0x55: ["keeptextopen"], + 0x56: ["pokepic", ["pokemon", PokemonParam]], + 0x57: ["pokepicyesorno"], + 0x58: ["interpretmenu"], + 0x59: ["interpretmenu2"], +#not pksv + 0x5A: ["loadpikachudata"], + 0x5B: ["battlecheck"], + 0x5C: ["loadtrainerdata"], +#back to pksv.. + 0x5D: ["loadpokedata", ["pokemon", PokemonParam], ["level", DecimalParam]], + 0x5E: ["loadtrainer", ["trainer_group", TrainerGroupParam], ["trainer_id", TrainerIdParam]], + 0x5F: ["startbattle"], + 0x60: ["returnafterbattle"], + 0x61: ["catchtutorial", ["byte", SingleByteParam]], +#not pksv + 0x62: ["trainertext", ["which_text", SingleByteParam]], + 0x63: ["trainerstatus", ["action", SingleByteParam]], +#back to pksv.. + 0x64: ["winlosstext", ["win_text_pointer", TextPointerLabelParam], ["loss_text_pointer", TextPointerLabelParam]], + 0x65: ["scripttalkafter"], #not pksv + 0x66: ["talkaftercancel"], + 0x67: ["talkaftercheck"], + 0x68: ["setlasttalked", ["person", SingleByteParam]], + 0x69: ["applymovement", ["person", SingleByteParam], ["data", MovementPointerLabelParam]], + 0x6A: ["applymovement2", ["data", MovementPointerLabelParam]], #not pksv + 0x6B: ["faceplayer"], + 0x6C: ["faceperson", ["person1", SingleByteParam], ["person2", SingleByteParam]], + 0x6D: ["variablesprite", ["byte", SingleByteParam], ["sprite", SingleByteParam]], + 0x6E: ["disappear", ["person", SingleByteParam]], #hideperson + 0x6F: ["appear", ["person", SingleByteParam]], #showperson + 0x70: ["follow", ["person2", SingleByteParam], ["person1", SingleByteParam]], + 0x71: ["stopfollow"], + 0x72: ["moveperson", ["person", SingleByteParam], ["x", SingleByteParam], ["y", SingleByteParam]], + 0x73: ["writepersonxy", ["person", SingleByteParam]], #not pksv + 0x74: ["loademote", ["bubble", SingleByteParam]], + 0x75: ["showemote", ["bubble", SingleByteParam], ["person", SingleByteParam], ["time", SingleByteParam]], + 0x76: ["spriteface", ["person", SingleByteParam], ["facing", SingleByteParam]], + 0x77: ["follownotexact", ["person2", SingleByteParam], ["person1", SingleByteParam]], + 0x78: ["earthquake", ["param", SingleByteParam]], + 0x79: ["changemap", ["map_data_pointer", MapDataPointerParam]], + 0x7A: ["changeblock", ["x", SingleByteParam], ["y", SingleByteParam], ["block", SingleByteParam]], + 0x7B: ["reloadmap"], + 0x7C: ["reloadmappart"], + 0x7D: ["writecmdqueue", ["queue_pointer", MultiByteParam]], + 0x7E: ["delcmdqueue", ["byte", SingleByteParam]], + 0x7F: ["playmusic", ["music_pointer", MultiByteParam]], + 0x80: ["playrammusic"], + 0x81: ["musicfadeout", ["music", MultiByteParam], ["fadetime", SingleByteParam]], + 0x82: ["playmapmusic"], + 0x83: ["reloadmapmusic"], + 0x84: ["cry", ["cry_id", SingleByteParam], ["wtf", SingleByteParam]], #XXX maybe it should use PokemonParam + 0x85: ["playsound", ["sound_pointer", MultiByteParam]], + 0x86: ["waitbutton"], + 0x87: ["warpsound"], + 0x88: ["specialsound"], + 0x89: ["passtoengine", ["data_pointer", PointerLabelBeforeBank]], + 0x8A: ["newloadmap", ["which_method", SingleByteParam]], + 0x8B: ["pause", ["length", SingleByteParam]], + 0x8C: ["deactivatefacing", ["time", SingleByteParam]], + 0x8D: ["priorityjump", ["pointer", ScriptPointerLabelParam]], + 0x8E: ["warpcheck"], + 0x8F: ["ptpriorityjump", ["pointer", ScriptPointerLabelParam]], + 0x90: ["return"], + 0x91: ["end"], + 0x92: ["reloadandreturn"], + 0x93: ["resetfuncs"], + 0x94: ["pokemart", ["dialog_id", SingleByteParam], ["mart_id", MultiByteParam]], #maybe it should be a pokemark constant id/label? + 0x95: ["elevator", ["floor_list_pointer", PointerLabelParam]], + 0x96: ["trade", ["trade_id", SingleByteParam]], + 0x97: ["askforphonenumber", ["number", SingleByteParam]], + 0x98: ["phonecall", ["caller_name", RawTextPointerLabelParam]], + 0x99: ["hangup"], + 0x9A: ["describedecoration", ["byte", SingleByteParam]], + 0x9B: ["fruittree", ["tree_id", SingleByteParam]], + 0x9C: ["specialphonecall", ["call_id", SingleByteParam], ["wtf", SingleByteParam]], + 0x9D: ["checkphonecall"], + 0x9E: ["verbosegiveitem", ["item", ItemLabelByte], ["quantity", DecimalParam]], + 0x9F: ["verbosegiveitem2", ["item", ItemLabelByte]], + 0xA0: ["loadwilddata", ["map_group", MapGroupParam], ["map_id", MapIdParam]], + 0xA1: ["halloffame"], + 0xA2: ["credits"], + 0xA3: ["warpfacing", ["facing", SingleByteParam], ["map_group", MapGroupParam], ["map_id", MapIdParam], ["x", SingleByteParam], ["y", SingleByteParam]], + 0xA4: ["storetext", ["pointer", PointerLabelBeforeBank], ["memory", SingleByteParam]], + 0xA5: ["displaylocation", ["id", SingleByteParam]], + 0xA8: ["unknown0xa8", ["unknown", SingleByteParam]], + 0xB2: ["unknown0xb2", ["unknown", SingleByteParam]], + 0xCC: ["unknown0xcc"], +} + diff --git a/extras/pokemon_constants.py b/extras/pokemon_constants.py new file mode 100644 index 000000000..33b6a0ed7 --- /dev/null +++ b/extras/pokemon_constants.py @@ -0,0 +1,253 @@ +pokemon_constants = { +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: "NIDORAN_F", +30: "NIDORINA", +31: "NIDOQUEEN", +32: "NIDORAN_M", +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", +}