gameboy_worlds.emulation.pokemon.registry
1from typing import Optional, Union, Type, Dict 2from gameboy_worlds.emulation.parser import StateParser 3from gameboy_worlds.emulation.tracker import StateTracker 4from gameboy_worlds.emulation.emulator import Emulator 5 6from gameboy_worlds.emulation.pokemon.parsers import ( 7 MemoryBasedPokemonRedStateParser, 8 PokemonBrownStateParser, 9 PokemonStarBeastsStateParser, 10 PokemonStarBeastsCometStateParser, 11 PokemonCrystalStateParser, 12 PokemonPrismStateParser, 13 PokemonFoolsGoldStateParser, 14) 15from gameboy_worlds.emulation.pokemon.trackers import ( 16 PokemonOCRTracker, 17 PokemonRedStarterTracker, 18 PokemonRedCenterTestTracker, 19 PokemonRedMtMoonTestTracker, 20 PokemonRedSpeakToBillTestTracker, 21 PokemonRedPickupPokeballTestTracker, 22 PokemonRedSpeakToBillTestTracker, 23 PokemonRedPickupPokeballTestTracker, 24 PokemonRedReadTrainersTipsSignTestTracker, 25 PokemonRedSpeakToCinnabarGymAideCompleteTestTracker, 26 PokemonRedSpeakToCinnabarMonkTestTracker, 27 PokemonRedDefeatedBrockTestTracker, 28 PokemonRedDefeatedLassTestTracker, 29 PokemonRedCaughtPidgeyTestTracker, 30 PokemonRedCaughtPikachuTestTracker, 31 PokemonRedBoughtPotionAtPewterPokemartTestTracker, 32 PokemonRedUsedPotionOnCharmanderTestTracker, 33 PokemonRedOpenMapTestTracker, 34 PokemonPrismFirstBadgeTestTracker, 35) 36from gameboy_worlds.emulation.pokemon.emulators import PokemonEmulator 37 38 39GAME_TO_GB_NAME = { 40 "pokemon_red": "PokemonRed.gb", 41 "pokemon_brown": "PokemonBrown.gb", 42 "pokemon_starbeasts": "PokemonStarBeasts.gb", 43 "pokemon_starbeasts_comet": "PokemonStarBeastsComet.gb", 44 "pokemon_crystal": "PokemonCrystal.gbc", 45 "pokemon_fools_gold": "PokemonFoolsGold.gbc", 46 "pokemon_prism": "PokemonPrism.gbc", 47} 48""" Expected save name for each game. Save the file to <storage_dir_from_config_file>/<game_name>_rom_data/<gb_name>""" 49 50STRONGEST_PARSERS: Dict[str, Type[StateParser]] = { 51 "pokemon_red": MemoryBasedPokemonRedStateParser, 52 "pokemon_brown": PokemonBrownStateParser, 53 "pokemon_crystal": PokemonCrystalStateParser, 54 "pokemon_starbeasts": PokemonStarBeastsStateParser, 55 "pokemon_starbeasts_comet": PokemonStarBeastsCometStateParser, 56 "pokemon_fools_gold": PokemonFoolsGoldStateParser, 57 "pokemon_prism": PokemonPrismStateParser, 58} 59""" Mapping of game names to their corresponding strongest StateParser classes. 60Unless you have a very good reason, you should always use the STRONGEST possible parser for a given game. 61The parser itself does not affect performance, as for it to perform a read / screen comparison operation , it must be called upon by the state tracker. 62This means there is never a reason to use a weaker parser. 63""" 64 65 66AVAILABLE_STATE_TRACKERS: Dict[str, Dict[str, Type[StateTracker]]] = { 67 "pokemon_red": { 68 "default": PokemonOCRTracker, 69 "starter_example": PokemonRedStarterTracker, 70 "viridian_center_test": PokemonRedCenterTestTracker, 71 "mt_moon_test": PokemonRedMtMoonTestTracker, 72 "speak_to_bill_test": PokemonRedSpeakToBillTestTracker, 73 "pickup_pokeball_test": PokemonRedPickupPokeballTestTracker, 74 "read_trainers_tips_sign_test": PokemonRedReadTrainersTipsSignTestTracker, 75 "speak_to_cinnabar_gym_aide_complete_test": PokemonRedSpeakToCinnabarGymAideCompleteTestTracker, 76 "speak_to_cinnabar_monk_test": PokemonRedSpeakToCinnabarMonkTestTracker, 77 "defeated_brock_test": PokemonRedDefeatedBrockTestTracker, 78 "defeated_lass_test": PokemonRedDefeatedLassTestTracker, 79 "caught_pidgey_test": PokemonRedCaughtPidgeyTestTracker, 80 "caught_pikachu_test": PokemonRedCaughtPikachuTestTracker, 81 "bought_potion_at_pewter_pokemart_test": PokemonRedBoughtPotionAtPewterPokemartTestTracker, 82 "used_potion_on_charmander_test": PokemonRedUsedPotionOnCharmanderTestTracker, 83 "open_map_test": PokemonRedOpenMapTestTracker, 84 }, 85 "pokemon_brown": { 86 "default": PokemonOCRTracker, 87 }, 88 "pokemon_crystal": { 89 "default": PokemonOCRTracker, 90 }, 91 "pokemon_starbeasts": { 92 "default": PokemonOCRTracker, 93 }, 94 "pokemon_starbeasts_comet": { 95 "default": PokemonOCRTracker, 96 }, 97 "pokemon_fools_gold": { 98 "default": PokemonOCRTracker, 99 }, 100 "pokemon_prism": { 101 "default": PokemonOCRTracker, 102 "first_badge_test": PokemonPrismFirstBadgeTestTracker, 103 }, 104} 105""" Mapping of game names to their available StateTracker classes with string identifiers. """ 106 107 108AVAILABLE_EMULATORS: Dict[str, Dict[str, Type[Emulator]]] = { 109 "pokemon_red": { 110 "default": PokemonEmulator, 111 }, 112 "pokemon_brown": { 113 "default": PokemonEmulator, 114 }, 115 "pokemon_crystal": { 116 "default": PokemonEmulator, 117 }, 118 "pokemon_starbeasts": { 119 "default": PokemonEmulator, 120 }, 121 "pokemon_starbeasts_comet": { 122 "default": PokemonEmulator, 123 }, 124 "pokemon_fools_gold": { 125 "default": PokemonEmulator, 126 }, 127 "pokemon_prism": { 128 "default": PokemonEmulator, 129 }, 130} 131""" Mapping of game names to their available Emulator classes with string identifiers. """
GAME_TO_GB_NAME =
{'pokemon_red': 'PokemonRed.gb', 'pokemon_brown': 'PokemonBrown.gb', 'pokemon_starbeasts': 'PokemonStarBeasts.gb', 'pokemon_starbeasts_comet': 'PokemonStarBeastsComet.gb', 'pokemon_crystal': 'PokemonCrystal.gbc', 'pokemon_fools_gold': 'PokemonFoolsGold.gbc', 'pokemon_prism': 'PokemonPrism.gbc'}
Expected save name for each game. Save the file to
STRONGEST_PARSERS: Dict[str, Type[gameboy_worlds.emulation.parser.StateParser]] =
{'pokemon_red': <class 'gameboy_worlds.emulation.pokemon.parsers.MemoryBasedPokemonRedStateParser'>, 'pokemon_brown': <class 'gameboy_worlds.emulation.pokemon.parsers.PokemonBrownStateParser'>, 'pokemon_crystal': <class 'gameboy_worlds.emulation.pokemon.parsers.PokemonCrystalStateParser'>, 'pokemon_starbeasts': <class 'gameboy_worlds.emulation.pokemon.parsers.PokemonStarBeastsStateParser'>, 'pokemon_starbeasts_comet': <class 'gameboy_worlds.emulation.pokemon.parsers.PokemonStarBeastsCometStateParser'>, 'pokemon_fools_gold': <class 'gameboy_worlds.emulation.pokemon.parsers.PokemonFoolsGoldStateParser'>, 'pokemon_prism': <class 'gameboy_worlds.emulation.pokemon.parsers.PokemonPrismStateParser'>}
Mapping of game names to their corresponding strongest StateParser classes. Unless you have a very good reason, you should always use the STRONGEST possible parser for a given game. The parser itself does not affect performance, as for it to perform a read / screen comparison operation , it must be called upon by the state tracker. This means there is never a reason to use a weaker parser.
AVAILABLE_STATE_TRACKERS: Dict[str, Dict[str, Type[gameboy_worlds.emulation.tracker.StateTracker]]] =
{'pokemon_red': {'default': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonOCRTracker'>, 'starter_example': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedStarterTracker'>, 'viridian_center_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedCenterTestTracker'>, 'mt_moon_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedMtMoonTestTracker'>, 'speak_to_bill_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedSpeakToBillTestTracker'>, 'pickup_pokeball_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedPickupPokeballTestTracker'>, 'read_trainers_tips_sign_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedReadTrainersTipsSignTestTracker'>, 'speak_to_cinnabar_gym_aide_complete_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedSpeakToCinnabarGymAideCompleteTestTracker'>, 'speak_to_cinnabar_monk_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedSpeakToCinnabarMonkTestTracker'>, 'defeated_brock_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedDefeatedBrockTestTracker'>, 'defeated_lass_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedDefeatedLassTestTracker'>, 'caught_pidgey_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedCaughtPidgeyTestTracker'>, 'caught_pikachu_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedCaughtPikachuTestTracker'>, 'bought_potion_at_pewter_pokemart_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedBoughtPotionAtPewterPokemartTestTracker'>, 'used_potion_on_charmander_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedUsedPotionOnCharmanderTestTracker'>, 'open_map_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonRedOpenMapTestTracker'>}, 'pokemon_brown': {'default': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonOCRTracker'>}, 'pokemon_crystal': {'default': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonOCRTracker'>}, 'pokemon_starbeasts': {'default': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonOCRTracker'>}, 'pokemon_starbeasts_comet': {'default': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonOCRTracker'>}, 'pokemon_fools_gold': {'default': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonOCRTracker'>}, 'pokemon_prism': {'default': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonOCRTracker'>, 'first_badge_test': <class 'gameboy_worlds.emulation.pokemon.trackers.PokemonPrismFirstBadgeTestTracker'>}}
Mapping of game names to their available StateTracker classes with string identifiers.
AVAILABLE_EMULATORS: Dict[str, Dict[str, Type[gameboy_worlds.emulation.emulator.Emulator]]] =
{'pokemon_red': {'default': <class 'gameboy_worlds.emulation.pokemon.emulators.PokemonEmulator'>}, 'pokemon_brown': {'default': <class 'gameboy_worlds.emulation.pokemon.emulators.PokemonEmulator'>}, 'pokemon_crystal': {'default': <class 'gameboy_worlds.emulation.pokemon.emulators.PokemonEmulator'>}, 'pokemon_starbeasts': {'default': <class 'gameboy_worlds.emulation.pokemon.emulators.PokemonEmulator'>}, 'pokemon_starbeasts_comet': {'default': <class 'gameboy_worlds.emulation.pokemon.emulators.PokemonEmulator'>}, 'pokemon_fools_gold': {'default': <class 'gameboy_worlds.emulation.pokemon.emulators.PokemonEmulator'>}, 'pokemon_prism': {'default': <class 'gameboy_worlds.emulation.pokemon.emulators.PokemonEmulator'>}}
Mapping of game names to their available Emulator classes with string identifiers.