370 lines
9.6 KiB
Markdown
370 lines
9.6 KiB
Markdown
---
|
|
layout: default
|
|
title: Installation & Usage
|
|
nav_order: 3
|
|
---
|
|
|
|
# Installation & Usage
|
|
{: .no_toc }
|
|
|
|
Complete guide to installing and running ALttP Door Randomizer.
|
|
{: .fs-6 .fw-300 }
|
|
|
|
## Table of contents
|
|
{: .no_toc .text-delta }
|
|
|
|
1. TOC
|
|
{:toc}
|
|
|
|
---
|
|
|
|
## 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.
|
|
|
|
1. Visit the [Releases page](https://github.com/aerinon/ALttPDoorRandomizer/releases)
|
|
2. 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`
|
|
3. Extract the archive to a folder of your choice
|
|
4. Run the executable:
|
|
- **Windows**: `DungeonRandomizer.exe`
|
|
- **macOS/Linux**: `./DungeonRandomizer` or `./Gui.py`
|
|
|
|
### Method 2: Running from Source
|
|
|
|
For developers or users who want to run the latest development version.
|
|
|
|
#### Step 1: Clone the Repository
|
|
|
|
```bash
|
|
git clone https://github.com/aerinon/ALttPDoorRandomizer.git
|
|
cd ALttPDoorRandomizer
|
|
```
|
|
|
|
For the development branch:
|
|
```bash
|
|
git checkout DoorDevUnstable
|
|
```
|
|
|
|
#### Step 2: Install Python Dependencies
|
|
|
|
The project includes a script to install platform-specific dependencies:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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 `./DungeonRandomizer` from terminal
|
|
|
|
**From source:**
|
|
```bash
|
|
python Gui.py
|
|
```
|
|
|
|
#### Using the GUI
|
|
|
|
1. **Select your ROM**: Click "Select ROM" and choose your ALttP ROM file
|
|
2. **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.
|
|
3. **Generate**: Click "Generate" to create your seed
|
|
4. **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
|
|
|
|
```bash
|
|
python DungeonRandomizer.py [options]
|
|
```
|
|
|
|
#### Common Examples
|
|
|
|
**Basic crossed dungeon shuffle:**
|
|
```bash
|
|
python DungeonRandomizer.py --doorShuffle crossed --intensity 2
|
|
```
|
|
|
|
**With key shuffle and shopsanity:**
|
|
```bash
|
|
python DungeonRandomizer.py --doorShuffle crossed --keyshuffle wild --shopsanity
|
|
```
|
|
|
|
**Pottery and enemy drops:**
|
|
```bash
|
|
python DungeonRandomizer.py --doorShuffle basic --pottery lottery --dropshuffle underworld
|
|
```
|
|
|
|
**Generate without creating ROM (testing):**
|
|
```bash
|
|
python DungeonRandomizer.py --suppress_rom --spoiler none
|
|
```
|
|
|
|
**Create BPS patch instead of ROM:**
|
|
```bash
|
|
python DungeonRandomizer.py --bps --doorShuffle crossed
|
|
```
|
|
|
|
**Batch generation:**
|
|
```bash
|
|
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:
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:**
|
|
```yaml
|
|
description: Player 1's World
|
|
name: Player1
|
|
doorShuffle: crossed
|
|
intensity: 2
|
|
keyshuffle: wild
|
|
shopsanity: true
|
|
```
|
|
|
|
Generate the multiworld using the multi-mystery configuration file:
|
|
```bash
|
|
python DungeonRandomizer.py --customizer docs/multi_mystery_example.yaml
|
|
```
|
|
|
|
### Running Multiworld Server
|
|
|
|
```bash
|
|
python MultiServer.py
|
|
```
|
|
|
|
It will prompt you for the multidata file created from the multiworld generation step.
|
|
|
|
### Connecting with Multiworld Client
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
python TestSuite.py
|
|
```
|
|
|
|
**Test with specific settings:**
|
|
```bash
|
|
python TestSuite.py --dr basic --count 10 --tense 2
|
|
```
|
|
|
|
**Run specific test modules:**
|
|
```bash
|
|
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](https://www.python.org/)
|
|
|
|
#### "No module named 'yaml'" or similar import errors
|
|
|
|
Run the dependency installation script:
|
|
```bash
|
|
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:
|
|
```bash
|
|
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:
|
|
|
|
1. Check the [Known Issues](/known-issues) page
|
|
2. Search [GitHub Issues](https://github.com/aerinon/ALttPDoorRandomizer/issues)
|
|
3. Ask in the [ALTTP Randomizer Discord](https://discordapp.com/invite/alttprandomizer):
|
|
- `#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](docs/Customizer.md) 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](docs/BUILDING.md) for detailed build instructions.
|
|
|
|
### Development Workflow
|
|
|
|
For contributors:
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch from `DoorDevUnstable`:
|
|
```bash
|
|
git checkout DoorDevUnstable
|
|
git checkout -b my-feature
|
|
```
|
|
3. Make your changes
|
|
4. Run tests: `python TestSuite.py`
|
|
5. Submit a pull request to `DoorDevUnstable` (not main/master)
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
- Read the [Features Guide](/features) for detailed information on all settings
|
|
- Check the [Known Issues](/known-issues) page for current limitations
|
|
- See the [Roadmap](/roadmap) for upcoming features
|
|
- Join the community on [Discord](https://discordapp.com/invite/alttprandomizer)
|