Added options from Maseya Palette Randomizer (#145)

Add remaining palette shuffle options
This commit is contained in:
Edos512 2020-10-24 02:44:27 +02:00 committed by GitHub
parent b2a60ac926
commit b91a627b32
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 499 additions and 33 deletions

View File

@ -34,8 +34,12 @@ def main():
''')
parser.add_argument('--heartcolor', default='red', const='red', nargs='?', choices=['red', 'blue', 'green', 'yellow', 'random'],
help='Select the color of Link\'s heart meter. (default: %(default)s)')
parser.add_argument('--ow_palettes', default='default', choices=['default', 'random', 'blackout'])
parser.add_argument('--uw_palettes', default='default', choices=['default', 'random', 'blackout'])
parser.add_argument('--ow_palettes', default='default', choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
parser.add_argument('--link_palettes', default='default', choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
parser.add_argument('--shield_palettes', default='default', choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
parser.add_argument('--sword_palettes', default='default', choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
parser.add_argument('--hud_palettes', default='default', choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
parser.add_argument('--uw_palettes', default='default', choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
parser.add_argument('--sprite', help='''\
Path to a sprite sheet to use for Link. Needs to be in
binary format and have a length of 0x7000 (28672) bytes,

View File

@ -10,19 +10,27 @@ def adjust(args):
start = time.perf_counter()
logger = logging.getLogger('Adjuster')
logger.info('Patching ROM.')
vanillaRom = args.baserom
if os.path.splitext(args.rom)[-1].lower() == '.bmbp':
import Patch
meta, args.rom = Patch.create_rom_file(args.rom)
if os.stat(args.rom).st_size in (0x200000, 0x400000) and os.path.splitext(args.rom)[-1].lower() == '.sfc':
rom = LocalRom(args.rom, patch=False)
rom = LocalRom(args.rom, patch=False, vanillaRom=vanillaRom)
else:
raise RuntimeError(
'Provided Rom is not a valid Link to the Past Randomizer Rom. Please provide one for adjusting.')
palettes_options={}
palettes_options['dungeon']=args.uw_palettes
palettes_options['overworld']=args.ow_palettes
palettes_options['hud']=args.hud_palettes
palettes_options['sword']=args.sword_palettes
palettes_options['shield']=args.shield_palettes
palettes_options['link']=args.link_palettes
apply_rom_settings(rom, args.heartbeep, args.heartcolor, args.quickswap, args.fastmenu, args.disablemusic,
args.sprite, args.ow_palettes, args.uw_palettes)
args.sprite, palettes_options)
path = output_path(f'{os.path.basename(args.rom)[:-4]}_adjusted.sfc')
rom.write_to_file(path)

View File

@ -283,8 +283,13 @@ def parse_arguments(argv, no_defaults=False):
''')
parser.add_argument('--heartcolor', default=defval('red'), const='red', nargs='?', choices=['red', 'blue', 'green', 'yellow', 'random'],
help='Select the color of Link\'s heart meter. (default: %(default)s)')
parser.add_argument('--ow_palettes', default=defval('default'), choices=['default', 'random', 'blackout'])
parser.add_argument('--uw_palettes', default=defval('default'), choices=['default', 'random', 'blackout'])
parser.add_argument('--ow_palettes', default=defval('default'), choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
parser.add_argument('--uw_palettes', default=defval('default'), choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
parser.add_argument('--hud_palettes', default=defval('default'), choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
parser.add_argument('--shield_palettes', default=defval('default'), choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
parser.add_argument('--sword_palettes', default=defval('default'), choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
parser.add_argument('--link_palettes', default=defval('default'), choices=['default', 'random', 'blackout','puke','classic','grayscale','negative','dizzy','sick'])
parser.add_argument('--sprite', help='''\
Path to a sprite sheet to use for Link. Needs to be in
binary format and have a length of 0x7000 (28672) bytes,

67
Gui.py
View File

