Randomize palette data for Legend of Zelda: A Link to the Past.
Project description
Link to the Past Palette Randomizer
Python Console application to randomize palettes in The Legend of Zelda: A Link to the Past.
Table of Contents
What is a palette randomizer?
A palette randomizer is, as the name suggests, something that randomizes a game's palettes (its color collections). This randomizer is designed to randomize colors according to their groupings. For example, all colors that represent grass will be randomized with the same logic, whereas water's colors will be randomized with different logic. This creates a consistent color scheme without any disconnects in colors (e.g. grass having two different colors).
A set of colors is randomized according to the following rules:
- Shift a color's hue by at least 2.5%. This ensures a color is actually changed.
- If increasing saturation, do so very gently and proportional to current value.
- Saturation is okay to be reduced all the way to zero.
- Increasing brightness is similar increasing saturation.
- If a lot of saturation was removed, allow increasing the brightness slightly more.
- If reducing brightness, do so by no more than half (this may be restricted further in the future).
Advantages over other palette randomizers
While Link to the Past Randomizer already has a built-in palette randomizer, it does not take the necessary care to ensure every palette can be randomized. Certain items like houses and rocks are never randomized. Further, the overworld palette randomizer does not have as much control as this app does, which allows for much richer variety of colors.
TODO: Add pictures
- The overworld map palette is updated to reflect the new overworld palette.
- Sprite palettes of rocks and bushes match their object palettes.
- Ice golem palettes match Ice Palace palettes.
How to use
Go to our Releases page. From there, download z3pr.zip under the Assets tab of the latest release.
Or you can install it through pip with pip install --user maseya.z3pr
It is recommended that your logic randomizer app keep the vanilla palette, or you may still experience ugly colors after using this app.
The following command-line arguments are supported by the app:
[args...] inputFile <outputFile>
inputFile Input path of ROM. Required
outputFile Output destination. Optional
If no path is specified, the app will
decide an appropriate file name.
args:
-w --overworld Randomize overworld palettes. Default
-W --no-overworld Do not randomize overworld palettes.
-d --dungeon Randomize dungeon palettes. Default
-D --no-dungeon Do not randomize dungeon palettes.
-l --link-sprite Randomize Link sprite palette.
-L --no-link-sprite Do not randomize Link sprite palette. Default
--sword Randomize sword palettes.
--no-sword Do not randomize sword palettes. Default
--shield Randomize shield palettes.
--no-shield Do not randomize shield palettes. Default
--hud Randomize HUD palettes.
--no-hud Do not randomize HUD palettes. Default
--seed=value Use specific seed for random generator.
Hex is supported with "0x" prefix. Default value
is -1, which specifies not using predetermined
seed.
--data-dir=value Read JSON offset files from custom directory.
--mode=value None: Makes no changes to rom.
Default: Default color mixing algorithm.
Maseya: Same as "Default".
Negative: Invert all colors.
Grayscale: Desaturate all colors.
Blackout: Set all colors to black.
Classic: Randomize palette similar to classic web API.
Produces less aesthetic colors if that's your thing.
Dizzy: Randomize each color without logic but preserve
saturation and lightness.
Sick: Randomize each color without logic but preserve
lightness.
Puke: Randomize each color without logic.
You can override the default arguments in the args.config
file located
in the application folder.
Contributions
Do you want to add a feature, report a bug, or propose a change to the project? That's awesome! First, please refer to our Contributing file. We use it in hopes having the best working environment we can.
Credits
- Nelson Garcia: Project leader and main programmer
License
Python Console App for randomizing Link to the Past palettes Copyright (C) 2018-2020 Nelson Garcia
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file maseya-z3pr-1.0.0rc1.tar.gz
.
File metadata
- Download URL: maseya-z3pr-1.0.0rc1.tar.gz
- Upload date:
- Size: 24.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c028fdb3252b4ae2c86f07ecc996369fe39aafeb3ba314011bf6372257f867c5 |
|
MD5 | 77394f82fdd9981e53c093336cca2808 |
|
BLAKE2b-256 | 2f165b01d78fb9c85d623295f456b17ff90aa13d42495fd2eedd214b169c80c1 |
File details
Details for the file maseya_z3pr-1.0.0rc1-py3-none-any.whl
.
File metadata
- Download URL: maseya_z3pr-1.0.0rc1-py3-none-any.whl
- Upload date:
- Size: 25.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21a5611950be32d99dd5d855c0b28f4d97072f9e4b31bcdccdcc61b645a15bf0 |
|
MD5 | 2440f4fe2f238faea8b69dd688a45232 |
|
BLAKE2b-256 | 37d3d2748b1394caac3dede21512e1f68aa5a41209db41b49e54add5b2e521f3 |