Config = {} --- Return initial data for Config --- @within Config function Config.initial_data() return { screen = { width = 240, height = 136 }, colors = { black = 2, light_grey = 13, dark_grey = 14, red = 0, green = 7, blue = 9, white = 12, item = 12, meter_bg = 12 }, timing = { splash_duration = 120 } } end --- Restores default configuration settings. --- @within Config function Config.reset() local initial = Config.initial_data() Config.screen = initial.screen Config.colors = initial.colors Config.timing = initial.timing end local CONFIG_SAVE_BANK = 7 local CONFIG_MAGIC_VALUE_ADDRESS = 2 local CONFIG_SPLASH_DURATION_ADDRESS = 3 local CONFIG_MAGIC_VALUE = 0xDE --- Saves the current configuration. --- @within Config function Config.save() mset(CONFIG_MAGIC_VALUE, CONFIG_MAGIC_VALUE_ADDRESS, CONFIG_SAVE_BANK) mset(Config.timing.splash_duration, CONFIG_SPLASH_DURATION_ADDRESS, CONFIG_SAVE_BANK) end --- Loads saved configuration. --- @within Config function Config.load() if mget(CONFIG_MAGIC_VALUE_ADDRESS, CONFIG_SAVE_BANK) == CONFIG_MAGIC_VALUE then Config.timing.splash_duration = mget(CONFIG_SPLASH_DURATION_ADDRESS, CONFIG_SAVE_BANK) else Config.reset() end end Config.load()