@ -198,7 +198,7 @@ def guiMain(args=None):
owPalettesLabel.pack(side=LEFT)
owPalettesVar = StringVar()
owPalettesVar.set('default')
owPalettesOptionMenu = OptionMenu(owPalettesFrame, owPalettesVar, 'default', 'random', 'blackout')
owPalettesOptionMenu = OptionMenu(owPalettesFrame, owPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
owPalettesOptionMenu.pack(side=LEFT)
uwPalettesFrame = Frame(romOptionsFrame)
@ -207,11 +207,41 @@ def guiMain(args=None):
uwPalettesLabel.pack(side=LEFT)
uwPalettesVar = StringVar()
uwPalettesVar.set('default')
uwPalettesOptionMenu = OptionMenu(uwPalettesFrame, uwPalettesVar, 'default', 'random', 'blackout')
uwPalettesOptionMenu = OptionMenu(uwPalettesFrame, uwPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
uwPalettesOptionMenu.pack(side=LEFT)
hudPalettesFrame = Frame(romOptionsFrame)
hudPalettesFrame.grid(row=4, column=0, sticky=E)
hudPalettesLabel = Label(hudPalettesFrame, text='HUD palettes')
hudPalettesLabel.pack(side=LEFT)
hudPalettesVar = StringVar()
hudPalettesVar.set('default')
hudPalettesOptionMenu = OptionMenu(hudPalettesFrame, hudPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
hudPalettesOptionMenu.pack(side=LEFT)
swordPalettesFrame = Frame(romOptionsFrame)
swordPalettesFrame.grid(row=4, column=1, sticky=E)
swordPalettesLabel = Label(swordPalettesFrame, text='Sword palettes')
swordPalettesLabel.pack(side=LEFT)
swordPalettesVar = StringVar()
swordPalettesVar.set('default')
swordPalettesOptionMenu = OptionMenu(swordPalettesFrame, swordPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
swordPalettesOptionMenu.pack(side=LEFT)
shieldPalettesFrame = Frame(romOptionsFrame)
shieldPalettesFrame.grid(row=5, column=0, sticky=E)
shieldPalettesLabel = Label(shieldPalettesFrame, text='Shield palettes')
shieldPalettesLabel.pack(side=LEFT)
shieldPalettesVar = StringVar()
shieldPalettesVar.set('default')
shieldPalettesOptionMenu = OptionMenu(shieldPalettesFrame, shieldPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
shieldPalettesOptionMenu.pack(side=LEFT)
romDialogFrame = Frame(romOptionsFrame)
romDialogFrame.grid(row=4, column=0, columnspan=2, sticky=W+E)
romDialogFrame.grid(row=6, column=0, columnspan=2, sticky=W+E)
baseRomLabel = Label(romDialogFrame, text='Base Rom: ')
romVar = StringVar(value="Zelda no Densetsu - Kamigami no Triforce (Japan).sfc")
@ -538,6 +568,9 @@ def guiMain(args=None):
guiargs.disablemusic = bool(disableMusicVar.get())
guiargs.ow_palettes = owPalettesVar.get()
guiargs.uw_palettes = uwPalettesVar.get()
guiargs.hud_palettes = hudPalettesVar.get()
guiargs.sword_palettes = swordPalettesVar.get()
guiargs.shield_palettes = shieldPalettesVar.get()
guiargs.shuffleganon = bool(shuffleGanonVar.get())
guiargs.hints = bool(hintsVar.get())
guiargs.enemizercli = enemizerCLIpathVar.get()
@ -702,22 +735,43 @@ def guiMain(args=None):
fastMenuLabel2.pack(side=LEFT)
owPalettesFrame2 = Frame(drowDownFrame2)
owPalettesOptionMenu2 = OptionMenu(owPalettesFrame2, owPalettesVar, 'default', 'random', 'blackout')
owPalettesOptionMenu2 = OptionMenu(owPalettesFrame2, owPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
owPalettesOptionMenu2.pack(side=RIGHT)
owPalettesLabel2 = Label(owPalettesFrame2, text='Overworld palettes')
owPalettesLabel2.pack(side=LEFT)
uwPalettesFrame2 = Frame(drowDownFrame2)
uwPalettesOptionMenu2 = OptionMenu(uwPalettesFrame2, uwPalettesVar, 'default', 'random', 'blackout')
uwPalettesOptionMenu2 = OptionMenu(uwPalettesFrame2, uwPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
uwPalettesOptionMenu2.pack(side=RIGHT)
uwPalettesLabel2 = Label(uwPalettesFrame2, text='Dungeon palettes')
uwPalettesLabel2.pack(side=LEFT)
hudPalettesFrame2 = Frame(drowDownFrame2)
hudPalettesOptionMenu2 = OptionMenu(hudPalettesFrame2, hudPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
hudPalettesOptionMenu2.pack(side=RIGHT)
hudPalettesLabel2 = Label(hudPalettesFrame2, text='HUD palettes')
hudPalettesLabel2.pack(side=LEFT)
swordPalettesFrame2 = Frame(drowDownFrame2)
swordPalettesOptionMenu2 = OptionMenu(swordPalettesFrame2, swordPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
swordPalettesOptionMenu2.pack(side=RIGHT)
swordPalettesLabel2 = Label(swordPalettesFrame2, text='Sword palettes')
swordPalettesLabel2.pack(side=LEFT)
shieldPalettesFrame2 = Frame(drowDownFrame2)
shieldPalettesOptionMenu2 = OptionMenu(shieldPalettesFrame2, shieldPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
shieldPalettesOptionMenu2.pack(side=RIGHT)
shieldPalettesLabel2 = Label(shieldPalettesFrame2, text='Shield palettes')
shieldPalettesLabel2.pack(side=LEFT)
heartbeepFrame2.pack(expand=True, anchor=E)
heartcolorFrame2.pack(expand=True, anchor=E)
fastMenuFrame2.pack(expand=True, anchor=E)
owPalettesFrame2.pack(expand=True, anchor=E)
uwPalettesFrame2.pack(expand=True, anchor=E)
hudPalettesFrame2.pack(expand=True, anchor=E)
swordPalettesFrame2.pack(expand=True, anchor=E)
shieldPalettesFrame2.pack(expand=True, anchor=E)
bottomFrame2 = Frame(topFrame2)
@ -728,6 +782,9 @@ def guiMain(args=None):
guiargs.fastmenu = fastMenuVar.get()
guiargs.ow_palettes = owPalettesVar.get()
guiargs.uw_palettes = uwPalettesVar.get()
guiargs.hud_palettes = hudPalettesVar.get()
guiargs.sword_palettes = swordPalettesVar.get()
guiargs.shield_palettes = shieldPalettesVar.get()
guiargs.quickswap = bool(quickSwapVar.get())
guiargs.disablemusic = bool(disableMusicVar.get())
guiargs.rom = romVar2.get()

13
Main.py
View File

@ -36,7 +36,7 @@ def main(args, seed=None):
if args.outputpath:
os.makedirs(args.outputpath, exist_ok=True)
output_path.cached_path = args.outputpath
start = time.perf_counter()
# initialize the world
@ -192,9 +192,18 @@ def main(args, seed=None):
world.spoiler.hashes[(player, team)] = get_hash_string(rom.hash)
palettes_options={}
palettes_options['dungeon']=args.uw_palettes[player]
palettes_options['overworld']=args.ow_palettes[player]
palettes_options['hud']=args.hud_palettes[player]
palettes_options['sword']=args.sword_palettes[player]
palettes_options['shield']=args.shield_palettes[player]
palettes_options['link']=args.link_palettes[player]
apply_rom_settings(rom, args.heartbeep[player], args.heartcolor[player], args.quickswap[player],
args.fastmenu[player], args.disablemusic[player], args.sprite[player],
args.ow_palettes[player], args.uw_palettes[player], world, player, True)
palettes_options, world, player, True)
mcsb_name = ''
if all([world.mapshuffle[player], world.compassshuffle[player], world.keyshuffle[player],

View File

@ -516,6 +516,11 @@ def roll_settings(weights):
ret.heartbeep = convert_to_on_off(get_choice('heartbeep', romweights, "normal"))
ret.ow_palettes = get_choice('ow_palettes', romweights, "default")
ret.uw_palettes = get_choice('uw_palettes', romweights, "default")
ret.hud_palettes = get_choice('hud_palettes', romweights, "default")
ret.sword_palettes = get_choice('sword_palettes', romweights, "default")
ret.shield_palettes = get_choice('shield_palettes', romweights, "default")
ret.link_palettes = get_choice('link_palettes', romweights, "default")
else:
ret.quickswap = True
ret.sprite = "Link"

72
Rom.py
View File

@ -37,15 +37,19 @@ except:
class LocalRom(object):
def __init__(self, file, patch=True, name=None, hash=None):
def __init__(self, file, patch=True, vanillaRom=None, name=None, hash=None):
self.name = name
self.hash = hash
self.orig_buffer = None
with open(file, 'rb') as stream:
self.buffer = read_rom(stream)
if patch:
self.patch_base_rom()
self.orig_buffer = self.buffer.copy()
if vanillaRom:
with open(vanillaRom, 'rb') as vanillaStream:
self.orig_buffer = read_rom(vanillaStream)
def read_byte(self, address: int) -> int:
return self.buffer[address]
@ -1045,7 +1049,7 @@ def patch_rom(world, rom, player, team, enemized):
rom.write_byte(0x180211, gametype) # Game type
# assorted fixes
rom.write_byte(0x1800A2, 0x01 if world.fix_fake_world[player] else 0x00) # Toggle whether to be in real/fake dark world when dying in a DW dungeon before killing aga1
rom.write_byte(0x1800A2, 0x01 if world.fix_fake_world[player] else 0x00) # Toggle whether to be in real/fake dark world when dying in a DW dungeon before killing aga1
rom.write_byte(0x180169, 0x01 if world.lock_aga_door_in_escape else 0x00) # Lock or unlock aga tower door during escape sequence.
if world.mode[player] == 'inverted':
rom.write_byte(0x180169, 0x02) # lock aga/ganon tower door with crystals in inverted
@ -1507,7 +1511,9 @@ def hud_format_text(text):
return output[:32]
def apply_rom_settings(rom, beep, color, quickswap, fastmenu, disable_music, sprite, ow_palettes, uw_palettes, world=None, player=1, allow_random_on_event=False):
def apply_rom_settings(rom, beep, color, quickswap, fastmenu, disable_music, sprite, palettes_options, world=None, player=1, allow_random_on_event=False):
local_random = random if not world else world.rom_seeds[player]
apply_random_sprite_on_event(rom, sprite, local_random, allow_random_on_event, world.sprite_pool[player] if world else [])
@ -1560,27 +1566,51 @@ def apply_rom_settings(rom, beep, color, quickswap, fastmenu, disable_music, spr
rom.write_byte(0x6FA30, {'red': 0x24, 'blue': 0x2C, 'green': 0x3C, 'yellow': 0x28}[color])
rom.write_byte(0x65561, {'red': 0x05, 'blue': 0x0D, 'green': 0x19, 'yellow': 0x09}[color])
# reset palette if it was adjusted already
default_ow_palettes(rom)
default_uw_palettes(rom)
# write link sprite if required
if sprite:
sprite.write_to_rom(rom)
if z3pr:
options = {
"randomize_dungeon": uw_palettes == 'random',
"randomize_overworld": ow_palettes == 'random'
}
if any(options.values()):
def buildAndRandomize(option_name,mode):
options = {
option_name : True
}
data_dir = local_path("data") if is_bundled() else None
offsets_array = build_offset_collections(options, data_dir)
restore_maseya_colors(rom,offsets_array)
if mode == 'default':
return
ColorF = z3pr.ColorF
def next_color_generator():
while True:
yield ColorF(local_random.random(), local_random.random(), local_random.random())
if mode == 'random':
mode = 'maseya'
z3pr.randomize(rom.buffer, mode, offset_collections=offsets_array, random_colors=next_color_generator())
uw_palettes=palettes_options['dungeon']
ow_palettes=palettes_options['overworld']
hud_palettes=palettes_options['hud']
sword_palettes=palettes_options['sword']
shield_palettes=palettes_options['shield']
link_palettes=palettes_options['link']
buildAndRandomize("randomize_dungeon", uw_palettes)
buildAndRandomize("randomize_overworld", ow_palettes)
buildAndRandomize("randomize_hud", hud_palettes)
buildAndRandomize("randomize_sword", sword_palettes)
buildAndRandomize("randomize_shield", shield_palettes)
#link palette shuffle does not work very well and it's incompatible with random sprite on event
#buildAndRandomize("randomize_link_sprite", link_palettes)
z3pr.randomize(rom.buffer, "maseya", offset_collections=offsets_array, random_colors=next_color_generator())
else:
# reset palette if it was adjusted already
default_ow_palettes(rom)
default_uw_palettes(rom)
logging.warning("Could not find z3pr palette shuffle. "
"If you want improved palette shuffling please install the maseya-z3pr package.")
if ow_palettes == 'random':
@ -1588,14 +1618,20 @@ def apply_rom_settings(rom, beep, color, quickswap, fastmenu, disable_music, spr
if uw_palettes == 'random':
randomize_uw_palettes(rom, local_random)
if ow_palettes == 'blackout':
blackout_ow_palettes(rom)
if uw_palettes == 'blackout':
blackout_uw_palettes(rom)
if ow_palettes == 'blackout':
blackout_ow_palettes(rom)
if uw_palettes == 'blackout':
blackout_uw_palettes(rom)
if isinstance(rom, LocalRom):
rom.write_crc()
def restore_maseya_colors(rom,offsets_array):
if not rom.orig_buffer:
return
for offsetC in offsets_array:
for address in offsetC:
rom.write_bytes(address, rom.orig_buffer[address:address+2])
def set_color(rom, address, color, shade):
r = round(min(color[0], 0xFF) * pow(0.8, shade) * 0x1F / 0xFF)

View File

@ -1469,6 +1469,42 @@
"friendlyName": "Blackout",
"description": "Never use this. Makes all overworld palette colors black.",
"defaultValue": 0
},
"grayscale": {
"keyString": "rom.ow_palettes.grayscale",
"friendlyName": "Grayscale",
"description": "Removes all saturation of colors.",
"defaultValue": 0
},
"negative": {
"keyString": "rom.ow_palettes.negative",
"friendlyName": "Negative",
"description": "Invert all colors",
"defaultValue": 0
},
"classic": {
"keyString": "rom.ow_palettes.classic",
"friendlyName": "Classic",
"description": "Produces results similar to the website.",
"defaultValue": 0
},
"dizzy": {
"keyString": "rom.ow_palettes.dizzy",
"friendlyName": "Dizzy",
"description": "No logic in colors but saturation and lightness are conserved.",
"defaultValue": 0
},
"sick": {
"keyString": "rom.ow_palettes.sick",
"friendlyName": "Sick",
"description": "No logic in colors but lightness is conserved.",
"defaultValue": 0
},
"puke": {
"keyString": "rom.ow_palettes.Puke",
"friendlyName": "Puke",
"description": "No logic at all.",
"defaultValue": 0
}
}
},
@ -1495,6 +1531,228 @@
"friendlyName": "Blackout",
"description": "Never use this. Makes all underworld palette colors black.",
"defaultValue": 0
},
"grayscale": {
"keyString": "rom.uw_palettes.grayscale",
"friendlyName": "Grayscale",
"description": "Removes all saturation of colors.",
"defaultValue": 0
},
"negative": {
"keyString": "rom.uw_palettes.negative",
"friendlyName": "Negative",
"description": "Invert all colors",
"defaultValue": 0
},
"classic": {
"keyString": "rom.uw_palettes.classic",
"friendlyName": "Classic",
"description": "Produces results similar to the website.",
"defaultValue": 0
},
"dizzy": {
"keyString": "rom.uw_palettes.dizzy",
"friendlyName": "Dizzy",
"description": "No logic in colors but saturation and lightness are conserved.",
"defaultValue": 0
},
"sick": {
"keyString": "rom.uw_palettes.sick",
"friendlyName": "Sick",
"description": "No logic in colors but lightness is conserved.",
"defaultValue": 0
},
"puke": {
"keyString": "rom.uw_palettes.Puke",
"friendlyName": "Puke",
"description": "No logic at all.",
"defaultValue": 0
}
}
},
"hud_palettes": {
"keyString": "rom.hud_palettes",
"friendlyName": "Underworld Palettes",
"description": "Randomize the colors of the underworld (caves, dungeons, etc.), within reason.",
"inputType": "range",
"subOptions": {
"default": {
"keyString": "rom.hud_palettes.default",
"friendlyName": "Vanilla",
"description": "Overworld colors will remain unchanged.",
"defaultValue": 50
},
"random": {
"keyString": "rom.hud_palettes.random",
"friendlyName": "Random",
"description": "Shuffles the colors of the overworld palette.",
"defaultValue": 0
},
"blackout": {
"keyString": "rom.hud_palettes.blackout",
"friendlyName": "Blackout",
"description": "Never use this. Makes all overworld palette colors black.",
"defaultValue": 0
},
"grayscale": {
"keyString": "rom.hud_palettes.grayscale",
"friendlyName": "Grayscale",
"description": "Removes all saturation of colors.",
"defaultValue": 0
},
"negative": {
"keyString": "rom.hud_palettes.negative",
"friendlyName": "Negative",
"description": "Invert all colors",
"defaultValue": 0
},
"classic": {
"keyString": "rom.hud_palettes.classic",
"friendlyName": "Classic",
"description": "Produces results similar to the website.",
"defaultValue": 0
},
"dizzy": {
"keyString": "rom.hud_palettes.dizzy",
"friendlyName": "Dizzy",
"description": "No logic in colors but saturation and lightness are conserved.",
"defaultValue": 0
},
"sick": {
"keyString": "rom.hud_palettes.sick",
"friendlyName": "Sick",
"description": "No logic in colors but lightness is conserved.",
"defaultValue": 0
},
"puke": {
"keyString": "rom.hud_palettes.Puke",
"friendlyName": "Puke",
"description": "No logic at all.",
"defaultValue": 0
}
}
},
"shield_palettes": {
"keyString": "rom.shield_palettes",
"friendlyName": "Underworld Palettes",
"description": "Randomize the colors of the underworld (caves, dungeons, etc.), within reason.",
"inputType": "range",
"subOptions": {
"default": {
"keyString": "rom.shield_palettes.default",
"friendlyName": "Vanilla",
"description": "Overworld colors will remain unchanged.",
"defaultValue": 50
},
"random": {
"keyString": "rom.shield_palettes.random",
"friendlyName": "Random",
"description": "Shuffles the colors of the overworld palette.",
"defaultValue": 0
},
"blackout": {
"keyString": "rom.shield_palettes.blackout",
"friendlyName": "Blackout",
"description": "Never use this. Makes all overworld palette colors black.",
"defaultValue": 0
},
"grayscale": {
"keyString": "rom.shield_palettes.grayscale",
"friendlyName": "Grayscale",
"description": "Removes all saturation of colors.",
"defaultValue": 0
},
"negative": {
"keyString": "rom.shield_palettes.negative",
"friendlyName": "Negative",
"description": "Invert all colors",
"defaultValue": 0
},
"classic": {
"keyString": "rom.shield_palettes.classic",
"friendlyName": "Classic",
"description": "Produces results similar to the website.",
"defaultValue": 0
},
"dizzy": {
"keyString": "rom.shield_palettes.dizzy",
"friendlyName": "Dizzy",
"description": "No logic in colors but saturation and lightness are conserved.",
"defaultValue": 0
},
"sick": {
"keyString": "rom.shield_palettes.sick",
"friendlyName": "Sick",
"description": "No logic in colors but lightness is conserved.",
"defaultValue": 0
},
"puke": {
"keyString": "rom.shield_palettes.Puke",
"friendlyName": "Puke",
"description": "No logic at all.",
"defaultValue": 0
}
}
},
"sword_palettes": {
"keyString": "rom.sword_palettes",
"friendlyName": "Underworld Palettes",
"description": "Randomize the colors of the underworld (caves, dungeons, etc.), within reason.",
"inputType": "range",
"subOptions": {
"default": {
"keyString": "rom.sword_palettes.default",
"friendlyName": "Vanilla",
"description": "Overworld colors will remain unchanged.",
"defaultValue": 50
},
"random": {
"keyString": "rom.sword_palettes.random",
"friendlyName": "Random",
"description": "Shuffles the colors of the overworld palette.",
"defaultValue": 0
},
"blackout": {
"keyString": "rom.sword_palettes.blackout",
"friendlyName": "Blackout",
"description": "Never use this. Makes all overworld palette colors black.",
"defaultValue": 0
},
"grayscale": {
"keyString": "rom.sword_palettes.grayscale",
"friendlyName": "Grayscale",
"description": "Removes all saturation of colors.",
"defaultValue": 0
},
"negative": {
"keyString": "rom.sword_palettes.negative",
"friendlyName": "Negative",
"description": "Invert all colors",
"defaultValue": 0
},
"classic": {
"keyString": "rom.sword_palettes.classic",
"friendlyName": "Classic",
"description": "Produces results similar to the website.",
"defaultValue": 0
},
"dizzy": {
"keyString": "rom.sword_palettes.dizzy",
"friendlyName": "Dizzy",
"description": "No logic in colors but saturation and lightness are conserved.",
"defaultValue": 0
},
"sick": {
"keyString": "rom.sword_palettes.sick",
"friendlyName": "Sick",
"description": "No logic in colors but lightness is conserved.",
"defaultValue": 0
},
"puke": {
"keyString": "rom.sword_palettes.Puke",
"friendlyName": "Puke",
"description": "No logic at all.",
"defaultValue": 0
}
}
}

View File

@ -355,7 +355,49 @@ rom:
default: 50 # No changes
random: 0 # Shuffle the colors
blackout: 0 # Never use this
grayscale: 0
negative: 0
classic: 0
dizzy: 0
sick: 0
puke: 0
uw_palettes: # Change the colors of caves and dungeons
default: 50 # No changes
random: 0 # Shuffle the colors
blackout: 0 # Never use this
grayscale: 0
negative: 0
classic: 0
dizzy: 0
sick: 0
puke: 0
hud_palettes: # Change the colors of the hud
default: 50 # No changes
random: 0 # Shuffle the colors
blackout: 0 # Never use this
grayscale: 0
negative: 0
classic: 0
dizzy: 0
sick: 0
puke: 0
sword_palettes: # Change the colors of swords
default: 50 # No changes
random: 0 # Shuffle the colors
blackout: 0 # Never use this
grayscale: 0
negative: 0
classic: 0
dizzy: 0
sick: 0
puke: 0
uw_palettes: # Change the colors of shields
default: 50 # No changes
random: 0 # Shuffle the colors
blackout: 0 # Never use this
grayscale: 0
negative: 0
classic: 0
dizzy: 0
sick: 0
puke: 0

View File

@ -369,7 +369,49 @@ rom:
default: 50 # No changes
random: 0 # Shuffle the colors
blackout: 0 # Never use this
grayscale: 0
negative: 0
classic: 0
dizzy: 0
sick: 0
puke: 0
uw_palettes: # Change the colors of caves and dungeons
default: 50 # No changes
random: 0 # Shuffle the colors
blackout: 0 # Never use this
grayscale: 0
negative: 0
classic: 0
dizzy: 0
sick: 0
puke: 0
hud_palettes: # Change the colors of the hud
default: 50 # No changes
random: 0 # Shuffle the colors
blackout: 0 # Never use this
grayscale: 0
negative: 0
classic: 0
dizzy: 0
sick: 0
puke: 0
sword_palettes: # Change the colors of swords
default: 50 # No changes
random: 0 # Shuffle the colors
blackout: 0 # Never use this
grayscale: 0
negative: 0
classic: 0
dizzy: 0
sick: 0
puke: 0
uw_palettes: # Change the colors of shields
default: 50 # No changes
random: 0 # Shuffle the colors
blackout: 0 # Never use this
grayscale: 0
negative: 0
classic: 0
dizzy: 0
sick: 0
puke: 0