Installation & Usage
Complete guide to installing and running ALttP Door Randomizer.
Table of contents
- Requirements
- Installation Methods
- Usage
- Multiworld Setup
- Testing & Verification
- Troubleshooting
- Advanced Usage
- Next Steps
Requirements
- 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
Installation Methods
Method 1: Pre-built Releases (Recommended)
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:
Method 2: Running from Source
For developers or users who want to run the latest development version.
Step 1: Clone the Repository
git clone https://github.com/aerinon/ALttPDoorRandomizer.git
cd ALttPDoorRandomizer
For the development branch:
git checkout DoorDevUnstable
Step 2: Install Python Dependencies
The project includes a script to install platform-specific dependencies:
python resources/ci/common/local_install.py
This will install all necessary Python packages and platform-specific dependencies.
Step 3: Verify Installation
Test that everything is working:
python DungeonRandomizer.py --help
You should see the help text with all available options.
Usage
GUI (Graphical User Interface)
The GUI provides an easy-to-use interface for generating seeds.
Starting the GUI
Pre-built release:
- Windows: Double-click
DungeonRandomizer.exe - macOS/Linux: Run
./DungeonRandomizerfrom terminal
From source:
python Gui.py
Using the GUI
- 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
CLI (Command-Line Interface)
The CLI offers more control and is useful for batch generation or scripting.
Basic Usage
python DungeonRandomizer.py [options]
Common Examples
Basic crossed dungeon shuffle:
python DungeonRandomizer.py --doorShuffle crossed --intensity 2
With key shuffle and shopsanity:
python DungeonRandomizer.py --doorShuffle crossed --keyshuffle wild --shopsanity
Pottery and enemy drops:
python DungeonRandomizer.py --doorShuffle basic --pottery lottery --dropshuffle underworld
Generate without creating ROM (testing):
python DungeonRandomizer.py --suppress_rom --spoiler none
Create BPS patch instead of ROM:
python DungeonRandomizer.py --bps --doorShuffle crossed
Batch generation:
python DungeonRandomizer.py --doorShuffle crossed --count 10
Key CLI Arguments
Dungeon 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 --help
Multiworld Setup
Door Randomizer supports multiworld seeds where multiple players play different randomized games with shared item pools.
Installing Multiworld Dependencies
Run the same installation script to install multiworld-specific dependencies:
python resources/ci/common/local_install.py
Generating Multiworld Seeds
Create 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: true
Generate the multiworld using the multi-mystery configuration file:
python DungeonRandomizer.py --customizer docs/multi_mystery_example.yaml
Running Multiworld Server
python MultiServer.py
It will prompt you for the multidata file created from the multiworld generation step.
Connecting with Multiworld Client
python MultiClient.py
Enter the server address and your player name to connect.
Testing & Verification
Running the Test Suite
To verify your installation and test the randomizer logic:
python TestSuite.py
Test with specific settings:
python TestSuite.py --dr basic --count 10 --tense 2
Run specific test modules:
python -m pytest test/
python -m pytest test/dungeons/TestDarkPalace.py
Troubleshooting
Common Issues
“Python not found” or “python: command not found”
- 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
“No module named ‘yaml’” or similar import errors
Run the dependency installation script:
python resources/ci/common/local_install.py
Pre-built executable won’t run on macOS
macOS may block unsigned applications. Right-click the app and select “Open” to bypass the warning.
Pre-built executable won’t run on Linux
Ensure the file has execute permissions:
chmod +x DungeonRandomizer
GUI window is too small or cut off
Try running from the command line to see if there are any error messages. Some display scaling settings can cause issues.
Generated ROM doesn’t work with emulator
- 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)
Getting Help
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)
Advanced Usage
Custom Presets
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.
Build from Source (Packaging)
To create a standalone executable from source:
See BUILDING.md for detailed build instructions.
Development Workflow
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)
Next Steps
- 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