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 /_rom_data/

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.