| layout | default |
|---|---|
| title | Installation & Usage |
| nav_order | 3 |
{: .no_toc }
Complete guide to installing and running ALttP Door Randomizer. {: .fs-6 .fw-300 }
{: .no_toc .text-delta }
- TOC {:toc}
- Python 3.10 or higher (for running from source)
- A legal copy of The Legend of Zelda: A Link to the Past (JP 1.0 version) ROM
This is the easiest method for most users.
- Visit the Releases page
- Download the appropriate build for your system:
- Windows:
ALttPDoorRandomizer-{version}-windows.zip - macOS:
ALttPDoorRandomizer-{version}-osx.tar.gz - Linux:
ALttPDoorRandomizer-{version}-linux-focal.tar.gz
- Windows:
- Extract the archive to a folder of your choice
- Run the executable:
- Windows:
DungeonRandomizer.exe - macOS/Linux:
./DungeonRandomizeror./Gui.py
- Windows:
For developers or users who want to run the latest development version.
git clone https://github.com/aerinon/ALttPDoorRandomizer.git
cd ALttPDoorRandomizerFor the development branch:
git checkout DoorDevUnstableThe project includes a script to install platform-specific dependencies:
python resources/ci/common/local_install.pyThis will install all necessary Python packages and platform-specific dependencies.
Test that everything is working:
python DungeonRandomizer.py --helpYou should see the help text with all available options.
The GUI provides an easy-to-use interface for generating seeds.
Pre-built release:
- Windows: Double-click
DungeonRandomizer.exe - macOS/Linux: Run
./DungeonRandomizerfrom terminal
From source:
python Gui.py- Select your ROM: Click "Select ROM" and choose your ALttP ROM file
- Configure settings: Use the tabs to adjust:
- Dungeon Settings: Door shuffle mode, intensity, key logic
- Item Settings: Item placement, shopsanity, pottery
- Entrance Settings: Entrance randomization options
- Enemy Settings: Enemy shuffle, boss shuffle
- Game Options: MSU resume, collection rate, etc.
- Generate: Click "Generate" to create your seed
- Output: The patched ROM will be created in the same directory
The CLI offers more control and is useful for batch generation or scripting.
python DungeonRandomizer.py [options]Basic crossed dungeon shuffle:
python DungeonRandomizer.py --doorShuffle crossed --intensity 2With key shuffle and shopsanity:
python DungeonRandomizer.py --doorShuffle crossed --keyshuffle wild --shopsanityPottery and enemy drops:
python DungeonRandomizer.py --doorShuffle basic --pottery lottery --dropshuffle underworldGenerate without creating ROM (testing):
python DungeonRandomizer.py --suppress_rom --spoiler noneCreate BPS patch instead of ROM:
python DungeonRandomizer.py --bps --doorShuffle crossedBatch generation:
python DungeonRandomizer.py --doorShuffle crossed --count 10Dungeon Settings:
--doorShuffle [vanilla|basic|partitioned|crossed]- Door shuffle mode--intensity [1|2|3]- Intensity level--keyshuffle [none|wild|universal]- Key shuffle mode--key_logic [partial|strict|dangerous]- Key logic algorithm--door_type_mode [original|big|all|chaos]- Door type shuffle--trap_door_mode [vanilla|optional|boss|oneway]- Trap door removal
Item Settings:
--algorithm [balanced|vanilla_fill|major_only|dungeon_only|district]- Item placement--pottery [none|keys|cave|cavekeys|reduced|clustered|nonempty|dungeon|lottery]- Pot shuffle--dropshuffle [none|keys|underworld]- Enemy drop shuffle--shopsanity- Enable shop randomization--bombbag- Enable bomb bag item--pseudoboots- Enable pseudo boots
Entrance Settings:
--shuffle [vanilla|simple|restricted|full|crossed|insanity|...]- Entrance shuffle mode--overworld_map [default|compass|map]- Overworld map mode
Enemy Settings:
--enemizercli [none|basic|shuffled]- Enemy shuffle mode--enemy_damage [default|shuffled|chaos]- Enemy damage--enemy_health [default|easy|hard]- Enemy health--shufflebosses [none|basic|normal|chaos|unique]- Boss shuffle
Logic:
--logic [noglitches|owglitches|hybridglitches|nologic]- Logic mode--mode [open|standard|inverted]- Game mode--goal [ganon|trinity|ganonhunt|completionist]- Victory condition
Generation:
--seed SEED- Set seed number--count N- Generate N seeds--suppress_rom- Don't create ROM (testing)--bps- Create BPS patch instead of ROM--spoiler [none|spoiler|playthrough]- Spoiler log type
Game Options:
--msu_resume- Enable MSU resume--collection_rate- Display collection rate--reduce_flashing- Reduce flashing animations--shuffle_sfx- Shuffle sound effects
For a complete list of options:
python DungeonRandomizer.py --helpDoor Randomizer supports multiworld seeds where multiple players play different randomized games with shared item pools.
Run the same installation script to install multiworld-specific dependencies:
python resources/ci/common/local_install.pyCreate YAML files for each player (see docs/player1.yml, docs/player2.yml, docs/player3.yml for individual examples, or docs/multi_mystery_example.yaml for a complete multiworld configuration).
Example player configuration:
description: Player 1's World
name: Player1
doorShuffle: crossed
intensity: 2
keyshuffle: wild
shopsanity: trueGenerate the multiworld using the multi-mystery configuration file:
python DungeonRandomizer.py --customizer docs/multi_mystery_example.yamlpython MultiServer.pyIt will prompt you for the multidata file created from the multiworld generation step.
python MultiClient.pyEnter the server address and your player name to connect.
To verify your installation and test the randomizer logic:
python TestSuite.pyTest with specific settings:
python TestSuite.py --dr basic --count 10 --tense 2Run specific test modules:
python -m pytest test/
python -m pytest test/dungeons/TestDarkPalace.py- Windows: Make sure Python is installed and added to PATH during installation
- macOS/Linux: Install Python 3.10+ via your package manager or from python.org
Run the dependency installation script:
python resources/ci/common/local_install.pymacOS may block unsigned applications. Right-click the app and select "Open" to bypass the warning.
Ensure the file has execute permissions:
chmod +x DungeonRandomizerTry running from the command line to see if there are any error messages. Some display scaling settings can cause issues.
- Ensure you're using a clean US version of ALttP ROM (Japan 1.0)
- Try a different emulator (recommended: SNES9x, RetroArch with bsnes core)
- Verify the ROM was patched successfully (check file size and modification date)
If you encounter issues:
- Check the Known Issues page
- Search GitHub Issues
- Ask in the ALTTP Randomizer Discord:
#door-rando- General help and questions#bug-reports- Report bugs and issues
When reporting issues, please include:
- Operating system and version
- Python version (
python --version) - Door Randomizer version or commit hash
- Full error message or description of the problem
- Settings used (CLI command or screenshot of GUI)
You can create custom preset files to save your favorite settings combinations.
See the Customizer documentation for details on creating custom seeds with custom dungeons and rooms.
To create a standalone executable from source:
See BUILDING.md for detailed build instructions.
For contributors:
- Fork the repository
- Create a feature branch from
DoorDevUnstable:git checkout DoorDevUnstable git checkout -b my-feature
- Make your changes
- Run tests:
python TestSuite.py - Submit a pull request to
DoorDevUnstable(not main/master)
- Read the Features Guide for detailed information on all settings
- Check the Known Issues page for current limitations
- See the Roadmap for upcoming features
- Join the community on Discord