├── .github
└── workflows
│ ├── multiworld_build.yml
│ └── python-parse-test.yml
├── .gitignore
├── .tinyci
├── LICENSE
├── README.md
├── assembler.const
├── assembler.py
├── backgroundEditor.py
├── cavegen.py
├── checkMetadata.py
├── docs
├── _config.yml
├── _includes
│ └── head-custom.html
├── faq.html
├── favicon.ico
├── hack0.md
├── index.html
├── logo.png
├── plan-template.txt
├── style.css
└── tips.html
├── entityData.py
├── entranceInfo.py
├── explorer.py
├── generator.py
├── getGFX.py
├── gfx
├── AgesGirl.bin
├── AgesGirl.bin.png
├── AgesGirl.bin.txt
├── Bowwow.bin
├── Bowwow.bin.png
├── Bowwow.bin.txt
├── Bunny.bin
├── Bunny.bin.png
├── Bunny.bin.txt
├── GrandmaUlrira.bin
├── GrandmaUlrira.bin.png
├── GrandmaUlrira.bin.txt
├── Kirby.bin
├── Kirby.bin.png
├── Kirby.bin.txt
├── Linker.txt
├── Luigi.bin
├── Luigi.bin.png
├── Luigi.bin.txt
├── MMLink.bin
├── MMLink.bin.png
├── MMLink.bin.txt
├── Marin.bin
├── Marin.bin.png
├── Marin.bin.txt
├── MarinAlpha.bin
├── MarinAlpha.bin.png
├── MarinAlpha.bin.txt
├── Mario.bin
├── Mario.bin.png
├── Mario.bin.txt
├── Martha.bin
├── Martha.bin.png
├── Martha.bin.txt
├── Matty.bin
├── Matty.bin.names
├── Matty.bin.png
├── Matty.bin.txt
├── Meme.bin
├── Meme.bin.names
├── Meme.bin.png
├── Meme.bin.txt
├── NESLink.bin
├── NESLink.bin.names
├── NESLink.bin.png
├── NESLink.bin.txt
├── Ninten.bin
├── Ninten.bin.png
├── Ninten.bin.txt
├── Richard.bin
├── Richard.bin.png
├── Richard.bin.txt
├── Ricky.bin
├── Ricky.bin.png
├── Rooster.bin
├── Rooster.bin.png
├── Rooster.bin.txt
├── Rosa.bin
├── Rosa.bin.png
├── Rosa.bin.txt
├── Saria.bin
├── Saria.bin.png
├── Saria.bin.txt
├── Sig.bin
├── Sig.bin.names
├── Sig.bin.png
├── Sig.bin.txt
├── Subrosian.bin
├── Subrosian.bin.names
├── Subrosian.bin.png
├── Subrosian.bin.txt
├── Tarin.bin
├── Tarin.bin.png
├── Tarin.bin.txt
├── X.bin
├── X.bin.png
├── X.bin.txt
├── ZeroMeaning.txt
├── template.png
├── template_extended.png
└── template_extended2.png
├── gfxconv.py
├── hints.py
├── itempool.py
├── launch_web_ui.py
├── locations
├── all.py
├── anglerKey.py
├── beachSword.py
├── birdKey.py
├── boomerangGuy.py
├── chest.py
├── constants.py
├── droppedKey.py
├── faceKey.py
├── fishingMinigame.py
├── goldLeaf.py
├── heartContainer.py
├── heartPiece.py
├── hookshot.py
├── instrument.py
├── itemInfo.py
├── items.py
├── keyLocation.py
├── keyhole.py
├── madBatter.py
├── owlStatue.py
├── seashell.py
├── shop.py
├── song.py
├── startItem.py
├── toadstool.py
├── tradeSequence.py
├── tunicFairy.py
└── witch.py
├── logic
├── __init__.py
├── dungeon1.py
├── dungeon2.py
├── dungeon3.py
├── dungeon4.py
├── dungeon5.py
├── dungeon6.py
├── dungeon7.py
├── dungeon8.py
├── dungeonChain.py
├── dungeonColor.py
├── location.py
├── main.py
├── overworld.py
└── requirements.py
├── main.py
├── mapexport.py
├── mapgen
├── __init__.py
├── enemygen.py
├── imagegenerator.py
├── locationgen.py
├── locations
│ ├── base.py
│ ├── chest.py
│ ├── entrance.py
│ ├── entrance_info.py
│ └── seashell.py
├── logic.py
├── map.py
├── roomgen.py
├── roomtype
│ ├── base.py
│ ├── forest.py
│ ├── mountain.py
│ ├── town.py
│ └── water.py
├── tileset.py
├── util.py
└── wfc.py
├── multiworld
├── arduinoConnector
│ ├── arduinoConnector.ino
│ ├── lua.exe
│ ├── lua54.dll
│ ├── serial.dll
│ └── socket.dll
├── bizhawkConnector.lua
├── client.py
├── server.py
└── socket.dll
├── musicData.py
├── patches
├── aesthetics.py
├── alttp.py
├── bank3e.asm
│ ├── bowwow.asm
│ ├── chest.asm
│ ├── evilshop.asm
│ ├── link.asm
│ ├── main.asm
│ ├── message.asm
│ ├── multiworld.asm
│ ├── nightmareminiboss.asm
│ └── owl.asm
├── bank3e.py
├── bank3f.py
├── bingo.py
├── bomb.py
├── bowwow.py
├── cats
│ ├── Aurene.bin
│ ├── Garfield.bin
│ ├── Marie.bin
│ ├── Mausi.bin
│ ├── ayrie.bin
│ ├── bert.bin
│ ├── binx.bin
│ ├── carlo.bin
│ ├── colby_jack.bin
│ ├── dusty_daisy.bin
│ ├── fluffy.bin
│ ├── galactica.bin
│ ├── henkie.bin
│ ├── jack.bin
│ ├── jose.bin
│ ├── lola.bin
│ ├── meep.bin
│ ├── mora.bin
│ ├── newton.bin
│ ├── nyan.bin
│ ├── patapouf.bin
│ ├── pippin.bin
│ ├── schoko.bin
│ └── sunny.bin
├── chest.py
├── colorBook.py
├── core.py
├── desert.py
├── droppedKey.py
├── dungeon.py
├── endscreen.py
├── enemies.py
├── entrances.py
├── evilshop.py
├── extragfx.py
├── fishingMinigame.py
├── follower.py
├── goal.py
├── goldenLeaf.py
├── hardMode.py
├── health.py
├── heartPiece.py
├── instrument.py
├── inventory.py
├── madBatter.py
├── maptweaks.py
├── marin.txt
├── maze.py
├── multiworld.py
├── music.py
├── overworld.py
├── overworld
│ ├── alttp
│ │ ├── 00.json
│ │ ├── 01.json
│ │ ├── 02.json
│ │ ├── 03.json
│ │ ├── 04.json
│ │ ├── 05.json
│ │ ├── 06.json
│ │ ├── 07.json
│ │ ├── 08.json
│ │ ├── 09.json
│ │ ├── 0A.json
│ │ ├── 0B.json
│ │ ├── 0C.json
│ │ ├── 0D.json
│ │ ├── 0E.json
│ │ ├── 0F.json
│ │ ├── 10.json
│ │ ├── 11.json
│ │ ├── 12.json
│ │ ├── 13.json
│ │ ├── 14.json
│ │ ├── 15.json
│ │ ├── 16.json
│ │ ├── 17.json
│ │ ├── 18.json
│ │ ├── 19.json
│ │ ├── 1A.json
│ │ ├── 1B.json
│ │ ├── 1C.json
│ │ ├── 1D.json
│ │ ├── 1E.json
│ │ ├── 1E8.json
│ │ ├── 1F.json
│ │ ├── 1F8.json
│ │ ├── 20.json
│ │ ├── 21.json
│ │ ├── 22.json
│ │ ├── 23.json
│ │ ├── 24.json
│ │ ├── 25.json
│ │ ├── 26.json
│ │ ├── 27.json
│ │ ├── 28.json
│ │ ├── 29.json
│ │ ├── 2A.json
│ │ ├── 2B.json
│ │ ├── 2C.json
│ │ ├── 2C8.json
│ │ ├── 2D.json
│ │ ├── 2DF.json
│ │ ├── 2E.json
│ │ ├── 2F.json
│ │ ├── 30.json
│ │ ├── 31.json
│ │ ├── 32.json
│ │ ├── 33.json
│ │ ├── 34.json
│ │ ├── 35.json
│ │ ├── 36.json
│ │ ├── 37.json
│ │ ├── 38.json
│ │ ├── 39.json
│ │ ├── 3A.json
│ │ ├── 3B.json
│ │ ├── 3C.json
│ │ ├── 3D.json
│ │ ├── 3E.json
│ │ ├── 3F.json
│ │ ├── 40.json
│ │ ├── 41.json
│ │ ├── 42.json
│ │ ├── 43.json
│ │ ├── 44.json
│ │ ├── 45.json
│ │ ├── 46.json
│ │ ├── 47.json
│ │ ├── 48.json
│ │ ├── 49.json
│ │ ├── 4A.json
│ │ ├── 4B.json
│ │ ├── 4C.json
│ │ ├── 4D.json
│ │ ├── 4E.json
│ │ ├── 4F.json
│ │ ├── 50.json
│ │ ├── 51.json
│ │ ├── 52.json
│ │ ├── 53.json
│ │ ├── 54.json
│ │ ├── 55.json
│ │ ├── 56.json
│ │ ├── 57.json
│ │ ├── 58.json
│ │ ├── 59.json
│ │ ├── 5A.json
│ │ ├── 5B.json
│ │ ├── 5C.json
│ │ ├── 5D.json
│ │ ├── 5E.json
│ │ ├── 5F.json
│ │ ├── 60.json
│ │ ├── 61.json
│ │ ├── 62.json
│ │ ├── 63.json
│ │ ├── 64.json
│ │ ├── 65.json
│ │ ├── 66.json
│ │ ├── 67.json
│ │ ├── 68.json
│ │ ├── 69.json
│ │ ├── 6A.json
│ │ ├── 6B.json
│ │ ├── 6C.json
│ │ ├── 6D.json
│ │ ├── 6E.json
│ │ ├── 6F.json
│ │ ├── 70.json
│ │ ├── 71.json
│ │ ├── 72.json
│ │ ├── 73.json
│ │ ├── 74.json
│ │ ├── 75.json
│ │ ├── 76.json
│ │ ├── 77.json
│ │ ├── 78.json
│ │ ├── 79.json
│ │ ├── 7A.json
│ │ ├── 7B.json
│ │ ├── 7C.json
│ │ ├── 7D.json
│ │ ├── 7E.json
│ │ ├── 7F.json
│ │ ├── 80.json
│ │ ├── 81.json
│ │ ├── 82.json
│ │ ├── 83.json
│ │ ├── 84.json
│ │ ├── 85.json
│ │ ├── 86.json
│ │ ├── 87.json
│ │ ├── 88.json
│ │ ├── 89.json
│ │ ├── 8A.json
│ │ ├── 8B.json
│ │ ├── 8C.json
│ │ ├── 8D.json
│ │ ├── 8E.json
│ │ ├── 8F.json
│ │ ├── 90.json
│ │ ├── 91.json
│ │ ├── 92.json
│ │ ├── 93.json
│ │ ├── 94.json
│ │ ├── 95.json
│ │ ├── 96.json
│ │ ├── 97.json
│ │ ├── 98.json
│ │ ├── 99.json
│ │ ├── 9A.json
│ │ ├── 9B.json
│ │ ├── 9C.json
│ │ ├── 9D.json
│ │ ├── 9E.json
│ │ ├── 9F.json
│ │ ├── A0.json
│ │ ├── A1.json
│ │ ├── A2.json
│ │ ├── A3.json
│ │ ├── A4.json
│ │ ├── A5.json
│ │ ├── A6.json
│ │ ├── A7.json
│ │ ├── A8.json
│ │ ├── A9.json
│ │ ├── AA.json
│ │ ├── AB.json
│ │ ├── AC.json
│ │ ├── AD.json
│ │ ├── AE.json
│ │ ├── AF.json
│ │ ├── Alt06.json
│ │ ├── Alt0E.json
│ │ ├── Alt1B.json
│ │ ├── Alt2B.json
│ │ ├── Alt79.json
│ │ ├── Alt8C.json
│ │ ├── B0.json
│ │ ├── B1.json
│ │ ├── B2.json
│ │ ├── B3.json
│ │ ├── B4.json
│ │ ├── B5.json
│ │ ├── B6.json
│ │ ├── B7.json
│ │ ├── B8.json
│ │ ├── B9.json
│ │ ├── BA.json
│ │ ├── BB.json
│ │ ├── BC.json
│ │ ├── BD.json
│ │ ├── BE.json
│ │ ├── BF.json
│ │ ├── C0.json
│ │ ├── C1.json
│ │ ├── C2.json
│ │ ├── C3.json
│ │ ├── C4.json
│ │ ├── C5.json
│ │ ├── C6.json
│ │ ├── C7.json
│ │ ├── C8.json
│ │ ├── C9.json
│ │ ├── CA.json
│ │ ├── CB.json
│ │ ├── CC.json
│ │ ├── CD.json
│ │ ├── CE.json
│ │ ├── CF.json
│ │ ├── D0.json
│ │ ├── D1.json
│ │ ├── D2.json
│ │ ├── D3.json
│ │ ├── D4.json
│ │ ├── D5.json
│ │ ├── D6.json
│ │ ├── D7.json
│ │ ├── D8.json
│ │ ├── D9.json
│ │ ├── DA.json
│ │ ├── DB.json
│ │ ├── DC.json
│ │ ├── DD.json
│ │ ├── DE.json
│ │ ├── DF.json
│ │ ├── E0.json
│ │ ├── E1.json
│ │ ├── E2.json
│ │ ├── E3.json
│ │ ├── E4.json
│ │ ├── E5.json
│ │ ├── E6.json
│ │ ├── E7.json
│ │ ├── E8.json
│ │ ├── E9.json
│ │ ├── EA.json
│ │ ├── EB.json
│ │ ├── EC.json
│ │ ├── ED.json
│ │ ├── EE.json
│ │ ├── EF.json
│ │ ├── F0.json
│ │ ├── F1.json
│ │ ├── F2.json
│ │ ├── F3.json
│ │ ├── F4.json
│ │ ├── F5.json
│ │ ├── F6.json
│ │ ├── F7.json
│ │ ├── F8.json
│ │ ├── F9.json
│ │ ├── FA.json
│ │ ├── FB.json
│ │ ├── FC.json
│ │ ├── FD.json
│ │ ├── FE.json
│ │ ├── FF.json
│ │ ├── desert.png
│ │ ├── hammer.png
│ │ └── walrus.png
│ └── dive
│ │ ├── 00.json
│ │ ├── 01.json
│ │ ├── 06.json
│ │ ├── 16.json
│ │ ├── 62.json
│ │ ├── 6C.json
│ │ ├── 71.json
│ │ ├── 72.json
│ │ ├── 73.json
│ │ ├── 81.json
│ │ ├── 82.json
│ │ ├── 83.json
│ │ ├── 91.json
│ │ ├── 92.json
│ │ ├── 93.json
│ │ ├── A1.json
│ │ ├── A2.json
│ │ ├── A3.json
│ │ ├── B0.json
│ │ ├── B1.json
│ │ ├── B2.json
│ │ └── B3.json
├── owl.py
├── phone.py
├── photographer.py
├── reduceRNG.py
├── rooster.py
├── save.py
├── seashell.py
├── shop.py
├── softlock.py
├── songs.py
├── tarin.py
├── titleScreen.py
├── tradeSequence.py
├── trendy.py
├── tunicFairy.py
├── weapons.py
└── witch.py
├── plan.py
├── pointerTable.py
├── randomizer.py
├── rom.py
├── romTables.py
├── roomEditor.py
├── roomInfo.py
├── settings.py
├── spoilerLog.py
├── utils.py
├── worldSetup.py
└── www
├── gfx2bin.html
├── index.html
├── js
├── options.js
├── ui.js
└── worker.js
├── multiworld.html
├── mystery.html
├── plando.html
└── style.css
/.github/workflows/multiworld_build.yml:
--------------------------------------------------------------------------------
1 | name: Build multiworld client
2 |
3 | on:
4 | push:
5 | branches: [ "master" ]
6 | pull_request:
7 | branches: [ "master" ]
8 |
9 | permissions:
10 | contents: read
11 |
12 | jobs:
13 | build:
14 | runs-on: windows-latest
15 |
16 | steps:
17 | - uses: actions/checkout@v4
18 | - name: Install dependencies
19 | run: |
20 | python -m pip install --upgrade pip
21 | pip install -U pyinstaller
22 | pip install -U flask
23 | - name: Install pyevilemu
24 | run: |
25 | git clone https://github.com/daid/pyevilemu.git
26 | cd pyevilemu
27 | python setup.py install
28 | - name: Build with pyinstaller
29 | run: |
30 | cd multiworld
31 | pyinstaller --clean -y client.py -n multiworldclient
32 | - name: Upload windows dist build
33 | uses: actions/upload-artifact@v4
34 | with:
35 | name: multiworld-client-windows
36 | path: multiworld/dist/multiworldclient
37 |
--------------------------------------------------------------------------------
/.tinyci:
--------------------------------------------------------------------------------
1 | [tinyci]
2 | enabled = True
3 |
4 | [build-test]
5 | directory = _test
6 | commands =
7 | python3 ../main.py ../input.gbc --timeout 120 --output /dev/null
8 | python3 ../main.py ../input.gbc --timeout 120 -s seashells=0 -s heartpiece=0 -s dungeon_items=keysanity --output /dev/null
9 | python3 ../main.py ../input.gbc --timeout 120 -s logic=glitched -s dungeon_items=keysanity -s heartpiece=0 -s seashells=0 -s heartcontainers=0 -s instruments=1 -s owlstatues=both -s dungeonshuffle=1 -s witch=0 -s boomerang=gift -s steal=never -s goal=instruments -s goalcount=random --output /dev/null
10 | python3 ../main.py ../input.gbc --timeout 120 -s logic=casual -s dungeon_items=keysy -s itempool=casual --output /dev/null
11 | python3 ../main.py ../input.gbc --timeout 120 -s textmode=none --output /dev/null
12 | python3 ../main.py ../input.gbc --timeout 120 -s overworld=dungeondive --output /dev/null
13 | ignore =
14 | python3 ../main.py ../input.gbc --timeout 120 --seashells --heartpiece --entranceshuffle simple --output /dev/null
15 | python3 ../main.py ../input.gbc --timeout 120 --seashells --heartpiece --entranceshuffle advanced --output /dev/null
16 | python3 ../main.py ../input.gbc --timeout 120 --seashells --heartpiece --entranceshuffle insanity --output /dev/null
17 | python3 ../main.py ../input.gbc --timeout 120 --seashells --heartpiece --spoilerformat text --spoilerfilename /dev/null --output /dev/null
18 | python3 ../main.py ../input.gbc --timeout 120 --seashells --heartpiece --spoilerformat json --spoilerfilename /dev/null --output /dev/null
19 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Daid
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Legend Of Zelda: Link's Awakening DX: Randomizer
2 | Or, LADXR for short.
3 |
4 | ## What is this?
5 |
6 | See https://daid.github.io/LADXR/
7 |
8 | ## Usage
9 |
10 | The only requirements are: to use python3, and the English v1.0 ROM for Links Awakening DX.
11 |
12 | The proper SHA-1 for the rom is `d90ac17e9bf17b6c61624ad9f05447bdb5efc01a`.
13 |
14 | Basic usage:
15 | `python3 main.py zelda.gbc`
16 |
17 | The script will generate a new rom with item locations shuffled. There are many options, see `-h` on the script for details.
18 |
19 | There's also a little helper that launches the web UI locally:
20 |
21 | `python3 launch_web_ui.py`
22 |
23 | ## Development
24 |
25 | This is still in the early stage of development. Important bits are:
26 | * `randomizer.py`: Contains the actual logic to randomize the rom, and checks to make sure it can be solved.
27 | * `logic/*.py`: Contains the logic definitions of what connects to what in the world and what it requires to access that part.
28 | * `locations/*.py`: Contains definitions of location types, and what items can be there. As well as the code on how to place an item there. For example the Chest class has a list of all items that can be in a chest. And the needed rom patch to put that an item in a specific chest.
29 | * `patches/*.py`: Various patches on the code that are not directly related to a specific location. But more general fixes
30 |
--------------------------------------------------------------------------------
/docs/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-hacker
--------------------------------------------------------------------------------
/docs/_includes/head-custom.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {% include head-custom-theme-colors.html %}
6 |
7 |
8 | {% include head-custom-google-analytics.html %}
9 |
10 |
11 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/docs/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/docs/favicon.ico
--------------------------------------------------------------------------------
/docs/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/docs/logo.png
--------------------------------------------------------------------------------
/docs/style.css:
--------------------------------------------------------------------------------
1 | .container {
2 | max-width: 1100px;
3 | background: #FFF;
4 | border: solid 1px #666;
5 | border-radius: 10px;
6 | margin-top: 20px;
7 | padding-bottom: 20px;
8 | margin-bottom: 200px;
9 | }
10 | .inputcontainer {
11 | display: flex;
12 | box-sizing: border-box;
13 | align-items: center;
14 | border: solid 1px #CCC;
15 | border-radius: 5px;
16 | width: 100%;
17 | height: 100%;
18 | }
19 | .inputcontainer * {
20 | margin: 0px;
21 | box-sizing: border-box;
22 | }
23 | .inputcontainer > :last-child {
24 | flex: 1 1 auto;
25 | background: #DDD;
26 | border: solid 1px #AAA;
27 | }
28 | .inputcontainerparent {
29 | padding: 1px 5px;
30 | }
31 | .tooltip::after {
32 | white-space: pre-wrap;
33 | width: 90%;
34 | pointer-events: none;
35 | }
36 | label {
37 | padding-right: 20px;
38 | }
39 | h1 {
40 | margin-bottom: 0px;
41 | }
42 | form {
43 | background: initial;
44 | border: initial;
45 | color: initial;
46 | margin: initial;
47 | padding: initial;
48 | }
49 | .selectromwarning {
50 | box-shadow: inset 0 0 0 2px red;
51 | }
52 | header .logo {
53 | left: 0;
54 | right: 0;
55 | text-align: center;
56 | display: block;
57 | }
58 |
--------------------------------------------------------------------------------
/getGFX.py:
--------------------------------------------------------------------------------
1 | import requests
2 | import PIL.Image
3 | import re
4 |
5 | url = "https://raw.githubusercontent.com/CrystalSaver/Z4RandomizerBeta2/master/"
6 |
7 | for k, v in requests.get(url + "asset-manifest.json").json()['files'].items():
8 | m = re.match("static/media/Graphics(.+)\\.bin", k)
9 | assert m is not None
10 | if not k.startswith("static/media/Graphics") or not k.endswith(".bin"):
11 | continue
12 | name = m.group(1)
13 |
14 | data = requests.get(url + v).content
15 |
16 | icon = PIL.Image.new("P", (16, 16))
17 | buffer = bytearray(b'\x00' * 16 * 8)
18 | for idx in range(0x0C0, 0x0C2):
19 | for y in range(16):
20 | a = data[idx * 32 + y * 2]
21 | b = data[idx * 32 + y * 2 + 1]
22 | for x in range(8):
23 | v = 0
24 | if a & (0x80 >> x):
25 | v |= 1
26 | if b & (0x80 >> x):
27 | v |= 2
28 | buffer[x+y*8] = v
29 | tile = PIL.Image.frombytes('P', (8, 16), bytes(buffer))
30 | x = (idx % 16) * 8
31 | icon.paste(tile, (x, 0))
32 | pal = icon.getpalette()
33 | assert pal is not None
34 | pal[0:3] = [150, 150, 255]
35 | pal[3:6] = [0, 0, 0]
36 | pal[6:9] = [59, 180, 112]
37 | pal[9:12] = [251, 221, 197]
38 | icon.putpalette(pal)
39 | icon = icon.resize((32, 32))
40 | icon.save("gfx/%s.bin.png" % (name))
41 | open("gfx/%s.bin" % (name), "wb").write(data)
42 |
--------------------------------------------------------------------------------
/gfx/AgesGirl.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/AgesGirl.bin
--------------------------------------------------------------------------------
/gfx/AgesGirl.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/AgesGirl.bin.png
--------------------------------------------------------------------------------
/gfx/AgesGirl.bin.txt:
--------------------------------------------------------------------------------
1 | ZeroMeaning.txt
--------------------------------------------------------------------------------
/gfx/Bowwow.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Bowwow.bin
--------------------------------------------------------------------------------
/gfx/Bowwow.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Bowwow.bin.png
--------------------------------------------------------------------------------
/gfx/Bowwow.bin.txt:
--------------------------------------------------------------------------------
1 | Linker.txt
--------------------------------------------------------------------------------
/gfx/Bunny.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Bunny.bin
--------------------------------------------------------------------------------
/gfx/Bunny.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Bunny.bin.png
--------------------------------------------------------------------------------
/gfx/Bunny.bin.txt:
--------------------------------------------------------------------------------
1 | Linker.txt
--------------------------------------------------------------------------------
/gfx/GrandmaUlrira.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/GrandmaUlrira.bin
--------------------------------------------------------------------------------
/gfx/GrandmaUlrira.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/GrandmaUlrira.bin.png
--------------------------------------------------------------------------------
/gfx/GrandmaUlrira.bin.txt:
--------------------------------------------------------------------------------
1 | ZeroMeaning.txt
--------------------------------------------------------------------------------
/gfx/Kirby.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Kirby.bin
--------------------------------------------------------------------------------
/gfx/Kirby.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Kirby.bin.png
--------------------------------------------------------------------------------
/gfx/Kirby.bin.txt:
--------------------------------------------------------------------------------
1 | ZeroMeaning.txt
--------------------------------------------------------------------------------
/gfx/Linker.txt:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Linker",
3 | "url": "https://twitter.com/BenjaminMaksym"
4 | }
5 |
--------------------------------------------------------------------------------
/gfx/Luigi.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Luigi.bin
--------------------------------------------------------------------------------
/gfx/Luigi.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Luigi.bin.png
--------------------------------------------------------------------------------
/gfx/Luigi.bin.txt:
--------------------------------------------------------------------------------
1 | Linker.txt
--------------------------------------------------------------------------------
/gfx/MMLink.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/MMLink.bin
--------------------------------------------------------------------------------
/gfx/MMLink.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/MMLink.bin.png
--------------------------------------------------------------------------------
/gfx/MMLink.bin.txt:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Spikey-Valentine, Thunder Wool, and Techokami",
3 | "url": "https://www.spriters-resource.com/custom_edited/thelegendofzeldacustoms/sheet/159119/"
4 | }
5 |
--------------------------------------------------------------------------------
/gfx/Marin.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Marin.bin
--------------------------------------------------------------------------------
/gfx/Marin.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Marin.bin.png
--------------------------------------------------------------------------------
/gfx/Marin.bin.txt:
--------------------------------------------------------------------------------
1 | ZeroMeaning.txt
--------------------------------------------------------------------------------
/gfx/MarinAlpha.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/MarinAlpha.bin
--------------------------------------------------------------------------------
/gfx/MarinAlpha.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/MarinAlpha.bin.png
--------------------------------------------------------------------------------
/gfx/MarinAlpha.bin.txt:
--------------------------------------------------------------------------------
1 | ZeroMeaning.txt
--------------------------------------------------------------------------------
/gfx/Mario.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Mario.bin
--------------------------------------------------------------------------------
/gfx/Mario.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Mario.bin.png
--------------------------------------------------------------------------------
/gfx/Mario.bin.txt:
--------------------------------------------------------------------------------
1 | Linker.txt
--------------------------------------------------------------------------------
/gfx/Martha.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Martha.bin
--------------------------------------------------------------------------------
/gfx/Martha.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Martha.bin.png
--------------------------------------------------------------------------------
/gfx/Martha.bin.txt:
--------------------------------------------------------------------------------
1 | ZeroMeaning.txt
--------------------------------------------------------------------------------
/gfx/Matty.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Matty.bin
--------------------------------------------------------------------------------
/gfx/Matty.bin.names:
--------------------------------------------------------------------------------
1 | TRADING_ITEM_NECKLACE:Bikini Top
2 | RED_TUNIC:Red Dress
3 | BLUE_TUNIC:Blue Dress
4 |
--------------------------------------------------------------------------------
/gfx/Matty.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Matty.bin.png
--------------------------------------------------------------------------------
/gfx/Matty.bin.txt:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Madam Materia",
3 | "url": "https://www.twitch.tv/isabelle_zephyr"
4 | }
5 |
--------------------------------------------------------------------------------
/gfx/Meme.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Meme.bin
--------------------------------------------------------------------------------
/gfx/Meme.bin.names:
--------------------------------------------------------------------------------
1 | SWORD:Stick
2 | MAGIC_ROD:Fire Flower
3 | INSTRUMENT1:Triforce of Power
4 | INSTRUMENT2:Star Power
5 | #INSTRUMENT3:
6 | INSTRUMENT4:Pendant Of Power
7 | #INSTRUMENT5:
8 | #INSTRUMENT6:
9 | INSTRUMENT7:Screw Attack
10 | INSTRUMENT8:Gameboy
11 | BOWWOW:Charmander
12 | RUPEE:Coin
13 | RUPEES:Coins
14 |
--------------------------------------------------------------------------------
/gfx/Meme.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Meme.bin.png
--------------------------------------------------------------------------------
/gfx/Meme.bin.txt:
--------------------------------------------------------------------------------
1 | Linker.txt
--------------------------------------------------------------------------------
/gfx/NESLink.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/NESLink.bin
--------------------------------------------------------------------------------
/gfx/NESLink.bin.names:
--------------------------------------------------------------------------------
1 | OCARINA:Flute
2 |
--------------------------------------------------------------------------------
/gfx/NESLink.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/NESLink.bin.png
--------------------------------------------------------------------------------
/gfx/NESLink.bin.txt:
--------------------------------------------------------------------------------
1 | ZeroMeaning.txt
--------------------------------------------------------------------------------
/gfx/Ninten.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Ninten.bin
--------------------------------------------------------------------------------
/gfx/Ninten.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Ninten.bin.png
--------------------------------------------------------------------------------
/gfx/Ninten.bin.txt:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Swordy",
3 | "url": ""
4 | }
5 |
--------------------------------------------------------------------------------
/gfx/Richard.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Richard.bin
--------------------------------------------------------------------------------
/gfx/Richard.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Richard.bin.png
--------------------------------------------------------------------------------
/gfx/Richard.bin.txt:
--------------------------------------------------------------------------------
1 | Linker.txt
--------------------------------------------------------------------------------
/gfx/Ricky.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Ricky.bin
--------------------------------------------------------------------------------
/gfx/Ricky.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Ricky.bin.png
--------------------------------------------------------------------------------
/gfx/Rooster.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Rooster.bin
--------------------------------------------------------------------------------
/gfx/Rooster.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Rooster.bin.png
--------------------------------------------------------------------------------
/gfx/Rooster.bin.txt:
--------------------------------------------------------------------------------
1 | ZeroMeaning.txt
--------------------------------------------------------------------------------
/gfx/Rosa.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Rosa.bin
--------------------------------------------------------------------------------
/gfx/Rosa.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Rosa.bin.png
--------------------------------------------------------------------------------
/gfx/Rosa.bin.txt:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Jill",
3 | "url": ""
4 | }
5 |
--------------------------------------------------------------------------------
/gfx/Saria.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Saria.bin
--------------------------------------------------------------------------------
/gfx/Saria.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Saria.bin.png
--------------------------------------------------------------------------------
/gfx/Saria.bin.txt:
--------------------------------------------------------------------------------
1 | {
2 | "name": "MoonSuccubus",
3 | "url": "https://www.spriters-resource.com/custom_edited/thelegendofzeldacustoms/sheet/193204/"
4 | }
5 |
--------------------------------------------------------------------------------
/gfx/Sig.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Sig.bin
--------------------------------------------------------------------------------
/gfx/Sig.bin.names:
--------------------------------------------------------------------------------
1 | NIGHTMARE_KEY:Boss Key
2 | NIGHTMARE_KEY1:Boss Key for Tail Cave
3 | NIGHTMARE_KEY2:Boss Key for Bottle Grotto
4 | NIGHTMARE_KEY3:Boss Key for Key Cavern
5 | NIGHTMARE_KEY4:Boss Key for Angler's Tunnel
6 | NIGHTMARE_KEY5:Boss Key for Catfish's Maw
7 | NIGHTMARE_KEY6:Boss Key for Face Shrine
8 | NIGHTMARE_KEY7:Boss Key for Eagle's Tower
9 | NIGHTMARE_KEY8:Boss Key for Turtle Rock
10 | NIGHTMARE_KEY0:Boss Key for Color Dungeon
11 | RED_TUNIC:Red Lab Coat
12 | BLUE_TUNIC:Blue Lab Coat
13 | MEDICINE:Potion
14 | TOADSTOOL:Mushroom
15 | MAGIC_ROD:Magic Staff
16 | TRADING_ITEM_YOSHI_DOLL: Jiro Plush
17 |
--------------------------------------------------------------------------------
/gfx/Sig.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Sig.bin.png
--------------------------------------------------------------------------------
/gfx/Sig.bin.txt:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Madam Materia and Techokami",
3 | "url": "https://www.twitch.tv/isabelle_zephyr"
4 | }
5 |
--------------------------------------------------------------------------------
/gfx/Subrosian.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Subrosian.bin
--------------------------------------------------------------------------------
/gfx/Subrosian.bin.names:
--------------------------------------------------------------------------------
1 | SWORD:Rod of Seasons
2 | RUPEE:Chunk of Ore
3 | RUPEES:Chunks of Ore
4 |
--------------------------------------------------------------------------------
/gfx/Subrosian.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Subrosian.bin.png
--------------------------------------------------------------------------------
/gfx/Subrosian.bin.txt:
--------------------------------------------------------------------------------
1 | ZeroMeaning.txt
--------------------------------------------------------------------------------
/gfx/Tarin.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Tarin.bin
--------------------------------------------------------------------------------
/gfx/Tarin.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/Tarin.bin.png
--------------------------------------------------------------------------------
/gfx/Tarin.bin.txt:
--------------------------------------------------------------------------------
1 | Linker.txt
--------------------------------------------------------------------------------
/gfx/X.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/X.bin
--------------------------------------------------------------------------------
/gfx/X.bin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/X.bin.png
--------------------------------------------------------------------------------
/gfx/X.bin.txt:
--------------------------------------------------------------------------------
1 | {
2 | "name": "AhziDahaka",
3 | "url": ""
4 | }
5 |
--------------------------------------------------------------------------------
/gfx/ZeroMeaning.txt:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Zero Meaning",
3 | "url": "https://www.twitch.tv/zeromeaning/"
4 | }
--------------------------------------------------------------------------------
/gfx/template.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/template.png
--------------------------------------------------------------------------------
/gfx/template_extended.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/template_extended.png
--------------------------------------------------------------------------------
/gfx/template_extended2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/gfx/template_extended2.png
--------------------------------------------------------------------------------
/locations/all.py:
--------------------------------------------------------------------------------
1 | from .beachSword import BeachSword
2 | from .chest import Chest, DungeonChest
3 | from .droppedKey import DroppedKey
4 | from .seashell import Seashell, SeashellMansionBonus, SeashellMansion
5 | from .heartContainer import HeartContainer
6 | from .owlStatue import OwlStatue
7 | from .madBatter import MadBatter
8 | from .shop import ShopItem
9 | from .startItem import StartItem
10 | from .toadstool import Toadstool
11 | from .witch import Witch
12 | from .goldLeaf import GoldLeaf, SlimeKey
13 | from .boomerangGuy import BoomerangGuy
14 | from .anglerKey import AnglerKey
15 | from .hookshot import HookshotDrop
16 | from .faceKey import FaceKey
17 | from .birdKey import BirdKey
18 | from .heartPiece import HeartPiece
19 | from .tunicFairy import TunicFairy
20 | from .song import Song
21 | from .instrument import Instrument
22 | from .fishingMinigame import FishingMinigame
23 | from .keyLocation import KeyLocation
24 | from .tradeSequence import TradeSequenceItem
25 | from .keyhole import KeyHole
26 |
27 | from .items import *
28 |
--------------------------------------------------------------------------------
/locations/anglerKey.py:
--------------------------------------------------------------------------------
1 | from .droppedKey import DroppedKey
2 |
3 |
4 | class AnglerKey(DroppedKey):
5 | def __init__(self):
6 | super().__init__(0x0CE)
7 |
8 | def patch(self, rom, option, *, multiworld=None):
9 | super().patch(rom, option, multiworld=multiworld)
10 | # As the angler key can be in 2 possible rooms, patch both.
11 | rom.banks[0x3E][0x3800 + 0x1F8] = rom.banks[0x3E][0x3800 + 0x0CE]
12 | rom.banks[0x3E][0x3300 + 0x1F8] = rom.banks[0x3E][0x3300 + 0x0CE]
13 |
--------------------------------------------------------------------------------
/locations/beachSword.py:
--------------------------------------------------------------------------------
1 | from .droppedKey import DroppedKey
2 | from .items import *
3 | from roomEditor import RoomEditor
4 | from assembler import ASM
5 | from typing import Optional
6 | from rom import ROM
7 |
8 |
9 | class BeachSword(DroppedKey):
10 | def __init__(self) -> None:
11 | super().__init__(0x0F2)
12 |
13 | def patch(self, rom: ROM, option: str, *, multiworld: Optional[int] = None) -> None:
14 | # Set the heart piece data
15 | super().patch(rom, option, multiworld=multiworld)
16 |
17 | # Patch the room to contain a heart piece instead of the sword on the beach
18 | re = RoomEditor(rom, 0x0F2)
19 | re.removeEntities(0x31) # remove sword
20 | re.addEntity(5, 5, 0x35) # add heart piece
21 | re.store(rom)
22 |
23 | # Prevent shield drops from the like-like from turning into swords.
24 | rom.patch(0x03, 0x1B9C, ASM("ld a, [wSwordLevel]"), ASM("ld a, $01"), fill_nop=True)
25 | rom.patch(0x03, 0x244D, ASM("ld a, [wSwordLevel]"), ASM("ld a, $01"), fill_nop=True)
26 |
27 | def read(self, rom: ROM) -> str:
28 | re = RoomEditor(rom, 0x0F2)
29 | if re.hasEntity(0x31):
30 | return SWORD
31 | return super().read(rom)
32 |
--------------------------------------------------------------------------------
/locations/birdKey.py:
--------------------------------------------------------------------------------
1 | from .droppedKey import DroppedKey
2 |
3 |
4 | class BirdKey(DroppedKey):
5 | def __init__(self):
6 | super().__init__(0x27A)
7 |
8 |
--------------------------------------------------------------------------------
/locations/faceKey.py:
--------------------------------------------------------------------------------
1 | from .droppedKey import DroppedKey
2 |
3 |
4 | class FaceKey(DroppedKey):
5 | def __init__(self):
6 | super().__init__(0x27F)
7 |
--------------------------------------------------------------------------------
/locations/fishingMinigame.py:
--------------------------------------------------------------------------------
1 | from .droppedKey import DroppedKey
2 | from .constants import *
3 |
4 |
5 | class FishingMinigame(DroppedKey):
6 | def __init__(self):
7 | super().__init__(0x2B1)
8 |
9 | def configure(self, options):
10 | if options.heartpiece:
11 | super().configure(options)
12 | else:
13 | self.OPTIONS = [HEART_PIECE]
14 |
--------------------------------------------------------------------------------
/locations/goldLeaf.py:
--------------------------------------------------------------------------------
1 | from .droppedKey import DroppedKey
2 |
3 |
4 | class GoldLeaf(DroppedKey):
5 | pass # Golden leaves are patched to work exactly like dropped keys
6 |
7 |
8 | class SlimeKey(DroppedKey):
9 | # The slime key is secretly a golden leaf and just normally uses logic depended on the room number.
10 | # As we patched it to act like a dropped key, we can just be a dropped key in the right room
11 | def __init__(self):
12 | super().__init__(0x0C6)
13 |
--------------------------------------------------------------------------------
/locations/heartContainer.py:
--------------------------------------------------------------------------------
1 | from .droppedKey import DroppedKey
2 | from .items import *
3 |
4 |
5 | class HeartContainer(DroppedKey):
6 | # Due to the patches a heartContainers acts like a dropped key.
7 | def configure(self, options):
8 | if options.heartcontainers or options.hpmode in ('extralow', '5hit'):
9 | super().configure(options)
10 | elif options.hpmode == 'inverted':
11 | self.OPTIONS = [BAD_HEART_CONTAINER]
12 | elif options.hpmode == 'low':
13 | self.OPTIONS = [HEART_PIECE]
14 | else:
15 | self.OPTIONS = [HEART_CONTAINER]
16 |
--------------------------------------------------------------------------------
/locations/heartPiece.py:
--------------------------------------------------------------------------------
1 | from .droppedKey import DroppedKey
2 | from .items import *
3 |
4 |
5 | class HeartPiece(DroppedKey):
6 | # Due to the patches a heartPiece acts like a dropped key.
7 |
8 | def configure(self, options):
9 | if options.heartpiece:
10 | super().configure(options)
11 | else:
12 | self.OPTIONS = [HEART_PIECE]
13 |
--------------------------------------------------------------------------------
/locations/hookshot.py:
--------------------------------------------------------------------------------
1 | from .droppedKey import DroppedKey
2 |
3 |
4 | """
5 | The hookshot is dropped by the master stalfos.
6 | The master stalfos drops a "key" with, and modifies a bunch of properties:
7 |
8 | ld a, $30 ; $7EE1: $3E $30
9 | call SpawnNewEntity_trampoline ; $7EE3: $CD $86 $3B
10 |
11 | And then the dropped key handles the rest with room number specific code.
12 | As we patched the dropped key, this requires no extra handling.
13 | """
14 |
15 |
16 | class HookshotDrop(DroppedKey):
17 | def __init__(self):
18 | super().__init__(0x180)
19 |
--------------------------------------------------------------------------------
/locations/instrument.py:
--------------------------------------------------------------------------------
1 | from .droppedKey import DroppedKey
2 |
3 |
4 | class Instrument(DroppedKey):
5 | # Thanks to patches, an instrument is just a dropped key as far as the randomizer is concerned.
6 |
7 | def configure(self, options):
8 | if not options.instruments and not options.goal == "seashells":
9 | self.OPTIONS = ["INSTRUMENT%d" % (self._location.dungeon)]
10 |
--------------------------------------------------------------------------------
/locations/keyLocation.py:
--------------------------------------------------------------------------------
1 | from .itemInfo import ItemInfo
2 |
3 |
4 | class KeyLocation(ItemInfo):
5 | OPTIONS = []
6 |
7 | def __init__(self, key):
8 | super().__init__()
9 | self.OPTIONS = [key]
10 |
11 | def patch(self, rom, option, *, multiworld=None):
12 | pass
13 |
14 | def read(self, rom):
15 | return self.OPTIONS[0]
16 |
17 | def configure(self, options):
18 | pass
19 |
20 | @property
21 | def nameId(self):
22 | return self.OPTIONS[0] if self.OPTIONS and len(self.OPTIONS) == 1 else "None"
23 |
--------------------------------------------------------------------------------
/locations/madBatter.py:
--------------------------------------------------------------------------------
1 | from .itemInfo import ItemInfo
2 | from .constants import *
3 |
4 |
5 | class MadBatter(ItemInfo):
6 | OPTIONS = [POWER_BRACELET, SHIELD, BOW, HOOKSHOT, MAGIC_ROD, PEGASUS_BOOTS, OCARINA,
7 | FEATHER, SHOVEL, MAGIC_POWDER, BOMB, SWORD, FLIPPERS, MAGNIFYING_LENS, MEDICINE,
8 | TAIL_KEY, ANGLER_KEY, FACE_KEY, BIRD_KEY, GOLD_LEAF, SLIME_KEY, ROOSTER, HAMMER,
9 | RUPEES_50, RUPEES_20, RUPEES_100, RUPEES_200, RUPEES_500,
10 | SEASHELL, MESSAGE, BOOMERANG, HEART_PIECE, BOWWOW, ARROWS_10, SINGLE_ARROW,
11 | MAX_POWDER_UPGRADE, MAX_BOMBS_UPGRADE, MAX_ARROWS_UPGRADE, RED_TUNIC, BLUE_TUNIC,
12 | HEART_CONTAINER, BAD_HEART_CONTAINER, TOADSTOOL, SONG1, SONG2, SONG3,
13 | INSTRUMENT1, INSTRUMENT2, INSTRUMENT3, INSTRUMENT4, INSTRUMENT5, INSTRUMENT6, INSTRUMENT7, INSTRUMENT8,
14 | TRADING_ITEM_YOSHI_DOLL, TRADING_ITEM_RIBBON, TRADING_ITEM_DOG_FOOD, TRADING_ITEM_BANANAS, TRADING_ITEM_STICK,
15 | TRADING_ITEM_HONEYCOMB,TRADING_ITEM_PINEAPPLE, TRADING_ITEM_HIBISCUS, TRADING_ITEM_LETTER, TRADING_ITEM_BROOM,
16 | TRADING_ITEM_FISHING_HOOK,TRADING_ITEM_NECKLACE,TRADING_ITEM_SCALE,TRADING_ITEM_MAGNIFYING_GLASS,
17 | TAIL_CAVE_OPENED, KEY_CAVERN_OPENED, ANGLER_TUNNEL_OPENED, FACE_SHRINE_OPENED, CASTLE_GATE_OPENED, EAGLE_TOWER_OPENED
18 | ]
19 | MULTIWORLD = True
20 |
21 | def configure(self, options):
22 | return
23 |
24 | def patch(self, rom, option, *, multiworld=None):
25 | rom.banks[0x18][0x0F90 + (self.room & 0x0F)] = CHEST_ITEMS[option]
26 | if multiworld is not None:
27 | rom.banks[0x3E][0x3300 + self.room] = multiworld
28 |
29 | def read(self, rom):
30 | assert self._location is not None, hex(self.room)
31 | value = rom.banks[0x18][0x0F90 + (self.room & 0x0F)]
32 | for k, v in CHEST_ITEMS.items():
33 | if v == value:
34 | return k
35 | raise ValueError("Could not find mad batter contents in ROM (0x%02x)" % (value))
36 |
37 | def __repr__(self):
38 | return "%s:%03x" % (self.__class__.__name__, self.room)
39 |
--------------------------------------------------------------------------------
/locations/song.py:
--------------------------------------------------------------------------------
1 | from .droppedKey import DroppedKey
2 |
3 |
4 | class Song(DroppedKey):
5 | pass
6 |
--------------------------------------------------------------------------------
/locations/startItem.py:
--------------------------------------------------------------------------------
1 | from .itemInfo import ItemInfo
2 | from .constants import *
3 | from .droppedKey import DroppedKey
4 | from assembler import ASM
5 | from utils import formatText
6 | from roomEditor import RoomEditor
7 |
8 |
9 | class StartItem(DroppedKey):
10 | # We need to give something here that we can use to progress.
11 | OPTIONS = [SWORD, SHIELD, POWER_BRACELET, OCARINA, FEATHER, BOOMERANG, MAGIC_ROD, TAIL_KEY, SHOVEL, HOOKSHOT, PEGASUS_BOOTS, MAGIC_POWDER, BOMB]
12 | MULTIWORLD = False
13 |
14 | def __init__(self):
15 | super().__init__(0x2A3)
16 | self.give_bowwow = False
17 |
18 | def configure(self, options):
19 | if options.bowwow != 'normal':
20 | # When we have bowwow mode, we pretend to be a sword for logic reasons
21 | self.OPTIONS = [SWORD]
22 | self.give_bowwow = True
23 | elif options.randomstartlocation and options.entranceshuffle != 'none':
24 | self.OPTIONS.append(FLIPPERS)
25 |
26 | def patch(self, rom, option, *, multiworld=None):
27 | assert multiworld is None
28 |
29 | if self.give_bowwow:
30 | option = BOWWOW
31 | rom.texts[0xC8] = formatText("Got BowWow!")
32 |
33 | if option != SHIELD:
34 | rom.patch(5, 0x0CDA, ASM("ld a, $22"), ASM("ld a, $00")) # do not change links sprite into the one with a shield
35 |
36 | super().patch(rom, option)
37 |
--------------------------------------------------------------------------------
/locations/toadstool.py:
--------------------------------------------------------------------------------
1 | from .droppedKey import DroppedKey
2 | from .items import *
3 |
4 |
5 | class Toadstool(DroppedKey):
6 | def __init__(self, room=0x050):
7 | super().__init__(room)
8 |
9 | def configure(self, options):
10 | if not options.witch:
11 | self.OPTIONS = [TOADSTOOL]
12 | else:
13 | super().configure(options)
14 |
15 | def read(self, rom):
16 | if len(self.OPTIONS) == 1:
17 | return TOADSTOOL
18 | return super().read(rom)
19 |
--------------------------------------------------------------------------------
/locations/tunicFairy.py:
--------------------------------------------------------------------------------
1 | from .itemInfo import ItemInfo
2 | from .constants import *
3 |
4 |
5 | class TunicFairy(ItemInfo):
6 | OPTIONS = [POWER_BRACELET, SHIELD, BOW, HOOKSHOT, MAGIC_ROD, PEGASUS_BOOTS, OCARINA,
7 | FEATHER, SHOVEL, MAGIC_POWDER, BOMB, SWORD, FLIPPERS, MAGNIFYING_LENS, MEDICINE,
8 | TAIL_KEY, ANGLER_KEY, FACE_KEY, BIRD_KEY, GOLD_LEAF, SLIME_KEY, ROOSTER, HAMMER,
9 | RUPEES_50, RUPEES_20, RUPEES_100, RUPEES_200, RUPEES_500,
10 | SEASHELL, MESSAGE, BOOMERANG, HEART_PIECE, BOWWOW, ARROWS_10, SINGLE_ARROW,
11 | MAX_POWDER_UPGRADE, MAX_BOMBS_UPGRADE, MAX_ARROWS_UPGRADE, RED_TUNIC, BLUE_TUNIC,
12 | HEART_CONTAINER, BAD_HEART_CONTAINER, TOADSTOOL, SONG1, SONG2, SONG3,
13 | INSTRUMENT1, INSTRUMENT2, INSTRUMENT3, INSTRUMENT4, INSTRUMENT5, INSTRUMENT6, INSTRUMENT7, INSTRUMENT8,
14 | TRADING_ITEM_YOSHI_DOLL, TRADING_ITEM_RIBBON, TRADING_ITEM_DOG_FOOD, TRADING_ITEM_BANANAS, TRADING_ITEM_STICK,
15 | TRADING_ITEM_HONEYCOMB,TRADING_ITEM_PINEAPPLE, TRADING_ITEM_HIBISCUS, TRADING_ITEM_LETTER, TRADING_ITEM_BROOM,
16 | TRADING_ITEM_FISHING_HOOK,TRADING_ITEM_NECKLACE,TRADING_ITEM_SCALE,TRADING_ITEM_MAGNIFYING_GLASS,
17 | TAIL_CAVE_OPENED, KEY_CAVERN_OPENED, ANGLER_TUNNEL_OPENED, FACE_SHRINE_OPENED, CASTLE_GATE_OPENED, EAGLE_TOWER_OPENED
18 | ]
19 |
20 | def __init__(self, index):
21 | self.index = index
22 | super().__init__(0x301)
23 |
24 | def patch(self, rom, option, *, multiworld=None):
25 | assert multiworld is None
26 | rom.banks[0x36][0x11BF + self.index] = CHEST_ITEMS[option]
27 |
28 | def read(self, rom):
29 | value = rom.banks[0x36][0x11BF + self.index]
30 | for k, v in CHEST_ITEMS.items():
31 | if v == value:
32 | return k
33 | raise ValueError("Could not find tunic fairy contents in ROM (0x%02x)" % (value))
34 |
35 | @property
36 | def nameId(self):
37 | return "0x%03X-%s" % (self.room, self.index)
38 |
--------------------------------------------------------------------------------
/locations/witch.py:
--------------------------------------------------------------------------------
1 | from .constants import *
2 | from .itemInfo import ItemInfo
3 |
4 |
5 | class Witch(ItemInfo):
6 | def __init__(self):
7 | super().__init__(0x2A2)
8 |
9 | OPTIONS = [POWER_BRACELET, SHIELD, BOW, HOOKSHOT, MAGIC_ROD, PEGASUS_BOOTS, OCARINA,
10 | FEATHER, SHOVEL, MAGIC_POWDER, BOMB, SWORD, FLIPPERS, MAGNIFYING_LENS, MEDICINE,
11 | TAIL_KEY, ANGLER_KEY, FACE_KEY, BIRD_KEY, GOLD_LEAF, SLIME_KEY, ROOSTER, HAMMER,
12 | RUPEES_50, RUPEES_20, RUPEES_100, RUPEES_200, RUPEES_500,
13 | SEASHELL, MESSAGE, BOOMERANG, HEART_PIECE, BOWWOW, ARROWS_10, SINGLE_ARROW,
14 | MAX_POWDER_UPGRADE, MAX_BOMBS_UPGRADE, MAX_ARROWS_UPGRADE, RED_TUNIC, BLUE_TUNIC,
15 | HEART_CONTAINER, BAD_HEART_CONTAINER, TOADSTOOL, SONG1, SONG2, SONG3,
16 | INSTRUMENT1, INSTRUMENT2, INSTRUMENT3, INSTRUMENT4, INSTRUMENT5, INSTRUMENT6, INSTRUMENT7, INSTRUMENT8,
17 | TRADING_ITEM_YOSHI_DOLL, TRADING_ITEM_RIBBON, TRADING_ITEM_DOG_FOOD, TRADING_ITEM_BANANAS, TRADING_ITEM_STICK,
18 | TRADING_ITEM_HONEYCOMB,TRADING_ITEM_PINEAPPLE, TRADING_ITEM_HIBISCUS, TRADING_ITEM_LETTER, TRADING_ITEM_BROOM,
19 | TRADING_ITEM_FISHING_HOOK,TRADING_ITEM_NECKLACE,TRADING_ITEM_SCALE,TRADING_ITEM_MAGNIFYING_GLASS,
20 | TAIL_CAVE_OPENED, KEY_CAVERN_OPENED, ANGLER_TUNNEL_OPENED, FACE_SHRINE_OPENED, CASTLE_GATE_OPENED, EAGLE_TOWER_OPENED
21 | ]
22 |
23 | def configure(self, options):
24 | if not options.witch:
25 | self.OPTIONS = [MAGIC_POWDER]
26 |
27 | def patch(self, rom, option, *, multiworld=None):
28 | assert multiworld is None
29 | if len(self.OPTIONS) == 1:
30 | return
31 | rom.patch(0x05, 0x08D5, "09", "%02x" % (CHEST_ITEMS[option]))
32 |
33 | def read(self, rom):
34 | if rom.banks[0x05][0x08EF] != 0x00:
35 | return MAGIC_POWDER
36 | value = rom.banks[0x05][0x08D5]
37 | for k, v in CHEST_ITEMS.items():
38 | if v == value:
39 | return k
40 | raise ValueError("Could not find witch contents in ROM (0x%02x)" % (value))
41 |
--------------------------------------------------------------------------------
/logic/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/logic/__init__.py
--------------------------------------------------------------------------------
/mapgen/enemygen.py:
--------------------------------------------------------------------------------
1 | from .tileset import walkable_tiles, entrance_tiles
2 | import random
3 |
4 |
5 | ENEMIES = {
6 | "mountains": [
7 | (0x0B,),
8 | (0x0E,),
9 | (0x29,),
10 | (0x0E, 0x0E),
11 | (0x0E, 0x0E, 0x23),
12 | (0x0D,), (0x0D, 0x0D),
13 | ],
14 | "egg": [],
15 | "basic": [
16 | (), (), (), (), (), (),
17 | (0x09,), (0x09, 0x09), # octorock
18 | (0x9B, 0x9B), (0x9B, 0x9B, 0x1B), # slimes
19 | (0xBB, 0x9B), # bush crawler + slime
20 | (0xB9,),
21 | (0x0B, 0x23), # likelike + moblin
22 | (0x14, 0x0B, 0x0B), # moblins + sword
23 | (0x0B, 0x23, 0x23), # likelike + moblin
24 | (0xAE, 0xAE), # flying octorock
25 | (0xBA, ), # Bomber
26 | (0x0D, 0x0D), (0x0D, ),
27 | ],
28 | "town": [
29 | (), (), (0x6C, 0x6E), (0x6E,), (0x6E, 0x6E),
30 | ],
31 | "forest": [
32 | (0x0B,), # moblins
33 | (0x0B, 0x0B), # moblins
34 | (0x14, 0x0B, 0x0B), # moblins + sword
35 | ],
36 | "beach": [
37 | (0xC6, 0xC6),
38 | (0x0E, 0x0E, 0xC6),
39 | (0x0E, 0x0E, 0x09),
40 | ],
41 | "water": [],
42 | }
43 |
44 |
45 | def generate_enemies(room):
46 | options = ENEMIES[room.tileset_id]
47 | if not options:
48 | return
49 | positions = []
50 | for y in range(1, 7):
51 | for x in range(1, 9):
52 | if room.tiles[x + y * 10] in walkable_tiles and room.tiles[x + (y - 1) * 10] not in entrance_tiles:
53 | positions.append((x, y))
54 | for type_id in random.choice(options):
55 | if not positions:
56 | return
57 | x, y = random.choice(positions)
58 | positions.remove((x, y))
59 | room.entities.append((x, y, type_id))
60 |
--------------------------------------------------------------------------------
/mapgen/locations/base.py:
--------------------------------------------------------------------------------
1 | from roomEditor import RoomEditor
2 | from ..map import RoomInfo
3 |
4 |
5 | class LocationBase:
6 | MAX_COUNT = 9999
7 |
8 | def __init__(self, room: RoomInfo, x, y):
9 | self.room = room
10 | self.x = x
11 | self.y = y
12 | room.locations.append(self)
13 |
14 | def prepare(self, rom):
15 | pass
16 |
17 | def update_room(self, rom, re: RoomEditor):
18 | pass
19 |
20 | def connect_logic(self, logic_location):
21 | raise NotImplementedError(self.__class__)
22 |
23 | def get_item_pool(self):
24 | raise NotImplementedError(self.__class__)
25 |
--------------------------------------------------------------------------------
/mapgen/roomtype/base.py:
--------------------------------------------------------------------------------
1 | from ..tileset import open_tiles
2 |
3 |
4 | def plot_line(x0, y0, x1, y1):
5 | dx = abs(x1 - x0)
6 | sx = 1 if x0 < x1 else -1
7 | dy = -abs(y1 - y0)
8 | sy = 1 if y0 < y1 else -1
9 | error = dx + dy
10 |
11 | yield x0, y0
12 | while True:
13 | if x0 == x1 and y0 == y1:
14 | break
15 | e2 = 2 * error
16 | if e2 >= dy:
17 | error = error + dy
18 | x0 = x0 + sx
19 | yield x0, y0
20 | if e2 <= dx:
21 | error = error + dx
22 | y0 = y0 + sy
23 | yield x0, y0
24 |
25 | yield x1, y1
26 |
27 |
28 | class RoomType:
29 | def __init__(self, room):
30 | self.room = room
31 | room.room_type = self
32 |
33 | def seed(self, wfc, x, y):
34 | open_points = []
35 | r = self.room.edge_left.get_open_range()
36 | if r:
37 | open_points.append((x + 1, y + (r[0] + r[1]) // 2))
38 | r = self.room.edge_right.get_open_range()
39 | if r:
40 | open_points.append((x + 8, y + (r[0] + r[1]) // 2))
41 | r = self.room.edge_up.get_open_range()
42 | if r:
43 | open_points.append((x + (r[0] + r[1]) // 2, y + 1))
44 | r = self.room.edge_down.get_open_range()
45 | if r:
46 | open_points.append((x + (r[0] + r[1]) // 2, y + 6))
47 | if len(open_points) < 2:
48 | return
49 | mid_x = sum([x for x, y in open_points]) // len(open_points)
50 | mid_y = sum([y for x, y in open_points]) // len(open_points)
51 |
52 | for x0, y0 in open_points:
53 | for px, py in plot_line(x0, y0, mid_x, mid_y):
54 | wfc.cell_data[(px, py)].init_options.intersection_update(open_tiles)
55 |
--------------------------------------------------------------------------------
/mapgen/roomtype/forest.py:
--------------------------------------------------------------------------------
1 | from .base import RoomType
2 | from ..tileset import open_tiles
3 | import random
4 |
5 |
6 | class Forest(RoomType):
7 | def __init__(self, room):
8 | super().__init__(room)
9 | room.tileset_id = "forest"
10 |
11 | def seed(self, wfc, x, y):
12 | if self.room.room_up and isinstance(self.room.room_up.room_type, Forest) and self.room.edge_up.get_open_range() is None:
13 | self.room.edge_up.set_solid()
14 | if self.room.room_left and isinstance(self.room.room_left.room_type, Forest) and self.room.edge_left.get_open_range() is None:
15 | self.room.edge_left.set_solid()
16 |
17 | if self.room.room_up and isinstance(self.room.room_up.room_type, Forest) and random.random() < 0.5:
18 | door_x, door_y = x + 5 + random.randint(-1, 1), y + 3 + random.randint(-1, 1)
19 | wfc.cell_data[(door_x, door_y)].init_options.intersection_update({0xE3})
20 | self.room.edge_up.set_solid()
21 | if self.room.edge_left.get_open_range() is not None:
22 | for x0 in range(x + 1, door_x):
23 | wfc.cell_data[(x0, door_y + 1)].init_options.intersection_update(open_tiles)
24 | if self.room.edge_right.get_open_range() is not None:
25 | for x0 in range(door_x + 1, x + 10):
26 | wfc.cell_data[(x0, door_y + 1)].init_options.intersection_update(open_tiles)
27 | else:
28 | super().seed(wfc, x, y)
29 |
--------------------------------------------------------------------------------
/mapgen/roomtype/mountain.py:
--------------------------------------------------------------------------------
1 | from .base import RoomType
2 | from ..locations.entrance import EggEntrance
3 | import random
4 |
5 |
6 | class Mountain(RoomType):
7 | def __init__(self, room):
8 | super().__init__(room)
9 | room.tileset_id = "mountains"
10 | room.edge_left.set_open_min(3)
11 | room.edge_right.set_open_min(3)
12 |
13 | def seed(self, wfc, x, y):
14 | super().seed(wfc, x, y)
15 | if y == 0:
16 | if x == 0:
17 | wfc.cell_data[(0, 1)].init_options.intersection_update({0})
18 | if x == wfc.w - 10:
19 | wfc.cell_data[(x + 9, 1)].init_options.intersection_update({0})
20 | wfc.cell_data[(x + random.randint(3, 6), random.randint(0, 1))].init_options.intersection_update({0})
21 |
22 |
23 | class MountainEgg(RoomType):
24 | def __init__(self, room):
25 | super().__init__(room)
26 | room.tileset_id = "egg"
27 | room.edge_left.force_solid()
28 | room.edge_right.force_solid()
29 | room.edge_down.set_open_min(5)
30 | room.edge_down.set_open_max(6)
31 |
32 | EggEntrance(room, 5, 4)
33 |
34 | def seed(self, wfc, x, y):
35 | super().seed(wfc, x, y)
36 | wfc.cell_data[(x + 2, y + 1)].init_options.intersection_update({0x00})
37 | wfc.cell_data[(x + 2, y + 2)].init_options.intersection_update({0xEF})
38 | wfc.cell_data[(x + 5, y + 3)].init_options.intersection_update({0xAA})
39 |
--------------------------------------------------------------------------------
/mapgen/roomtype/town.py:
--------------------------------------------------------------------------------
1 | from .base import RoomType
2 | from ..tileset import solid_tiles
3 | import random
4 |
5 |
6 | class Town(RoomType):
7 | def __init__(self, room):
8 | super().__init__(room)
9 | room.tileset_id = "town"
10 |
11 | def seed(self, wfc, x, y):
12 | ex = x + 5 + random.randint(-1, 1)
13 | ey = y + 3 + random.randint(-1, 1)
14 | wfc.cell_data[(ex, ey)].init_options.intersection_update({0xE2})
15 | wfc.cell_data[(ex - 1, ey - 1)].init_options.intersection_update(solid_tiles)
16 | wfc.cell_data[(ex + 1, ey - 1)].init_options.intersection_update(solid_tiles)
17 |
--------------------------------------------------------------------------------
/mapgen/roomtype/water.py:
--------------------------------------------------------------------------------
1 | from .base import RoomType
2 | import random
3 |
4 |
5 | class Water(RoomType):
6 | def __init__(self, room):
7 | super().__init__(room)
8 | room.tileset_id = "water"
9 |
10 | # def seed(self, wfc, x, y):
11 | # wfc.cell_data[(x + 5 + random.randint(-1, 1), y + 3 + random.randint(-1, 1))].init_options.intersection_update({0x0E})
12 |
13 |
14 | class Beach(RoomType):
15 | def __init__(self, room):
16 | super().__init__(room)
17 | room.tileset_id = "beach"
18 | if self.room.room_down is None:
19 | self.room.edge_left.set_open_max(4)
20 | self.room.edge_right.set_open_max(4)
21 | self.room.edge_up.set_open_min(4)
22 | self.room.edge_up.set_open_max(6)
23 |
24 | def seed(self, wfc, x, y):
25 | if self.room.room_down is None:
26 | for n in range(1, 9):
27 | wfc.cell_data[(x + n, y + 5)].init_options.intersection_update({0x1E})
28 | for n in range(1, 9):
29 | wfc.cell_data[(x + n, y + 7)].init_options.intersection_update({0x1F})
30 | super().seed(wfc, x, y)
--------------------------------------------------------------------------------
/mapgen/util.py:
--------------------------------------------------------------------------------
1 |
2 | def xyrange(w, h):
3 | for y in range(h):
4 | for x in range(w):
5 | yield x, y
6 |
--------------------------------------------------------------------------------
/multiworld/arduinoConnector/lua.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/multiworld/arduinoConnector/lua.exe
--------------------------------------------------------------------------------
/multiworld/arduinoConnector/lua54.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/multiworld/arduinoConnector/lua54.dll
--------------------------------------------------------------------------------
/multiworld/arduinoConnector/serial.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/multiworld/arduinoConnector/serial.dll
--------------------------------------------------------------------------------
/multiworld/arduinoConnector/socket.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/multiworld/arduinoConnector/socket.dll
--------------------------------------------------------------------------------
/multiworld/socket.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/multiworld/socket.dll
--------------------------------------------------------------------------------
/patches/bank3e.asm/link.asm:
--------------------------------------------------------------------------------
1 | ; Handle the serial link cable
2 | #IF HARDWARE_LINK
3 | ; FF> = Idle
4 | ; D6> = Read: D0><[L] D1><[H] [HL]>
5 | ; D9> = Write: D8><[L] D9><[H] DA><[^DATA] DB><[DATA]
6 | ; DD> = OrW: D8><[L] D9><[H] DA><[^DATA] DB><[DATA] (used to set flags without requiring a slow read,modify,write race condition)
7 |
8 | handleSerialLink:
9 | ; Check if we got a byte from hardware
10 | ldh a, [$FF01]
11 |
12 | cp $D6
13 | jr z, serialReadMem
14 | cp $D9
15 | jr z, serialWriteMem
16 | cp $DD
17 | jr z, serialOrMem
18 |
19 | finishSerialLink:
20 | ; Do a new idle transfer.
21 | ld a, $E4
22 | ldh [$FF01], a
23 | ld a, $81
24 | ldh [$FF02], a
25 | ret
26 |
27 | serialReadMem:
28 | ld a, $D0
29 | call serialTransfer
30 | ld h, a
31 | ld a, $D1
32 | call serialTransfer
33 | ld l, a
34 | ld a, [hl]
35 | call serialTransfer
36 | jr finishSerialLink
37 |
38 | serialWriteMem:
39 | ld a, $D8
40 | call serialTransfer
41 | ld h, a
42 | ld a, $D9
43 | call serialTransfer
44 | ld l, a
45 | ld a, $DA
46 | call serialTransfer
47 | cpl
48 | ld c, a
49 | ld a, $DB
50 | call serialTransfer
51 | cp c
52 | jr nz, finishSerialLink
53 | ld [hl], a
54 | jr finishSerialLink
55 |
56 | serialOrMem:
57 | ld a, $D8
58 | call serialTransfer
59 | ld h, a
60 | ld a, $D9
61 | call serialTransfer
62 | ld l, a
63 | ld a, $DA
64 | call serialTransfer
65 | cpl
66 | ld c, a
67 | ld a, $DB
68 | call serialTransfer
69 | cp c
70 | jr nz, finishSerialLink
71 | ld c, a
72 | ld a, [hl]
73 | or c
74 | ld [hl], a
75 | jr finishSerialLink
76 |
77 | ; Transfer A to the serial link and wait for it to be done and return the result in A
78 | serialTransfer:
79 | ldh [$FF01], a
80 | ld a, $81
81 | ldh [$FF02], a
82 | .loop:
83 | ldh a, [$FF02]
84 | and $80
85 | jr nz, .loop
86 | ldh a, [$FF01]
87 | ret
88 |
89 | #ENDIF
90 |
--------------------------------------------------------------------------------
/patches/bank3e.asm/owl.asm:
--------------------------------------------------------------------------------
1 | HandleOwlStatue:
2 | call GetRoomStatusAddressInHL
3 | bit 5, [hl]
4 | ld d, $01
5 | ret nz
6 | set 5, [hl]
7 |
8 | ld hl, $7B16
9 | call OffsetPointerByRoomNumber
10 | ld a, [hl]
11 | ldh [$FFF1], a
12 | call ItemMessage
13 | call GiveItemFromChest
14 | ld d, $00
15 | ret
16 |
17 |
18 |
19 | GetRoomStatusAddressInHL:
20 | ld a, [$DBA5] ; isIndoor
21 | ld d, a
22 | ld hl, $D800
23 | ldh a, [$FFF6] ; room nr
24 | ld e, a
25 | ldh a, [$FFF7] ; map nr
26 | cp $FF
27 | jr nz, .notColorDungeon
28 |
29 | ld d, $00
30 | ld hl, $DDE0
31 | jr .notIndoorB
32 |
33 | .notColorDungeon:
34 | cp $1A
35 | jr nc, .notIndoorB
36 |
37 | cp $06
38 | jr c, .notIndoorB
39 |
40 | inc d
41 |
42 | .notIndoorB:
43 | add hl, de
44 | ret
45 |
46 |
47 | RenderOwlStatueItem:
48 | ld hl, $7B16
49 | call OffsetPointerByRoomNumber
50 | ld a, [hl]
51 | ldh [$FFF1], a
52 | jp RenderChestItem
53 |
--------------------------------------------------------------------------------
/patches/bomb.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 |
3 |
4 | def onlyDropBombsWhenHaveBombs(rom):
5 | rom.patch(0x03, 0x1FC5, ASM("call $608C"), ASM("call $50B2"))
6 | # We use some of the unused chest code space here to remove the bomb if you do not have bombs in your inventory.
7 | rom.patch(0x03, 0x10B2, 0x112A, ASM("""
8 | ld e, INV_SIZE
9 | ld hl, $DB00
10 | ld a, $02
11 | loop:
12 | cp [hl]
13 | jr z, resume
14 | dec e
15 | inc hl
16 | jr nz, loop
17 | jp UnloadEntity ; unload entity
18 | resume:
19 | jp $608C
20 | """), fill_nop=True)
--------------------------------------------------------------------------------
/patches/cats/Aurene.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/Aurene.bin
--------------------------------------------------------------------------------
/patches/cats/Garfield.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/Garfield.bin
--------------------------------------------------------------------------------
/patches/cats/Marie.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/Marie.bin
--------------------------------------------------------------------------------
/patches/cats/Mausi.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/Mausi.bin
--------------------------------------------------------------------------------
/patches/cats/ayrie.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/ayrie.bin
--------------------------------------------------------------------------------
/patches/cats/bert.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/bert.bin
--------------------------------------------------------------------------------
/patches/cats/binx.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/binx.bin
--------------------------------------------------------------------------------
/patches/cats/carlo.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/carlo.bin
--------------------------------------------------------------------------------
/patches/cats/colby_jack.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/colby_jack.bin
--------------------------------------------------------------------------------
/patches/cats/dusty_daisy.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/dusty_daisy.bin
--------------------------------------------------------------------------------
/patches/cats/fluffy.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/fluffy.bin
--------------------------------------------------------------------------------
/patches/cats/galactica.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/galactica.bin
--------------------------------------------------------------------------------
/patches/cats/henkie.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/henkie.bin
--------------------------------------------------------------------------------
/patches/cats/jack.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/jack.bin
--------------------------------------------------------------------------------
/patches/cats/jose.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/jose.bin
--------------------------------------------------------------------------------
/patches/cats/lola.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/lola.bin
--------------------------------------------------------------------------------
/patches/cats/meep.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/meep.bin
--------------------------------------------------------------------------------
/patches/cats/mora.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/mora.bin
--------------------------------------------------------------------------------
/patches/cats/newton.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/newton.bin
--------------------------------------------------------------------------------
/patches/cats/nyan.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/nyan.bin
--------------------------------------------------------------------------------
/patches/cats/patapouf.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/patapouf.bin
--------------------------------------------------------------------------------
/patches/cats/pippin.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/pippin.bin
--------------------------------------------------------------------------------
/patches/cats/schoko.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/schoko.bin
--------------------------------------------------------------------------------
/patches/cats/sunny.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/cats/sunny.bin
--------------------------------------------------------------------------------
/patches/chest.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 | from utils import formatText
3 | from locations.constants import CHEST_ITEMS
4 |
5 |
6 | def fixChests(rom):
7 | # Patch the chest code, so it can give a lvl1 sword.
8 | # Normally, there is some code related to the owl event when getting the tail key,
9 | # as we patched out the owl. We use it to jump to our custom code in bank $3E to handle getting the item
10 | rom.patch(0x03, 0x109C, ASM("""
11 | cp $11 ; if not tail key, skip
12 | jr nz, end
13 | push af
14 | ld a, [$C501]
15 | ld e, a
16 | ld hl, wEntitiesPrivateCountdown1Table
17 | add hl, de
18 | ld [hl], $38
19 | pop af
20 | end:
21 | ld e, a
22 | cp $21 ; if is message chest or higher number, next instruction is to skip giving things.
23 | """), ASM("""
24 | ld a, $06 ; GiveItemMultiworld
25 | rst 8
26 |
27 | and a ; clear the carry flag to always skip giving stuff.
28 | """), fill_nop=True)
29 |
30 | # Instead of the normal logic to on which sprite data to show, we jump to our custom code in bank 3E.
31 | rom.patch(0x07, 0x3C36, None, ASM("""
32 | ld a, $01
33 | rst 8
34 | jp $7C5E
35 | """), fill_nop=True)
36 |
37 | # Instead of the normal logic of showing the proper dialog, we jump to our custom code in bank 3E.
38 | rom.patch(0x07, 0x3C9C, None, ASM("""
39 | ld a, $0A ; showItemMessageMultiworld
40 | rst 8
41 | jp $7CE9
42 | """))
43 |
44 | # Sound to play is normally loaded from a table, which is no longer big enough. So always use the same sound.
45 | rom.patch(0x07, 0x3C81, ASM("""
46 | add hl, de
47 | ld a, [hl]
48 | """), ASM("ld a, $01"), fill_nop=True)
49 |
50 | # Always spawn seashells even if you have the L2 sword
51 | rom.patch(0x14, 0x192F, ASM("ld a, $1C"), ASM("ld a, $20"))
52 |
53 | rom.texts[0x9A] = formatText("You found 10 {BOMB}!")
54 |
55 |
56 | def setMultiChest(rom, option):
57 | room = 0x2F2
58 | addr = room + 0x560
59 | rom.banks[0x14][addr] = CHEST_ITEMS[option]
60 |
--------------------------------------------------------------------------------
/patches/colorBook.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 |
3 | def fixColorBook(rom):
4 | # patch to repair the color book shadow/flags. Can still fire projectiles over the book.
5 | rom.patch(0x03, 0x004A, "F2", "A2")
6 | # patch hitbox flags to match 1.2
7 | rom.patch(0x03, 0x0145, "80", "98")
8 |
--------------------------------------------------------------------------------
/patches/desert.py:
--------------------------------------------------------------------------------
1 | from roomEditor import RoomEditor
2 |
3 |
4 | def desertAccess(rom):
5 | re = RoomEditor(rom, 0x0FD)
6 | re.entities = [(6, 2, 0xC4)]
7 | re.store(rom)
8 |
--------------------------------------------------------------------------------
/patches/extragfx.py:
--------------------------------------------------------------------------------
1 | import utils
2 |
3 |
4 | def capacityUpgradeIcon():
5 | return utils.createTileData("""
6 | 33
7 | 3113
8 | 311113
9 | 33311333
10 | 3113
11 | 3333
12 | """)
13 |
14 |
15 | def songItemGraphics():
16 | return utils.createTileData("""
17 |
18 |
19 | ...
20 | . .222
21 | .2.2222
22 | .22.222.
23 | .22222.3
24 | .2..22.3
25 | .33...3
26 | .33.3.3
27 | ..233.3
28 | .22.2333
29 | .222.233
30 | .222...
31 | ...
32 | """ + """
33 |
34 |
35 | ..
36 | .22
37 | .223
38 | ..222
39 | .33.22
40 | .3..22
41 | .33.33
42 | ..23.
43 | ..233.
44 | .22.333
45 | .22..233
46 | .. .23
47 | ..
48 | """ + """
49 |
50 |
51 | ...
52 | .222.
53 | .2.332
54 | .23.32
55 | .233.2
56 | .222222
57 | .2222222
58 | .2..22.2
59 | .2.3.222
60 | .22...22
61 | .2333..
62 | .23333
63 | .....""", " .23")
64 |
65 |
66 | def bingoBoard(rom):
67 | mural = rom.banks[0x32][0x1500:0x1500 + 8 * 0x10]
68 | mural[0x28:0x3A] = b'\x55\xAA\x00\xFF\x55\xAA\x00\xFF\x55\xAA\x00\xFF\x55\xAA\x00\xFF\x00\xFF'
69 | mural[0x48:0x5A] = b'\x55\xAA\x00\xFF\x55\xAA\x00\xFF\x55\xAA\x00\xFF\x55\xAA\x00\xFF\x00\xFF'
70 | return mural
71 |
--------------------------------------------------------------------------------
/patches/fishingMinigame.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 | from roomEditor import RoomEditor
3 |
4 |
5 | def updateFinishingMinigame(rom):
6 | rom.patch(0x04, 0x26BE, 0x26DF, ASM("""
7 | ld a, $0E ; GiveItemAndMessageForRoomMultiworld
8 | rst 8
9 |
10 | ; Mark selection as stopping minigame, as we are not asking a question.
11 | ld a, $01
12 | ld [$C177], a
13 |
14 | ; Check if we got rupees from the item skip getting rupees from the fish.
15 | ld a, [$DB90]
16 | ld hl, $DB8F
17 | or [hl]
18 | jp nz, $66FE
19 | """), fill_nop=True)
20 |
--------------------------------------------------------------------------------
/patches/goldenLeaf.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 |
3 |
4 | def fixGoldenLeaf(rom):
5 | # Patch the golden leaf code so it jumps to the dropped key handling in bank 3E
6 | rom.patch(3, 0x2007, ASM("""
7 | ld de, $5FFB
8 | call $3C77 ; RenderActiveEntitySprite
9 | """), ASM("""
10 | ld a, $04
11 | rst 8
12 | """), fill_nop=True)
13 | rom.patch(3, 0x2018, None, ASM("""
14 | ld a, $06 ; giveItemMultiworld
15 | rst 8
16 | jp $602F
17 | """))
18 | rom.patch(3, 0x2037, None, ASM("""
19 | ld a, $0a ; showMessageMultiworld
20 | rst 8
21 | jp $604B
22 | """))
23 |
24 | # Patch all over the place to move the golden leafs to a different memory location.
25 | # We use $DB6D (dungeon 9 status), but we could also use $DB7A (wGhostSeeksGrave, which is only used by the ghost)
26 | rom.patch(0x00, 0x2D17, ASM("ld a, [$DB15]"), ASM("ld a, $06"), fill_nop=True) # Always load the slime tiles
27 | rom.patch(0x02, 0x3005, ASM("cp $06"), ASM("cp $01"), fill_nop=True) # Instead of checking for 6 leaves a the keyhole, just check for the key
28 | rom.patch(0x20, 0x1AD1, ASM("ld a, [$DB15]"), ASM("ld a, [wGoldenLeaves]")) # For the status screen, load the number of leafs from the proper memory
29 | rom.patch(0x03, 0x0980, ASM("ld a, [$DB15]"), ASM("ld a, [wGoldenLeaves]")) # If leaves >= 6 move richard
30 | rom.patch(0x06, 0x0059, ASM("ld a, [$DB15]"), ASM("ld a, [wGoldenLeaves]")) # If leaves >= 6 move richard
31 | rom.patch(0x06, 0x007D, ASM("ld a, [$DB15]"), ASM("ld a, [wGoldenLeaves]")) # Richard message if no leaves
32 | rom.patch(0x06, 0x00B8, ASM("ld [$DB15], a"), ASM("ld [wGoldenLeaves], a")) # Stores FF in the leaf counter if we opened the path
33 | # 6:40EE uses leaves == 6 to check if we have collected the key, but only to change the message.
34 | # rom.patch(0x06, 0x2AEF, ASM("ld a, [$DB15]"), ASM("ld a, [wGoldenLeaves]")) # Telephone message handler
35 |
--------------------------------------------------------------------------------
/patches/heartPiece.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 |
3 |
4 | def fixHeartPiece(rom):
5 | # Patch all locations where the piece of heart is rendered.
6 | rom.patch(0x03, 0x1b52, ASM("ld de, $5A4D\ncall RenderActiveEntitySpritesPair"), ASM("ld a, $04\nrst 8"), fill_nop=True) # state 0
7 |
8 | # Write custom code in the first state handler, this overwrites all state handlers
9 | # Till state 5.
10 | rom.patch(0x03, 0x1A74, 0x1A98, ASM("""
11 | ; Render sprite
12 | ld a, $05
13 | rst 8
14 |
15 | ; Handle item effect
16 | ld a, $06 ; giveItemMultiworld
17 | rst 8
18 |
19 | ;Show message
20 | ld a, $0A ; showMessageMultiworld
21 | rst 8
22 |
23 | ; Switch to state 5
24 | ld hl, wEntitiesStateTable
25 | add hl, bc
26 | ld [hl], $05
27 | ret
28 | """), fill_nop=True)
29 | # Insert a state 5 handler
30 | rom.patch(0x03, 0x1A98, 0x1B17, ASM("""
31 | ; Render sprite
32 | ld a, $05
33 | rst 8
34 |
35 | ld a, [wDialogState]
36 | and a
37 | ret nz
38 |
39 | call $512A ; mark room as done
40 | call UnloadEntity
41 | ret
42 | """), fill_nop=True)
43 |
--------------------------------------------------------------------------------
/patches/instrument.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 |
3 |
4 | def fixInstruments(rom):
5 | rom.patch(0x03, 0x1EA9, 0x1EAE, "", fill_nop=True)
6 | rom.patch(0x03, 0x1EB9, 0x1EC8, ASM("""
7 | ; Render sprite
8 | ld a, $05
9 | rst 8
10 | """), fill_nop=True)
11 |
12 | # Patch the message and instrument giving code
13 | rom.patch(0x03, 0x1EE3, 0x1EF6, ASM("""
14 | ; Handle item effect
15 | ld a, $06 ; giveItemMultiworld
16 | rst 8
17 |
18 | ;Show message
19 | ld a, $0A ; showMessageMultiworld
20 | rst 8
21 | """), fill_nop=True)
22 |
23 | # Color cycle palette 7 instead of 1
24 | rom.patch(0x36, 0x30F0, ASM("ld de, $DC5C"), ASM("ld de, $DC84"))
25 |
--------------------------------------------------------------------------------
/patches/madBatter.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 | from utils import formatText
3 |
4 |
5 | def upgradeMadBatter(rom):
6 | # Normally the madbatter won't do anything if you have full capacity. Remove that check.
7 | rom.patch(0x18, 0x0F05, 0x0F1D, "", fill_nop=True)
8 | # Remove the code that finds which upgrade to apply,
9 | rom.patch(0x18, 0x0F9E, 0x0FC4, "", fill_nop=True)
10 | rom.patch(0x18, 0x0FD2, 0x0FD8, "", fill_nop=True)
11 |
12 | # Finally, at the last step, give the item and the item message.
13 | rom.patch(0x18, 0x1016, 0x101B, "", fill_nop=True)
14 | rom.patch(0x18, 0x101E, 0x1051, ASM("""
15 | ; Mad batter rooms are E0,E1 and E2, load the item type from a table in the rom
16 | ; which only has 3 entries, and store it where bank 3E wants it.
17 | ldh a, [hMapRoom] ; current room
18 | and $0F
19 | ld d, $00
20 | ld e, a
21 | ld hl, $4F90
22 | add hl, de
23 | ld a, [hl]
24 | ldh [hActiveEntitySpriteVariant], a
25 |
26 | ; Give item
27 | ld a, $06 ; giveItemMultiworld
28 | rst 8
29 | ; Message
30 | ld a, $0A ; showMessageMultiworld
31 | rst 8
32 | ; Force the dialog at the bottom
33 | ld a, [wDialogState]
34 | and a
35 | ret z ; no dialog, skip
36 | or $80
37 | ld [wDialogState], a
38 | """), fill_nop=True)
39 | # Setup the default items
40 | rom.patch(0x18, 0x0F90, "406060", "848586")
41 |
42 | rom.texts[0xE2] = formatText("You can now carry more Magic Powder!")
43 | rom.texts[0xE3] = formatText("You can now carry more Bombs!")
44 | rom.texts[0xE4] = formatText("You can now carry more Arrows!")
45 |
--------------------------------------------------------------------------------
/patches/maptweaks.py:
--------------------------------------------------------------------------------
1 | from roomEditor import RoomEditor, ObjectWarp, ObjectVertical
2 |
3 |
4 | def tweakMap(rom):
5 | # 5 holes at the castle, reduces to 3
6 | re = RoomEditor(rom, 0x078)
7 | re.objects[-1].count = 3
8 | re.overlay[7 + 6 * 10] = re.overlay[9 + 6 * 10]
9 | re.overlay[8 + 6 * 10] = re.overlay[9 + 6 * 10]
10 | re.store(rom)
11 |
12 |
13 | def addBetaRoom(rom):
14 | re = RoomEditor(rom, 0x1FC)
15 | re.objects[-1].target_y -= 0x10
16 | re.store(rom)
17 | re = RoomEditor(rom, 0x038)
18 | re.changeObject(5, 1, 0xE1)
19 | re.removeObject(0, 0)
20 | re.removeObject(0, 1)
21 | re.removeObject(0, 2)
22 | re.removeObject(6, 1)
23 | re.objects.append(ObjectVertical(0, 0, 0x38, 3))
24 | re.objects.append(ObjectWarp(1, 0x1F, 0x1FC, 0x50, 0x7C))
25 | re.store(rom)
26 |
27 | rom.room_sprite_data_indoor[0x0FC] = rom.room_sprite_data_indoor[0x1A1]
28 |
29 |
30 | def tweakBirdKeyRoom(rom):
31 | # Make the bird key accessible without the rooster
32 | re = RoomEditor(rom, 0x27A)
33 | re.removeObject(1, 6)
34 | re.removeObject(2, 6)
35 | re.removeObject(3, 5)
36 | re.removeObject(3, 6)
37 | re.moveObject(1, 5, 2, 6)
38 | re.moveObject(2, 5, 3, 6)
39 | re.addEntity(3, 5, 0x9D)
40 | re.store(rom)
41 |
--------------------------------------------------------------------------------
/patches/music.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 |
3 |
4 | _LOOPING_MUSIC = (1, 2, 3, 4, 5, 6, 7, 8, 9, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
5 | 0x18, 0x19, 0x1C, 0x1D, 0x1F, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x2F, 0x31, 0x32, 0x33, 0x37,
6 | 0x39, 0x3A, 0x3C, 0x3E, 0x40, 0x48, 0x49, 0x4A, 0x4B, 0x4E, 0x50, 0x53, 0x54, 0x55, 0x57, 0x58, 0x59,
7 | 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61)
8 |
9 |
10 | def randomizeMusic(rom, rnd):
11 | # Randomize overworld
12 | for x in range(0, 16, 2):
13 | for y in range(0, 16, 2):
14 | idx = x + y * 16
15 | result = rnd.choice(_LOOPING_MUSIC)
16 | rom.banks[0x02][idx] = result
17 | rom.banks[0x02][idx+1] = result
18 | rom.banks[0x02][idx+16] = result
19 | rom.banks[0x02][idx+17] = result
20 | # Random music in dungeons/caves
21 | for n in range(0x20):
22 | rom.banks[0x02][0x100 + n] = rnd.choice(_LOOPING_MUSIC)
23 |
24 |
25 | def noMusic(rom):
26 | rom.patch(0x1B, 0x001E, ASM("ld hl, $D368\nldi a, [hl]"), ASM("xor a"), fill_nop=True)
27 | rom.patch(0x1E, 0x001E, ASM("ld hl, $D368\nldi a, [hl]"), ASM("xor a"), fill_nop=True)
28 |
29 | def shiftedMusic(rom):
30 | for n in range(18 * 4 + 2):
31 | freq = rom.banks[0x1B][0x09C2 + n * 2] | (rom.banks[0x1B][0x09C3 + n * 2] << 8)
32 | freq = max(0x20, min(int((freq - 8) * 0.95), 0x7FF))
33 | rom.banks[0x1B][0x09C2 + n * 2] = freq & 0xFF
34 | rom.banks[0x1B][0x09C3 + n * 2] = (freq >> 8) & 0xFF
35 |
36 | freq = rom.banks[0x1E][0x09BF + n * 2] | (rom.banks[0x1E][0x09C0 + n * 2] << 8)
37 | freq = max(0x20, min(int((freq - 8) * 0.95), 0x7FF))
38 | rom.banks[0x1E][0x09BF + n * 2] = freq & 0xFF
39 | rom.banks[0x1E][0x09C0 + n * 2] = (freq >> 8) & 0xFF
40 |
--------------------------------------------------------------------------------
/patches/overworld/alttp/06.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[1, 1, 129, 78, 78, 78, 78, 78, 130, 1,
7 | 126, 129, 76, 4, 4, 4, 4, 10, 77, 130,
8 | 240, 56, 4, 4, 4, 112, 10, 10, 4, 123,
9 | 230, 56, 10, 201, 4, 10, 10, 201, 10, 57,
10 | 230, 47, 61, 10, 4, 4, 10, 4, 62, 79,
11 | 230, 63, 47, 48, 48, 48, 48, 48, 79, 64,
12 | 45, 46, 63, 59, 59, 59, 59, 59, 64, 64,
13 | 10, 57, 63, 59, 59, 59, 59, 59, 64, 60],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":5,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"0b"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"27:2240"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"15"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"3e"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_3e_0b_15_27_2240.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/07.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7 | 1, 125, 127, 126, 1, 125, 126, 129, 78, 78,
8 | 123, 123, 123, 123, 123, 123, 123, 123, 4, 4,
9 | 230, 230, 30, 81, 81, 81, 81, 76, 4, 10,
10 | 230, 30, 76, 4, 10, 4, 4, 4, 4, 4,
11 | 230, 56, 10, 4, 44, 7, 6, 8, 46, 4,
12 | 30, 76, 4, 44, 50, 4, 4, 4, 51, 45,
13 | 56, 4, 4, 56, 4, 4, 12, 10, 4, 4],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":2,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"0b"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"27:2240"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"15"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"3e"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_3e_0b_15_27_2240.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/08.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7 | 78, 78, 78, 78, 78, 78, 130, 1, 129, 78,
8 | 4, 4, 10, 201, 4, 4, 57, 240, 56, 4,
9 | 4, 4, 4, 4, 10, 4, 77, 81, 76, 4,
10 | 10, 4, 201, 4, 4, 4, 4, 4, 4, 10,
11 | 4, 4, 44, 7, 6, 8, 46, 4, 4, 4,
12 | 45, 45, 50, 4, 4, 4, 51, 46, 75, 74,
13 | 4, 4, 4, 4, 12, 4, 4, 57, 4, 4],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":3,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"0b"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"27:2240"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"15"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"3e"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_3e_0b_15_27_2240.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/0D.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7 | 1, 125, 126, 1, 129, 78, 78, 130, 1, 125,
8 | 240, 240, 240, 240, 56, 4, 10, 57, 240, 240,
9 | 230, 230, 230, 230, 56, 4, 4, 77, 81, 81,
10 | 230, 230, 230, 30, 76, 10, 4, 4, 4, 4,
11 | 230, 30, 81, 76, 4, 4, 44, 45, 45, 45,
12 | 230, 56, 4, 10, 4, 4, 56, 4, 10, 10,
13 | 230, 56, 4, 201, 4, 4, 47, 48, 48, 61],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":4,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"0b"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"27:2240"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"15"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"3e"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.11.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_3e_0b_15_27_2240.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/18.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [4, 4, 10, 4, 12, 4, 4, 57, 4, 10, 48, 48, 61, 4, 4, 4, 62, 79, 4, 10, 59, 59, 47, 73, 75, 74, 79, 64, 10, 4, 226, 59, 63, 59, 59, 59, 64, 60, 4, 4, 4, 10, 58, 59, 59, 59, 60, 4, 4, 10, 10, 10, 4, 10, 4, 4, 4, 10, 4, 4, 10, 4, 62, 73, 75, 74, 48, 61, 4, 4, 48, 48, 79, 59, 59, 59, 59, 47, 48, 48], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 16, "id": 3, "name": "HEART_PIECE", "rotation": 0, "type": "entity", "visible": true, "width": 16, "x": 80, "y": 16}, {"height": 8, "id": 4, "name": "1:11:2fb:88:70", "rotation": 0, "type": "warp", "visible": true, "width": 8, "x": 0, "y": 0}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 5, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2240"}, {"name": "palette", "type": "string", "value": "15"}, {"name": "tileset", "type": "string", "value": "3e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3e_0b_15_27_2240.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/19.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [4, 12, 12, 12, 12, 12, 4, 10, 47, 61, 12, 12, 4, 201, 4, 12, 12, 4, 58, 56, 12, 33, 4, 4, 4, 33, 12, 4, 10, 56, 12, 4, 4, 4, 4, 4, 12, 4, 4, 56, 12, 201, 4, 4, 4, 201, 12, 4, 44, 50, 12, 12, 4, 33, 4, 12, 12, 4, 56, 4, 4, 12, 12, 12, 12, 12, 4, 201, 56, 10, 48, 73, 68, 74, 48, 48, 61, 10, 56, 4], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 16, "id": 3, "name": "WARP", "rotation": 0, "type": "entity", "visible": true, "width": 16, "x": 48, "y": 48}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 4, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2240"}, {"name": "palette", "type": "string", "value": "15"}, {"name": "tileset", "type": "string", "value": "3e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3e_0b_15_27_2240.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/1C.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [4, 10, 10, 4, 57, 4, 4, 51, 45, 45, 10, 4, 4, 4, 57, 10, 4, 4, 4, 4, 4, 10, 62, 48, 79, 48, 73, 75, 74, 48, 10, 62, 79, 59, 64, 59, 226, 59, 59, 59, 48, 79, 64, 59, 64, 4, 4, 4, 72, 59, 59, 64, 64, 59, 64, 73, 75, 74, 53, 59, 59, 64, 64, 59, 64, 100, 100, 100, 100, 59, 59, 64, 64, 59, 64, 59, 59, 59, 59, 59], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 8, "id": 1, "name": "1:0a:2ee:78:30", "rotation": 0, "type": "warp", "visible": true, "width": 8, "x": 0, "y": 0}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 2, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2240"}, {"name": "palette", "type": "string", "value": "15"}, {"name": "tileset", "type": "string", "value": "3e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3e_0b_15_27_2240.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/1E8.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[224, 38, 34, 34, 34, 34, 34, 34, 39, 224, 38, 42, 6, 6, 6, 6, 6, 6, 43, 39, 36, 6, 16, 6, 6, 16, 6, 6, 6, 37, 36, 16, 6, 6, 6, 6, 16, 6, 6, 37, 36, 6, 6, 6, 16, 6, 6, 6, 6, 37, 36, 6, 6, 6, 6, 6, 6, 6, 6, 37, 40, 44, 6, 6, 6, 6, 6, 6, 45, 41, 224, 40, 35, 35, 62, 35, 35, 35, 41, 224],
7 | "height":8,
8 | "id":1,
9 | "name":"Tiles",
10 | "opacity":1,
11 | "type":"tilelayer",
12 | "visible":true,
13 | "width":10,
14 | "x":0,
15 | "y":0
16 | },
17 | {
18 | "draworder":"topdown",
19 | "id":2,
20 | "name":"ObjectLayer",
21 | "objects":[
22 | {
23 | "height":16,
24 | "id":1,
25 | "name":"HEART_PIECE",
26 | "rotation":0,
27 | "type":"entity",
28 | "visible":true,
29 | "width":16,
30 | "x":64,
31 | "y":16
32 | }],
33 | "opacity":1,
34 | "type":"objectgroup",
35 | "visible":true,
36 | "x":0,
37 | "y":0
38 | }],
39 | "nextlayerid":1,
40 | "nextobjectid":2,
41 | "orientation":"orthogonal",
42 | "renderorder":"right-down",
43 | "tiledversion":"1.5.0",
44 | "tileheight":16,
45 | "tilesets":[
46 | {
47 | "columns":16,
48 | "firstgid":1,
49 | "image":"ZZ_indoor_0c_0c.png",
50 | "imageheight":256,
51 | "imagewidth":256,
52 | "margin":0,
53 | "name":"main",
54 | "spacing":0,
55 | "tilecount":256,
56 | "tileheight":16,
57 | "tilewidth":16
58 | }],
59 | "tilewidth":16,
60 | "type":"map",
61 | "version":1.5,
62 | "width":10
63 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/1F.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [4, 4, 10, 4, 4, 57, 4, 4, 51, 46, 4, 4, 4, 4, 62, 79, 10, 4, 4, 57, 73, 225, 74, 48, 79, 60, 4, 4, 10, 57, 59, 225, 59, 59, 60, 4, 4, 4, 4, 57, 4, 4, 4, 4, 4, 4, 4, 4, 4, 57, 4, 4, 4, 4, 10, 4, 4, 4, 62, 79, 48, 61, 4, 10, 4, 4, 62, 48, 79, 64, 59, 47, 48, 48, 48, 48, 79, 59, 64, 64], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 16, "id": 6, "name": "HONEYCOMB", "rotation": 0, "type": "entity", "visible": true, "width": 16, "x": 16, "y": 64}, {"height": 16, "id": 7, "name": "HONEYCOMB", "rotation": 0, "type": "entity", "visible": true, "width": 16, "x": 80, "y": 80}, {"height": 16, "id": 8, "name": "HONEYCOMB", "rotation": 0, "type": "entity", "visible": true, "width": 16, "x": 112, "y": 48}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 9, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2240"}, {"name": "palette", "type": "string", "value": "15"}, {"name": "tileset", "type": "string", "value": "3e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3e_0b_15_27_2240.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/1F8.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[224, 38, 34, 34, 72, 42, 36, 43, 39, 224, 38, 42, 6, 6, 6, 6, 40, 44, 43, 39, 36, 6, 16, 6, 6, 16, 16, 36, 6, 37, 36, 16, 6, 6, 6, 6, 16, 36, 175, 43, 36, 6, 6, 6, 16, 6, 6, 36, 6, 6, 36, 6, 6, 6, 6, 6, 6, 36, 6, 45, 40, 44, 6, 6, 6, 175, 38, 42, 45, 41, 224, 40, 35, 35, 35, 44, 36, 45, 41, 224],
7 | "height":8,
8 | "id":1,
9 | "name":"Tiles",
10 | "opacity":1,
11 | "type":"tilelayer",
12 | "visible":true,
13 | "width":10,
14 | "x":0,
15 | "y":0
16 | },
17 | {
18 | "draworder":"topdown",
19 | "id":2,
20 | "name":"ObjectLayer",
21 | "objects":[
22 | {
23 | "height":16,
24 | "id":2,
25 | "name":"PINCER",
26 | "rotation":0,
27 | "type":"entity",
28 | "visible":true,
29 | "width":16,
30 | "x":128,
31 | "y":48
32 | },
33 | {
34 | "height":16,
35 | "id":4,
36 | "name":"PINCER",
37 | "rotation":0,
38 | "type":"entity",
39 | "visible":true,
40 | "width":16,
41 | "x":80,
42 | "y":96
43 | }],
44 | "opacity":1,
45 | "type":"objectgroup",
46 | "visible":true,
47 | "x":0,
48 | "y":0
49 | }],
50 | "nextlayerid":1,
51 | "nextobjectid":5,
52 | "orientation":"orthogonal",
53 | "renderorder":"right-down",
54 | "tiledversion":"1.5.0",
55 | "tileheight":16,
56 | "tilesets":[
57 | {
58 | "columns":16,
59 | "firstgid":1,
60 | "image":"ZZ_indoor_0c_0c.png",
61 | "imageheight":256,
62 | "imagewidth":256,
63 | "margin":0,
64 | "name":"main",
65 | "spacing":0,
66 | "tilecount":256,
67 | "tileheight":16,
68 | "tilewidth":16
69 | }],
70 | "tilewidth":16,
71 | "type":"map",
72 | "version":1.5,
73 | "width":10
74 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/26.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [59, 64, 226, 59, 225, 59, 63, 63, 63, 63, 59, 64, 4, 213, 4, 4, 58, 63, 63, 63, 59, 64, 4, 4, 4, 4, 4, 58, 63, 63, 59, 64, 4, 4, 10, 4, 4, 4, 58, 63, 59, 64, 4, 4, 4, 201, 4, 10, 4, 58, 59, 64, 73, 75, 74, 48, 61, 4, 4, 4, 72, 64, 59, 59, 59, 59, 47, 61, 4, 4, 57, 64, 59, 59, 59, 59, 63, 47, 61, 201], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 8, "id": 1, "name": "1:1f:1fd:58:50", "rotation": 0, "type": "warp", "visible": true, "width": 8, "x": 0, "y": 0}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 2, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2240"}, {"name": "palette", "type": "string", "value": "15"}, {"name": "tileset", "type": "string", "value": "3e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3e_0b_15_27_2240.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/28.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [59, 59, 64, 59, 59, 59, 59, 63, 59, 59, 59, 59, 64, 59, 59, 59, 59, 63, 59, 59, 59, 59, 64, 59, 59, 59, 59, 63, 59, 59, 59, 59, 64, 59, 59, 226, 59, 63, 59, 59, 59, 59, 60, 4, 10, 4, 4, 58, 59, 59, 4, 4, 4, 4, 62, 54, 4, 4, 4, 4, 4, 4, 4, 62, 53, 4, 4, 62, 54, 4, 73, 75, 74, 79, 4, 4, 4, 57, 4, 4], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 8, "id": 3, "name": "1:0a:2ea:50:7c", "rotation": 0, "type": "warp", "visible": true, "width": 8, "x": 0, "y": 0}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 4, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2240"}, {"name": "palette", "type": "string", "value": "15"}, {"name": "tileset", "type": "string", "value": "3e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3e_0b_15_27_2240.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/29.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [59, 59, 59, 59, 59, 59, 47, 48, 56, 10, 59, 59, 59, 59, 59, 59, 63, 59, 47, 48, 59, 71, 4, 72, 59, 59, 63, 59, 63, 59, 59, 52, 75, 53, 59, 59, 63, 59, 63, 59, 59, 100, 100, 100, 59, 59, 63, 59, 63, 59, 4, 4, 4, 201, 4, 4, 58, 59, 63, 59, 4, 33, 4, 201, 201, 4, 10, 4, 63, 59, 10, 4, 201, 201, 4, 4, 4, 4, 63, 59], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 2, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2240"}, {"name": "palette", "type": "string", "value": "15"}, {"name": "tileset", "type": "string", "value": "3e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3e_0b_15_27_2240.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/2C8.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[1, 38, 34, 34, 39, 38, 34, 34, 39, 1, 38, 42, 14, 14, 43, 42, 14, 14, 43, 39, 36, 14, 161, 14, 14, 14, 14, 14, 45, 41, 36, 14, 14, 14, 14, 14, 14, 14, 37, 1, 40, 44, 14, 14, 45, 35, 35, 35, 41, 1, 1, 36, 168, 45, 41, 38, 34, 34, 39, 1, 1, 36, 175, 37, 1, 36, 33, 33, 37, 1, 1, 36, 14, 37, 1, 36, 14, 45, 41, 1],
7 | "height":8,
8 | "id":1,
9 | "name":"Tiles",
10 | "opacity":1,
11 | "type":"tilelayer",
12 | "visible":true,
13 | "width":10,
14 | "x":0,
15 | "y":0
16 | },
17 | {
18 | "draworder":"topdown",
19 | "id":2,
20 | "name":"ObjectLayer",
21 | "objects":[
22 | {
23 | "height":16,
24 | "id":1,
25 | "name":"HIDING_GEL",
26 | "rotation":0,
27 | "type":"entity",
28 | "visible":true,
29 | "width":16,
30 | "x":32,
31 | "y":48
32 | },
33 | {
34 | "height":16,
35 | "id":2,
36 | "name":"HIDING_GEL",
37 | "rotation":0,
38 | "type":"entity",
39 | "visible":true,
40 | "width":16,
41 | "x":112,
42 | "y":48
43 | }],
44 | "opacity":1,
45 | "type":"objectgroup",
46 | "visible":true,
47 | "x":0,
48 | "y":0
49 | }],
50 | "nextlayerid":1,
51 | "nextobjectid":3,
52 | "orientation":"orthogonal",
53 | "renderorder":"right-down",
54 | "tiledversion":"1.5.0",
55 | "tileheight":16,
56 | "tilesets":[
57 | {
58 | "columns":16,
59 | "firstgid":1,
60 | "image":"ZZ_indoor_00_04.png",
61 | "imageheight":256,
62 | "imagewidth":256,
63 | "margin":0,
64 | "name":"main",
65 | "spacing":0,
66 | "tilecount":256,
67 | "tileheight":16,
68 | "tilewidth":16
69 | }],
70 | "tilewidth":16,
71 | "type":"map",
72 | "version":1.5,
73 | "width":10
74 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/2DF.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[1, 14, 38, 34, 34, 34, 34, 34, 39, 1, 34, 34, 42, 175, 175, 168, 6, 6, 43, 39, 175, 175, 176, 6, 6, 168, 6, 6, 2, 37, 6, 6, 2, 6, 176, 176, 176, 175, 177, 37, 6, 6, 2, 170, 2, 2, 2, 6, 168, 37, 6, 176, 2, 176, 2, 177, 177, 175, 45, 41, 175, 177, 177, 177, 177, 45, 35, 35, 41, 14, 35, 35, 35, 35, 35, 41, 1, 1, 14, 14],
7 | "height":8,
8 | "id":1,
9 | "name":"Tiles",
10 | "opacity":1,
11 | "type":"tilelayer",
12 | "visible":true,
13 | "width":10,
14 | "x":0,
15 | "y":0
16 | },
17 | {
18 | "draworder":"topdown",
19 | "id":2,
20 | "name":"ObjectLayer",
21 | "objects":[
22 | {
23 | "height":16,
24 | "id":1,
25 | "name":"HEART_PIECE",
26 | "rotation":0,
27 | "type":"entity",
28 | "visible":true,
29 | "width":16,
30 | "x":96,
31 | "y":16
32 | },
33 | {
34 | "height":16,
35 | "id":2,
36 | "name":"KEESE",
37 | "rotation":0,
38 | "type":"entity",
39 | "visible":true,
40 | "width":16,
41 | "x":80,
42 | "y":48
43 | }],
44 | "opacity":1,
45 | "type":"objectgroup",
46 | "visible":true,
47 | "x":0,
48 | "y":0
49 | }],
50 | "nextlayerid":1,
51 | "nextobjectid":3,
52 | "orientation":"orthogonal",
53 | "renderorder":"right-down",
54 | "tiledversion":"1.5.0",
55 | "tileheight":16,
56 | "tilesets":[
57 | {
58 | "columns":16,
59 | "firstgid":1,
60 | "image":"ZZ_indoor_0c_04.png",
61 | "imageheight":256,
62 | "imagewidth":256,
63 | "margin":0,
64 | "name":"main",
65 | "spacing":0,
66 | "tilecount":256,
67 | "tileheight":16,
68 | "tilewidth":16
69 | }],
70 | "tilewidth":16,
71 | "type":"map",
72 | "version":1.5,
73 | "width":10
74 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/2E.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [59, 64, 234, 234, 234, 63, 63, 59, 59, 59, 59, 64, 234, 234, 234, 63, 63, 59, 59, 59, 59, 64, 234, 234, 234, 63, 63, 59, 59, 59, 72, 60, 15, 15, 15, 63, 63, 59, 59, 59, 57, 15, 15, 15, 15, 58, 63, 59, 59, 59, 57, 15, 15, 28, 15, 15, 58, 59, 59, 59, 57, 15, 15, 28, 28, 15, 15, 15, 15, 28, 51, 46, 15, 15, 28, 28, 15, 15, 28, 28], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 3, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "22:1800"}, {"name": "palette", "type": "string", "value": "06"}, {"name": "tileset", "type": "string", "value": "2e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2e_0b_06_22_1800.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/38.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [59, 59, 59, 60, 4, 10, 4, 57, 4, 4, 4, 4, 4, 4, 4, 62, 48, 53, 33, 4, 4, 62, 73, 75, 74, 53, 4, 4, 4, 4, 48, 79, 59, 59, 71, 4, 4, 62, 48, 48, 59, 60, 4, 4, 52, 48, 48, 53, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10, 4, 4, 48, 61, 4, 201, 10, 4, 4, 4, 62, 48, 59, 47, 48, 48, 48, 48, 48, 48, 79, 59], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 2, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2240"}, {"name": "palette", "type": "string", "value": "15"}, {"name": "tileset", "type": "string", "value": "3e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3e_0b_15_27_2240.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/3A.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [59, 60, 4, 4, 4, 4, 57, 15, 15, 15, 4, 4, 4, 4, 4, 62, 79, 15, 15, 15, 4, 10, 4, 62, 48, 79, 60, 15, 15, 15, 201, 4, 62, 79, 59, 60, 15, 15, 15, 15, 48, 48, 79, 60, 15, 15, 15, 15, 203, 15, 59, 59, 60, 15, 15, 201, 203, 15, 15, 15, 15, 15, 15, 15, 203, 15, 201, 203, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 3, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2240"}, {"name": "palette", "type": "string", "value": "15"}, {"name": "tileset", "type": "string", "value": "3e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3e_0b_15_27_2240.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/3B.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [15, 15, 15, 15, 15, 15, 56, 4, 4, 57, 15, 15, 15, 15, 15, 15, 47, 48, 48, 79, 15, 15, 15, 15, 15, 15, 58, 59, 59, 60, 15, 44, 45, 45, 46, 15, 15, 15, 15, 15, 15, 56, 10, 4, 57, 15, 203, 201, 15, 15, 15, 52, 48, 48, 53, 15, 15, 15, 203, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 62, 73, 234, 234, 74, 48, 48, 48, 61], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 2, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2240"}, {"name": "palette", "type": "string", "value": "15"}, {"name": "tileset", "type": "string", "value": "3e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3e_0b_15_27_2240.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/3C.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [59, 59, 59, 59, 59, 56, 10, 4, 58, 59, 15, 15, 15, 15, 15, 56, 4, 4, 4, 4, 15, 44, 45, 45, 45, 50, 4, 10, 62, 48, 15, 56, 4, 4, 201, 4, 4, 62, 79, 59, 15, 56, 10, 4, 4, 4, 4, 57, 60, 15, 15, 47, 48, 48, 48, 48, 48, 79, 15, 15, 15, 58, 59, 59, 59, 59, 59, 60, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 203], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 16, "id": 3, "name": "HONEYCOMB", "rotation": 0, "type": "entity", "visible": true, "width": 16, "x": 48, "y": 48}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 4, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2240"}, {"name": "palette", "type": "string", "value": "15"}, {"name": "tileset", "type": "string", "value": "3e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3e_0b_15_27_2240.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/3F.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[28, 28, 28, 28, 28, 28, 27, 17, 56, 254,
7 | 17, 17, 26, 28, 44, 45, 7, 6, 47, 61,
8 | 21, 33, 22, 17, 56, 4, 4, 4, 58, 56,
9 | 19, 246, 250, 247, 52, 225, 61, 4, 4, 56,
10 | 46, 252, 256, 256, 250, 256, 56, 4, 4, 56,
11 | 57, 45, 7, 6, 8, 45, 50, 4, 4, 56,
12 | 57, 4, 4, 4, 4, 4, 4, 4, 44, 50,
13 | 51, 45, 46, 4, 4, 44, 45, 45, 50, 246],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":3,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"0b"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"22:1800"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"06"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"2e"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_2e_0b_06_22_1800.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/57.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[256, 249, 40, 41, 12, 40, 41, 5, 98, 11,
7 | 253, 33, 93, 93, 12, 93, 93, 93, 33, 69,
8 | 69, 33, 93, 93, 12, 93, 93, 93, 33, 11,
9 | 249, 98, 98, 98, 12, 98, 98, 98, 98, 11,
10 | 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
11 | 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
12 | 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
13 | 15, 15, 15, 15, 15, 15, 15, 15, 15, 15],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":3,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"03"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"25:2c00"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"07"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"38"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_38_03_07_25_2c00.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/66.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [15, 15, 15, 15, 15, 155, 152, 165, 166, 167, 15, 44, 45, 45, 45, 155, 149, 168, 228, 169, 15, 56, 93, 38, 39, 155, 14, 14, 14, 14, 15, 56, 5, 40, 41, 155, 14, 14, 14, 14, 15, 56, 93, 33, 11, 155, 14, 14, 14, 14, 15, 56, 33, 11, 11, 155, 14, 14, 14, 14, 15, 56, 11, 11, 11, 155, 14, 156, 154, 154, 15, 56, 11, 11, 11, 155, 14, 155, 151, 151], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 8, "id": 5, "name": "1:14:2d5:50:7c", "rotation": 0, "type": "warp", "visible": true, "width": 8, "x": 0, "y": 0}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 6, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "25:1400"}, {"name": "palette", "type": "string", "value": "06"}, {"name": "tileset", "type": "string", "value": "28"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_28_03_06_25_1400.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/6C.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[62, 48, 48, 48, 48, 48, 48, 48, 48, 48,
7 | 57, 4, 4, 4, 4, 4, 4, 4, 4, 4,
8 | 57, 4, 62, 48, 48, 73, 75, 74, 48, 48,
9 | 57, 4, 57, 59, 59, 59, 59, 59, 59, 59,
10 | 57, 4, 57, 4, 186, 4, 186, 186, 4, 186,
11 | 57, 4, 243, 186, 62, 48, 48, 48, 48, 48,
12 | 57, 4, 244, 186, 57, 59, 59, 59, 59, 59,
13 | 57, 4, 245, 4, 57, 186, 185, 185, 185, 186],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":3,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"0a"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"25:3c00"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"12"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"2a"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.11.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_2a_0a_12_25_3c00.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/6E.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [5, 62, 48, 48, 47, 48, 48, 48, 48, 48, 48, 79, 59, 59, 63, 59, 59, 59, 59, 59, 59, 64, 59, 59, 63, 59, 59, 59, 71, 186, 59, 60, 4, 4, 63, 59, 59, 59, 56, 186, 4, 4, 186, 4, 241, 4, 4, 4, 56, 186, 186, 4, 44, 45, 45, 45, 6, 45, 50, 186, 4, 186, 56, 186, 186, 186, 186, 186, 186, 186, 4, 4, 47, 48, 73, 75, 74, 48, 61, 186], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 2, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0a"}, {"name": "attribset", "type": "string", "value": "25:3c00"}, {"name": "palette", "type": "string", "value": "12"}, {"name": "tileset", "type": "string", "value": "2a"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2a_0a_12_25_3c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/71.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [13, 248, 58, 59, 59, 59, 59, 225, 225, 59, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 13, 111, 250, 111, 13, 13, 14, 14, 14, 14, 13, 252, 256, 69, 13, 13, 13, 13, 13, 13, 13, 111, 256, 111, 13, 13, 13, 13, 13, 13, 13, 252, 256, 253, 13, 13, 99, 13, 99, 99, 13, 111, 251, 111, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 7, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "10"}, {"name": "attribset", "type": "string", "value": "22:2800"}, {"name": "palette", "type": "string", "value": "0b"}, {"name": "tileset", "type": "string", "value": "26"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_26_10_0b_22_2800.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/7A.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[15, 56, 4, 4, 246, 249, 4, 4, 4, 11,
7 | 15, 47, 61, 4, 4, 4, 4, 247, 62, 48,
8 | 15, 58, 47, 48, 73, 225, 74, 48, 79, 59,
9 | 15, 111, 58, 59, 59, 225, 59, 59, 60, 15,
10 | 15, 15, 111, 15, 15, 15, 15, 15, 15, 15,
11 | 15, 111, 44, 45, 45, 45, 7, 6, 8, 45,
12 | 15, 44, 50, 252, 256, 249, 4, 4, 254, 251,
13 | 15, 56, 250, 256, 249, 4, 4, 4, 4, 4],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":1,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"03"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"25:0c00"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"04"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"0f"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_0f_03_04_25_0c00.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/7F.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [186, 58, 59, 59, 59, 225, 59, 59, 59, 63, 186, 186, 186, 186, 186, 186, 186, 186, 186, 63, 48, 48, 73, 225, 74, 48, 73, 225, 74, 63, 59, 59, 59, 225, 59, 59, 59, 225, 59, 56, 4, 4, 4, 4, 72, 59, 71, 4, 4, 56, 73, 75, 74, 48, 79, 59, 47, 73, 225, 56, 59, 59, 59, 59, 60, 4, 58, 59, 225, 47, 4, 4, 4, 4, 4, 4, 4, 4, 4, 63], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 5, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0a"}, {"name": "attribset", "type": "string", "value": "25:3c00"}, {"name": "palette", "type": "string", "value": "12"}, {"name": "tileset", "type": "string", "value": "2a"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2a_0a_12_25_3c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/80.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[41, 13, 13, 13, 13, 13, 13, 13, 13, 13,
7 | 39, 13, 96, 97, 99, 255, 99, 97, 96, 13,
8 | 41, 13, 96, 93, 93, 12, 93, 93, 96, 13,
9 | 39, 13, 96, 93, 93, 12, 93, 93, 96, 13,
10 | 41, 13, 96, 93, 93, 12, 93, 93, 96, 13,
11 | 39, 13, 96, 93, 93, 12, 93, 93, 96, 13,
12 | 41, 13, 97, 97, 99, 255, 99, 97, 97, 13,
13 | 39, 13, 13, 13, 13, 13, 13, 13, 13, 13],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":2,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"03"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"22:2800"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"0b"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"26"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_26_03_0b_22_2800.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/8C.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [57, 59, 59, 59, 59, 59, 59, 59, 59, 59, 57, 4, 4, 4, 4, 4, 4, 4, 4, 4, 57, 4, 4, 185, 185, 186, 186, 185, 185, 186, 57, 4, 4, 186, 186, 4, 4, 186, 186, 4, 57, 4, 4, 186, 186, 4, 4, 186, 186, 4, 57, 4, 4, 185, 185, 186, 186, 185, 185, 186, 79, 4, 4, 4, 4, 4, 4, 4, 4, 4, 64, 75, 74, 73, 225, 74, 48, 48, 48, 48], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 1, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0a"}, {"name": "attribset", "type": "string", "value": "25:3c00"}, {"name": "palette", "type": "string", "value": "12"}, {"name": "tileset", "type": "string", "value": "2a"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2a_0a_12_25_3c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/8D.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [59, 60, 186, 186, 47, 48, 48, 48, 79, 4, 4, 4, 186, 4, 63, 59, 59, 59, 64, 4, 186, 185, 185, 4, 72, 59, 59, 59, 71, 4, 4, 186, 186, 4, 243, 59, 59, 59, 56, 4, 4, 186, 186, 4, 244, 4, 4, 4, 56, 4, 186, 185, 185, 4, 245, 4, 186, 4, 56, 4, 4, 4, 4, 4, 57, 4, 186, 4, 56, 4, 73, 225, 74, 48, 79, 4, 186, 4, 47, 48], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 2, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0a"}, {"name": "attribset", "type": "string", "value": "25:3c00"}, {"name": "palette", "type": "string", "value": "12"}, {"name": "tileset", "type": "string", "value": "2a"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2a_0a_12_25_3c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/8F.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [4, 4, 4, 4, 4, 4, 4, 4, 4, 63, 48, 73, 75, 74, 48, 48, 73, 225, 74, 63, 59, 59, 59, 59, 59, 59, 59, 225, 59, 56, 4, 4, 4, 72, 59, 71, 4, 186, 4, 56, 4, 4, 4, 57, 59, 56, 4, 186, 4, 56, 73, 75, 74, 79, 5, 235, 4, 186, 185, 56, 59, 59, 59, 60, 5, 241, 4, 186, 4, 56, 5, 10, 5, 5, 5, 242, 4, 186, 4, 56], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 3, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0a"}, {"name": "attribset", "type": "string", "value": "25:3c00"}, {"name": "palette", "type": "string", "value": "12"}, {"name": "tileset", "type": "string", "value": "2a"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2a_0a_12_25_3c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/96.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [15, 58, 59, 59, 59, 59, 59, 59, 59, 59, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 38, 39, 5, 93, 93, 93, 248, 11, 11, 11, 43, 42, 39, 38, 39, 5, 93, 93, 93, 38, 42, 43, 42, 43, 42, 39, 69, 247, 38, 43], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 3, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "25:0c00"}, {"name": "palette", "type": "string", "value": "04"}, {"name": "tileset", "type": "string", "value": "0f"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_0f_03_04_25_0c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/9C.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[64, 59, 59, 59, 225, 59, 59, 59, 59, 59, 64, 59, 59, 59, 225, 59, 59, 59, 71, 4, 57, 59, 59, 59, 225, 59, 59, 59, 56, 4, 57, 5, 5, 5, 33, 5, 5, 69, 56, 4, 57, 5, 183, 183, 5, 183, 183, 5, 47, 48, 57, 5, 184, 184, 5, 184, 184, 5, 58, 59, 51, 46, 5, 69, 5, 5, 5, 5, 5, 5, 5, 51, 46, 5, 5, 44, 45, 45, 45, 45],
7 | "height":8,
8 | "id":1,
9 | "name":"Tiles",
10 | "opacity":1,
11 | "type":"tilelayer",
12 | "visible":true,
13 | "width":10,
14 | "x":0,
15 | "y":0
16 | },
17 | {
18 | "draworder":"topdown",
19 | "id":2,
20 | "name":"EntityLayer",
21 | "objects":[],
22 | "opacity":1,
23 | "type":"objectgroup",
24 | "visible":true,
25 | "x":0,
26 | "y":0
27 | }],
28 | "nextlayerid":1,
29 | "nextobjectid":3,
30 | "orientation":"orthogonal",
31 | "properties":[
32 | {
33 | "name":"animationset",
34 | "type":"string",
35 | "value":"03"
36 | },
37 | {
38 | "name":"attribset",
39 | "type":"string",
40 | "value":"22:2000"
41 | },
42 | {
43 | "name":"palette",
44 | "type":"string",
45 | "value":"09"
46 | },
47 | {
48 | "name":"tileset",
49 | "type":"string",
50 | "value":"2a"
51 | }],
52 | "renderorder":"right-down",
53 | "tiledversion":"1.5.0",
54 | "tileheight":16,
55 | "tilesets":[
56 | {
57 | "columns":16,
58 | "firstgid":1,
59 | "image":"tiles_2a_03_09_22_2000.png",
60 | "imageheight":256,
61 | "imagewidth":256,
62 | "margin":0,
63 | "name":"main",
64 | "spacing":0,
65 | "tilecount":256,
66 | "tileheight":16,
67 | "tilewidth":16
68 | }],
69 | "tilewidth":16,
70 | "type":"map",
71 | "version":1.5,
72 | "width":10
73 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/9E.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [59, 59, 64, 59, 59, 59, 59, 60, 5, 5, 4, 72, 64, 5, 5, 5, 5, 5, 5, 5, 4, 57, 60, 5, 5, 5, 38, 39, 5, 5, 4, 57, 5, 5, 5, 5, 40, 42, 39, 5, 48, 79, 5, 38, 39, 5, 38, 43, 41, 5, 59, 60, 5, 40, 41, 5, 40, 41, 5, 5, 5, 5, 5, 5, 69, 5, 5, 5, 5, 5, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 3, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "22:2000"}, {"name": "palette", "type": "string", "value": "09"}, {"name": "tileset", "type": "string", "value": "2a"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2a_03_09_22_2000.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/9F.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [5, 5, 5, 5, 5, 56, 4, 186, 4, 56, 5, 44, 45, 6, 45, 50, 4, 186, 4, 56, 5, 56, 4, 4, 4, 4, 4, 4, 4, 47, 5, 47, 48, 48, 48, 73, 225, 74, 48, 63, 5, 58, 59, 59, 59, 59, 225, 59, 59, 56, 5, 5, 5, 10, 5, 5, 33, 5, 5, 56, 5, 5, 10, 5, 5, 5, 5, 5, 44, 50, 45, 45, 45, 45, 46, 5, 44, 45, 50, 4], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 3, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0a"}, {"name": "attribset", "type": "string", "value": "25:3c00"}, {"name": "palette", "type": "string", "value": "12"}, {"name": "tileset", "type": "string", "value": "2a"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2a_0a_12_25_3c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/A1.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[41, 40, 41, 40, 41, 40, 41, 40, 41, 40,
7 | 5, 93, 93, 93, 93, 93, 5, 5, 5, 38,
8 | 99, 99, 99, 99, 99, 99, 93, 5, 38, 43,
9 | 247, 99, 93, 93, 5, 99, 99, 5, 40, 42,
10 | 253, 99, 93, 99, 5, 33, 5, 5, 93, 40,
11 | 253, 5, 93, 99, 5, 99, 99, 99, 93, 38,
12 | 253, 99, 5, 99, 99, 99, 93, 93, 93, 40,
13 | 253, 99, 246, 250, 247, 99, 5, 99, 99, 38],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":7,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"03"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"22:2800"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"0b"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"26"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_26_03_0b_22_2800.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/AE.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[4, 62, 48, 48, 48, 48, 48, 48, 61, 4,
7 | 62, 79, 59, 59, 59, 59, 59, 59, 47, 48,
8 | 57, 64, 59, 59, 59, 71, 4, 4, 58, 59,
9 | 57, 60, 11, 256, 256, 56, 4, 4, 4, 4,
10 | 57, 10, 252, 256, 251, 56, 4, 4, 4, 4,
11 | 57, 11, 256, 253, 10, 52, 61, 4, 4, 4,
12 | 57, 11, 256, 256, 250, 247, 52, 54, 4, 4,
13 | 57, 256, 256, 256, 256, 251, 247, 4, 4, 4],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":6,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"0b"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"27:2640"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"06"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"0f"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_0f_0b_06_27_2640.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/AF.json:
--------------------------------------------------------------------------------
1 | {"width": 10, "height": 8, "type": "map", "renderorder": "right-down", "tiledversion": "1.4.3", "version": 1.4, "tilewidth": 16, "tileheight": 16, "orientation": "orthogonal", "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_0f_0b_06_27_2640.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "layers": [{"data": [10, 4, 62, 48, 79, 5, 47, 61, 4, 10, 48, 48, 79, 59, 60, 5, 58, 56, 4, 4, 59, 59, 60, 4, 4, 4, 4, 56, 10, 4, 4, 4, 4, 4, 4, 4, 4, 56, 4, 10, 4, 4, 4, 4, 44, 45, 45, 50, 4, 4, 4, 4, 4, 4, 56, 4, 10, 4, 10, 4, 4, 4, 55, 48, 47, 48, 48, 48, 61, 4, 4, 4, 4, 4, 63, 59, 59, 59, 56, 10], "width": 10, "height": 8, "id": 1, "name": "Tiles", "type": "tilelayer", "visible": true, "opacity": 1, "x": 0, "y": 0}, {"id": 2, "name": "EntityLayer", "type": "objectgroup", "visible": true, "opacity": 1, "x": 0, "y": 0, "objects": []}], "properties": [{"name": "tileset", "type": "string", "value": "0f"}, {"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2640"}, {"name": "palette", "type": "string", "value": "06"}]}
--------------------------------------------------------------------------------
/patches/overworld/alttp/Alt06.json:
--------------------------------------------------------------------------------
1 | {"width": 10, "height": 8, "type": "map", "renderorder": "right-down", "tiledversion": "1.4.3", "version": 1.4, "tilewidth": 16, "tileheight": 16, "orientation": "orthogonal", "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3c_0b_13_27_1620.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "layers": [{"data": [1, 1, 1, 1, 6, 7, 8, 1, 1, 1, 125, 126, 1, 129, 100, 101, 102, 130, 125, 126, 240, 240, 240, 56, 114, 194, 128, 57, 240, 240, 230, 230, 30, 56, 170, 204, 192, 57, 94, 230, 230, 230, 56, 47, 73, 225, 74, 79, 57, 230, 230, 230, 56, 63, 59, 225, 59, 64, 57, 230, 230, 30, 47, 48, 73, 225, 74, 48, 79, 94, 230, 56, 63, 59, 59, 225, 59, 59, 60, 57], "width": 10, "height": 8, "id": 1, "name": "Tiles", "type": "tilelayer", "visible": true, "opacity": 1, "x": 0, "y": 0}, {"id": 2, "name": "EntityLayer", "type": "objectgroup", "visible": true, "opacity": 1, "x": 0, "y": 0, "objects": [{"width": 8, "height": 8, "x": 0, "y": 0, "name": "1:08:270:50:7c", "type": "warp"}]}], "properties": [{"name": "tileset", "type": "string", "value": "3C"}, {"name": "animationset", "type": "string", "value": "0B"}, {"name": "attribset", "type": "string", "value": "27:1620"}, {"name": "palette", "type": "string", "value": "13"}]}
--------------------------------------------------------------------------------
/patches/overworld/alttp/Alt0E.json:
--------------------------------------------------------------------------------
1 | {"width": 10, "height": 8, "type": "map", "renderorder": "right-down", "tiledversion": "1.4.3", "version": 1.4, "tilewidth": 16, "tileheight": 16, "orientation": "orthogonal", "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_30_0b_16_27_1e40.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "layers": [{"data": [1, 1, 1, 115, 117, 117, 117, 116, 1, 1, 125, 127, 126, 115, 118, 215, 119, 116, 125, 126, 240, 240, 240, 115, 117, 226, 117, 116, 240, 240, 30, 81, 81, 115, 117, 120, 117, 116, 81, 81, 56, 85, 33, 183, 117, 120, 117, 184, 4, 4, 56, 33, 4, 4, 4, 4, 10, 4, 4, 10, 47, 61, 4, 10, 4, 4, 4, 4, 4, 4, 63, 47, 48, 48, 73, 75, 74, 73, 75, 74], "width": 10, "height": 8, "id": 1, "name": "Tiles", "type": "tilelayer", "visible": true, "opacity": 1, "x": 0, "y": 0}, {"id": 2, "name": "EntityLayer", "type": "objectgroup", "visible": true, "opacity": 1, "x": 0, "y": 0, "objects": [{"width": 8, "height": 8, "x": 0, "y": 0, "name": "1:06:20e:50:7c", "type": "warp"}]}], "properties": [{"name": "tileset", "type": "string", "value": "30"}, {"name": "animationset", "type": "string", "value": "0B"}, {"name": "attribset", "type": "string", "value": "27:1E40"}, {"name": "palette", "type": "string", "value": "16"}]}
--------------------------------------------------------------------------------
/patches/overworld/alttp/Alt1B.json:
--------------------------------------------------------------------------------
1 | {"width": 10, "height": 8, "type": "map", "renderorder": "right-down", "tiledversion": "1.4.3", "version": 1.4, "tilewidth": 16, "tileheight": 16, "orientation": "orthogonal", "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_3e_0b_15_27_2240.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "layers": [{"data": [4, 4, 4, 4, 4, 4, 4, 57, 81, 81, 4, 62, 48, 61, 4, 4, 4, 57, 28, 28, 48, 79, 226, 47, 48, 48, 48, 79, 4, 28, 59, 64, 59, 63, 59, 59, 226, 64, 4, 4, 59, 60, 4, 58, 59, 59, 59, 60, 4, 4, 28, 4, 10, 4, 4, 10, 10, 4, 4, 28, 28, 62, 73, 75, 75, 75, 74, 61, 10, 4, 48, 79, 59, 59, 59, 59, 59, 47, 48, 48], "width": 10, "height": 8, "id": 1, "name": "Tiles", "type": "tilelayer", "visible": true, "opacity": 1, "x": 0, "y": 0}, {"id": 2, "name": "EntityLayer", "type": "objectgroup", "visible": true, "opacity": 1, "x": 0, "y": 0, "objects": []}], "properties": [{"name": "tileset", "type": "string", "value": "3E"}, {"name": "animationset", "type": "string", "value": "0B"}, {"name": "attribset", "type": "string", "value": "27:2240"}, {"name": "palette", "type": "string", "value": "15"}]}
--------------------------------------------------------------------------------
/patches/overworld/alttp/Alt2B.json:
--------------------------------------------------------------------------------
1 | {"width": 10, "height": 8, "type": "map", "renderorder": "right-down", "tiledversion": "1.4.3", "version": 1.4, "tilewidth": 16, "tileheight": 16, "orientation": "orthogonal", "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_34_0b_17_27_2640.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "layers": [{"data": [59, 64, 59, 214, 215, 216, 59, 63, 59, 59, 59, 64, 59, 206, 226, 207, 59, 63, 59, 59, 59, 60, 4, 10, 4, 10, 199, 58, 59, 59, 15, 15, 28, 28, 4, 4, 10, 15, 15, 15, 15, 15, 15, 28, 28, 28, 28, 15, 15, 15, 45, 45, 45, 45, 85, 45, 45, 45, 45, 45, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 45, 46, 44, 45, 46, 44, 45, 46, 44, 45], "width": 10, "height": 8, "id": 1, "name": "Tiles", "type": "tilelayer", "visible": true, "opacity": 1, "x": 0, "y": 0}, {"id": 2, "name": "EntityLayer", "type": "objectgroup", "visible": true, "opacity": 1, "x": 0, "y": 0, "objects": [{"width": 8, "height": 8, "x": 0, "y": 0, "name": "1:03:17a:50:7c", "type": "warp"}, {"width": 8, "height": 8, "x": 0, "y": 8, "name": "1:1f:1e9:28:20", "type": "warp"}]}], "properties": [{"name": "tileset", "type": "string", "value": "34"}, {"name": "animationset", "type": "string", "value": "0B"}, {"name": "attribset", "type": "string", "value": "27:2640"}, {"name": "palette", "type": "string", "value": "17"}]}
--------------------------------------------------------------------------------
/patches/overworld/alttp/Alt79.json:
--------------------------------------------------------------------------------
1 | {"width": 10, "height": 8, "type": "map", "renderorder": "right-down", "tiledversion": "1.4.3", "version": 1.4, "tilewidth": 16, "tileheight": 16, "orientation": "orthogonal", "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_28_03_06_25_1400.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "layers": [{"data": [151, 151, 158, 159, 14, 13, 14, 158, 159, 151, 148, 148, 152, 153, 14, 13, 14, 152, 153, 148, 15, 15, 149, 150, 14, 13, 14, 149, 150, 15, 15, 15, 15, 160, 14, 13, 14, 160, 15, 15, 15, 15, 15, 155, 14, 13, 14, 155, 15, 15, 45, 45, 45, 164, 14, 13, 14, 164, 45, 45, 248, 251, 256, 250, 247, 13, 246, 250, 256, 251, 38, 39, 252, 256, 253, 13, 252, 256, 253, 38], "width": 10, "height": 8, "id": 1, "name": "Tiles", "type": "tilelayer", "visible": true, "opacity": 1, "x": 0, "y": 0}, {"id": 2, "name": "EntityLayer", "type": "objectgroup", "visible": true, "opacity": 1, "x": 0, "y": 0, "objects": []}], "properties": [{"name": "tileset", "type": "string", "value": "28"}, {"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "25:1400"}, {"name": "palette", "type": "string", "value": "06"}]}
--------------------------------------------------------------------------------
/patches/overworld/alttp/Alt8C.json:
--------------------------------------------------------------------------------
1 | {"width": 10, "height": 8, "type": "map", "renderorder": "right-down", "tiledversion": "1.4.3", "version": 1.4, "tilewidth": 16, "tileheight": 16, "orientation": "orthogonal", "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2a_03_1d_25_3c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "layers": [{"data": [57, 180, 180, 180, 180, 180, 59, 59, 59, 59, 57, 180, 180, 180, 180, 180, 72, 59, 59, 59, 57, 174, 178, 232, 174, 178, 57, 113, 72, 59, 57, 175, 179, 228, 175, 179, 243, 5, 57, 15, 57, 186, 185, 186, 185, 186, 244, 5, 243, 15, 57, 183, 186, 186, 186, 183, 245, 5, 244, 15, 57, 184, 186, 186, 186, 184, 57, 5, 245, 15, 57, 48, 73, 225, 74, 48, 79, 5, 57, 15], "width": 10, "height": 8, "id": 1, "name": "Tiles", "type": "tilelayer", "visible": true, "opacity": 1, "x": 0, "y": 0}, {"id": 2, "name": "EntityLayer", "type": "objectgroup", "visible": true, "opacity": 1, "x": 0, "y": 0, "objects": [{"width": 8, "height": 8, "x": 0, "y": 0, "name": "1:05:1d4:50:7c", "type": "warp"}]}], "properties": [{"name": "tileset", "type": "string", "value": "2A"}, {"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "25:3C00"}, {"name": "palette", "type": "string", "value": "1D"}]}
--------------------------------------------------------------------------------
/patches/overworld/alttp/BB.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
7 | 15, 15, 15, 15, 15, 15, 15, 15, 28, 28,
8 | 15, 15, 15, 44, 45, 45, 46, 15, 15, 28,
9 | 45, 45, 45, 56, 4, 10, 51, 46, 15, 15,
10 | 11, 11, 11, 56, 10, 4, 4, 51, 45, 45,
11 | 256, 11, 11, 47, 61, 4, 10, 4, 4, 10,
12 | 11, 256, 256, 63, 47, 48, 48, 48, 61, 4,
13 | 256, 256, 256, 63, 63, 59, 59, 59, 47, 48],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":3,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"0b"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"27:2640"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"06"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"0f"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_0f_0b_06_27_2640.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/BC.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [15, 15, 15, 15, 58, 59, 59, 59, 59, 59, 28, 15, 15, 15, 15, 15, 15, 15, 15, 15, 28, 28, 15, 15, 44, 45, 45, 45, 45, 45, 15, 15, 15, 44, 50, 4, 4, 4, 10, 4, 45, 45, 45, 56, 4, 10, 4, 4, 4, 10, 4, 4, 4, 56, 4, 4, 4, 10, 4, 4, 4, 10, 4, 56, 4, 62, 48, 48, 61, 4, 48, 48, 48, 47, 48, 79, 59, 59, 47, 48], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 6, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2640"}, {"name": "palette", "type": "string", "value": "06"}, {"name": "tileset", "type": "string", "value": "0f"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_0f_0b_06_27_2640.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/BD.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[59, 59, 59, 59, 59, 59, 56, 249, 58, 56,
7 | 15, 15, 15, 15, 15, 15, 56, 10, 11, 56,
8 | 45, 45, 46, 15, 15, 15, 56, 11, 11, 56,
9 | 10, 4, 57, 15, 15, 15, 56, 11, 11, 56,
10 | 4, 62, 79, 15, 15, 15, 56, 11, 44, 45,
11 | 62, 79, 64, 15, 15, 15, 56, 256, 56, 4,
12 | 57, 64, 64, 15, 15, 15, 56, 256, 56, 10,
13 | 79, 64, 64, 15, 15, 15, 56, 256, 47, 48],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":7,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"0b"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"27:2640"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"06"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"0f"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_0f_0b_06_27_2640.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/C0.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [4, 62, 48, 48, 48, 48, 48, 48, 48, 48, 62, 79, 59, 59, 59, 59, 59, 59, 59, 59, 57, 60, 4, 4, 4, 4, 10, 4, 4, 4, 57, 4, 4, 44, 45, 45, 45, 46, 4, 4, 57, 4, 4, 56, 206, 95, 177, 57, 4, 10, 57, 10, 4, 56, 207, 228, 183, 57, 4, 4, 57, 4, 4, 52, 73, 225, 74, 53, 4, 4, 57, 4, 10, 4, 4, 4, 4, 4, 62, 48], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 8, "id": 1, "name": "1:07:23a:58:10", "rotation": 0, "type": "warp", "visible": true, "width": 8, "x": 0, "y": 0}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 2, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "22:2c00"}, {"name": "palette", "type": "string", "value": "0c"}, {"name": "tileset", "type": "string", "value": "2c"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2c_03_0c_22_2c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/C1.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 59, 59, 59, 59, 226, 59, 59, 59, 59, 59, 5, 5, 5, 33, 5, 33, 5, 5, 4, 4, 4, 5, 5, 5, 33, 5, 5, 4, 5, 4, 4, 4, 44, 45, 45, 45, 46, 4, 4, 4, 4, 5, 56, 206, 95, 177, 57, 4, 4, 4, 4, 4, 56, 207, 228, 183, 57, 4, 4, 4, 48, 48, 47, 73, 225, 74, 79, 73, 75, 74], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 8, "id": 4, "name": "1:07:23d:58:10", "rotation": 0, "type": "warp", "visible": true, "width": 8, "x": 0, "y": 0}, {"height": 8, "id": 5, "name": "1:07:25d:50:7c", "rotation": 0, "type": "warp", "visible": true, "width": 8, "x": 0, "y": 16}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 6, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "22:2c00"}, {"name": "palette", "type": "string", "value": "0c"}, {"name": "tileset", "type": "string", "value": "2c"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2c_03_0c_22_2c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/C2.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 4, 4, 10, 4, 4, 4, 4, 4, 72, 59, 4, 44, 45, 45, 45, 46, 4, 62, 79, 59, 4, 56, 206, 95, 177, 57, 4, 243, 60, 9, 10, 56, 207, 228, 183, 57, 4, 244, 9, 9, 4, 47, 73, 75, 74, 79, 4, 245, 9, 9, 48, 63, 59, 59, 59, 64, 48, 79, 9, 9], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 4, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "22:2c00"}, {"name": "palette", "type": "string", "value": "0c"}, {"name": "tileset", "type": "string", "value": "2c"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2c_03_0c_22_2c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/C3.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [48, 48, 48, 48, 48, 48, 48, 61, 10, 4, 59, 59, 59, 59, 59, 59, 59, 47, 61, 4, 59, 71, 4, 4, 5, 5, 5, 58, 56, 10, 59, 47, 61, 4, 4, 33, 5, 4, 56, 4, 9, 58, 47, 61, 4, 4, 4, 5, 56, 4, 9, 9, 58, 235, 4, 44, 45, 45, 50, 4, 9, 106, 9, 241, 4, 56, 4, 10, 4, 4, 9, 9, 9, 242, 4, 56, 10, 4, 4, 10], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 4, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "22:2c00"}, {"name": "palette", "type": "string", "value": "0c"}, {"name": "tileset", "type": "string", "value": "2c"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2c_03_0c_22_2c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/CC.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [59, 59, 59, 63, 59, 64, 59, 59, 63, 59, 59, 59, 59, 63, 59, 64, 59, 59, 63, 59, 59, 59, 59, 63, 59, 64, 59, 59, 63, 59, 59, 59, 59, 63, 59, 64, 59, 59, 63, 59, 59, 59, 59, 63, 59, 64, 59, 59, 63, 59, 15, 15, 15, 58, 59, 60, 15, 15, 58, 59, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 28, 15, 44, 45, 45, 45, 45, 45, 46, 15], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 7, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2640"}, {"name": "palette", "type": "string", "value": "06"}, {"name": "tileset", "type": "string", "value": "0f"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_0f_0b_06_27_2640.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/D0.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [57, 4, 4, 4, 4, 4, 10, 4, 57, 59, 57, 9, 4, 4, 10, 4, 4, 62, 79, 9, 57, 4, 9, 4, 4, 62, 48, 79, 60, 9, 51, 46, 9, 9, 4, 243, 59, 60, 9, 9, 4, 51, 46, 9, 4, 244, 9, 9, 9, 9, 10, 4, 57, 4, 4, 245, 9, 9, 9, 9, 4, 10, 57, 9, 4, 57, 9, 9, 9, 9, 4, 62, 79, 9, 4, 57, 9, 9, 9, 9], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 2, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "22:2c00"}, {"name": "palette", "type": "string", "value": "0c"}, {"name": "tileset", "type": "string", "value": "2c"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2c_03_0c_22_2c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/D2.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [59, 63, 59, 59, 59, 64, 59, 60, 9, 9, 9, 58, 59, 59, 59, 60, 9, 9, 106, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 62, 73, 75, 74, 54, 9, 9, 9, 9, 62, 53, 9, 9, 9, 9, 9, 9, 9, 9, 57, 9, 9, 9, 9, 9, 9, 201, 9, 9, 57, 9, 9, 9, 201, 9, 9, 9, 9, 48, 53, 9, 9, 9, 9, 9, 9, 9, 9], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 3, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "22:2c00"}, {"name": "palette", "type": "string", "value": "0c"}, {"name": "tileset", "type": "string", "value": "2c"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2c_03_0c_22_2c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/DD.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [15, 15, 15, 15, 58, 59, 225, 59, 63, 56, 15, 15, 15, 15, 15, 15, 15, 15, 58, 56, 15, 15, 15, 15, 15, 15, 15, 15, 15, 56, 15, 15, 15, 15, 15, 15, 15, 15, 15, 56, 15, 15, 15, 15, 15, 15, 15, 15, 15, 56, 15, 15, 15, 15, 15, 15, 15, 15, 44, 50, 15, 15, 15, 15, 15, 15, 15, 15, 56, 4, 15, 15, 15, 15, 15, 15, 15, 15, 56, 10], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 6, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2640"}, {"name": "palette", "type": "string", "value": "06"}, {"name": "tileset", "type": "string", "value": "0f"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_0f_0b_06_27_2640.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/DE.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [57, 64, 15, 15, 15, 15, 15, 15, 15, 15, 57, 60, 15, 15, 15, 44, 45, 45, 46, 15, 57, 15, 15, 15, 15, 56, 4, 4, 243, 15, 57, 15, 15, 15, 15, 56, 4, 4, 244, 15, 57, 15, 15, 15, 15, 47, 61, 4, 245, 15, 51, 46, 15, 15, 111, 58, 235, 4, 57, 15, 10, 57, 15, 15, 15, 15, 241, 4, 51, 45, 4, 57, 111, 15, 15, 111, 242, 4, 4, 4], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 4, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2640"}, {"name": "palette", "type": "string", "value": "06"}, {"name": "tileset", "type": "string", "value": "0f"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_0f_0b_06_27_2640.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/DF.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [15, 56, 4, 4, 4, 4, 4, 58, 59, 56, 15, 47, 48, 48, 61, 4, 4, 4, 4, 56, 15, 58, 59, 59, 47, 61, 10, 4, 44, 50, 15, 15, 15, 15, 58, 235, 4, 4, 56, 4, 15, 15, 15, 15, 15, 241, 4, 4, 47, 61, 15, 15, 15, 15, 15, 242, 4, 4, 58, 56, 45, 45, 45, 45, 45, 50, 4, 10, 4, 56, 4, 4, 4, 4, 10, 4, 4, 4, 4, 56], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 6, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2640"}, {"name": "palette", "type": "string", "value": "06"}, {"name": "tileset", "type": "string", "value": "0f"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_0f_0b_06_27_2640.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/E6.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[4, 10, 4, 10, 4, 57, 11, 11, 11, 11,
7 | 4, 10, 10, 4, 4, 57, 11, 12, 11, 11,
8 | 10, 4, 4, 62, 48, 79, 11, 12, 12, 11,
9 | 4, 4, 62, 79, 59, 64, 11, 11, 12, 11,
10 | 4, 10, 57, 64, 59, 60, 11, 93, 12, 11,
11 | 4, 4, 57, 60, 11, 11, 11, 12, 12, 11,
12 | 48, 48, 79, 247, 93, 11, 12, 12, 11, 11,
13 | 59, 59, 64, 11, 250, 253, 12, 252, 11, 11],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":2,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"03"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"25:0c00"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"04"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"0f"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_0f_03_04_25_0c00.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/E9.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[11, 256, 11, 11, 11, 251, 11, 11, 56, 4,
7 | 11, 11, 11, 11, 253, 33, 11, 44, 50, 10,
8 | 11, 11, 33, 33, 11, 11, 11, 56, 4, 4,
9 | 11, 11, 11, 254, 256, 11, 44, 50, 10, 4,
10 | 11, 11, 253, 62, 73, 75, 56, 4, 4, 10,
11 | 73, 75, 74, 79, 59, 59, 56, 4, 4, 4,
12 | 59, 59, 59, 60, 10, 4, 47, 61, 10, 4,
13 | 4, 4, 10, 4, 4, 4, 63, 47, 61, 4],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":4,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"03"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"22:1800"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"04"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"2e"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_2e_03_04_22_1800.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/EB.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [15, 15, 28, 15, 15, 15, 15, 15, 15, 15, 15, 28, 28, 15, 28, 15, 15, 15, 15, 15, 15, 28, 28, 28, 15, 15, 15, 15, 15, 15, 15, 15, 28, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 28, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 28, 28, 15, 15, 15, 15, 15, 15, 15, 15, 15, 28, 28, 15, 15, 45, 46, 15, 15, 15, 15, 15, 15, 15, 15], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 16, "id": 2, "name": "ZORA", "rotation": 0, "type": "entity", "visible": true, "width": 16, "x": 80, "y": 48}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 4, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2640"}, {"name": "palette", "type": "string", "value": "06"}, {"name": "tileset", "type": "string", "value": "0f"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_0f_0b_06_27_2640.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/ED.json:
--------------------------------------------------------------------------------
1 | {"width": 10, "height": 8, "type": "map", "renderorder": "right-down", "tiledversion": "1.4.3", "version": 1.4, "tilewidth": 16, "tileheight": 16, "orientation": "orthogonal", "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_0f_0b_06_27_2640.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "layers": [{"data": [15, 15, 15, 15, 15, 15, 15, 15, 47, 61, 15, 15, 15, 15, 15, 15, 44, 45, 63, 56, 15, 15, 15, 15, 15, 44, 50, 10, 63, 47, 15, 15, 15, 15, 15, 56, 4, 4, 58, 63, 15, 15, 15, 15, 15, 47, 61, 10, 10, 63, 15, 15, 15, 15, 15, 58, 47, 61, 4, 58, 15, 15, 15, 15, 15, 15, 58, 56, 10, 4, 15, 15, 15, 15, 15, 15, 15, 47, 48, 48], "width": 10, "height": 8, "id": 1, "name": "Tiles", "type": "tilelayer", "visible": true, "opacity": 1, "x": 0, "y": 0}, {"id": 2, "name": "EntityLayer", "type": "objectgroup", "visible": true, "opacity": 1, "x": 0, "y": 0, "objects": []}], "properties": [{"name": "tileset", "type": "string", "value": "0f"}, {"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2640"}, {"name": "palette", "type": "string", "value": "06"}]}
--------------------------------------------------------------------------------
/patches/overworld/alttp/EE.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [4, 57, 111, 15, 15, 111, 56, 4, 10, 4, 10, 57, 15, 15, 15, 15, 56, 4, 4, 4, 48, 79, 234, 234, 234, 234, 47, 61, 4, 10, 59, 64, 234, 234, 234, 234, 63, 47, 48, 48, 59, 64, 15, 15, 15, 15, 63, 63, 59, 59, 59, 64, 15, 15, 15, 15, 58, 63, 59, 59, 4, 57, 15, 15, 15, 15, 15, 58, 59, 59, 48, 79, 15, 15, 15, 15, 15, 15, 15, 15], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 16, "id": 1, "name": "ZORA", "rotation": 0, "type": "entity", "visible": true, "width": 16, "x": 48, "y": 96}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 2, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2640"}, {"name": "palette", "type": "string", "value": "06"}, {"name": "tileset", "type": "string", "value": "0f"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_0f_0b_06_27_2640.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/F0.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [57, 9, 9, 9, 9, 9, 9, 9, 9, 9, 57, 9, 9, 9, 9, 9, 106, 9, 9, 9, 57, 45, 46, 9, 9, 9, 9, 9, 9, 9, 57, 5, 51, 7, 6, 8, 45, 46, 9, 9, 57, 5, 5, 5, 5, 5, 5, 51, 46, 9, 57, 5, 5, 5, 5, 5, 5, 5, 243, 9, 51, 46, 5, 5, 5, 5, 5, 5, 244, 9, 4, 51, 45, 45, 45, 45, 45, 45, 45, 45], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [{"height": 16, "id": 1, "name": "HONEYCOMB", "rotation": 0, "type": "entity", "visible": true, "width": 16, "x": 48, "y": 80}, {"height": 16, "id": 2, "name": "HONEYCOMB", "rotation": 0, "type": "entity", "visible": true, "width": 16, "x": 80, "y": 80}], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 4, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "22:2c00"}, {"name": "palette", "type": "string", "value": "0c"}, {"name": "tileset", "type": "string", "value": "2c"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2c_03_0c_22_2c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/F3.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [9, 9, 9, 63, 63, 59, 59, 59, 59, 59, 9, 9, 9, 58, 63, 59, 59, 59, 59, 59, 9, 106, 9, 9, 58, 59, 59, 59, 59, 59, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 106, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 50, 4, 10, 4, 4, 10, 10, 4], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 3, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "22:2c00"}, {"name": "palette", "type": "string", "value": "0c"}, {"name": "tileset", "type": "string", "value": "2c"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2c_03_0c_22_2c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/F4.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [59, 59, 59, 59, 64, 64, 4, 4, 56, 4, 59, 59, 59, 59, 64, 60, 9, 4, 56, 4, 59, 59, 59, 59, 60, 4, 9, 9, 56, 10, 9, 9, 9, 9, 9, 9, 9, 9, 56, 4, 9, 9, 9, 9, 9, 9, 4, 44, 50, 4, 9, 9, 9, 9, 4, 4, 44, 50, 10, 4, 45, 45, 45, 45, 45, 45, 50, 4, 4, 10, 4, 10, 4, 4, 10, 4, 10, 10, 4, 4], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 5, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "22:2c00"}, {"name": "palette", "type": "string", "value": "0c"}, {"name": "tileset", "type": "string", "value": "2c"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2c_03_0c_22_2c00.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/F8.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "height":8,
3 | "infinite":false,
4 | "layers":[
5 | {
6 | "data":[11, 11, 11, 256, 256, 11, 11, 11, 57, 4,
7 | 11, 11, 256, 256, 253, 55, 61, 11, 57, 4,
8 | 11, 62, 54, 252, 256, 250, 47, 48, 79, 4,
9 | 11, 243, 250, 251, 251, 253, 58, 59, 60, 4,
10 | 11, 244, 249, 4, 4, 248, 254, 4, 4, 4,
11 | 11, 245, 4, 4, 5, 4, 4, 4, 4, 10,
12 | 45, 45, 46, 4, 4, 4, 4, 10, 4, 4,
13 | 10, 4, 51, 45, 45, 45, 45, 45, 45, 45],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":3,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"03"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"22:1800"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"04"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"2e"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.10.2",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_2e_03_04_22_1800.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":"1.10",
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/alttp/F9.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [4, 4, 4, 4, 4, 4, 63, 63, 47, 48, 10, 4, 4, 4, 4, 4, 58, 63, 63, 59, 4, 4, 4, 4, 4, 10, 4, 58, 63, 59, 4, 4, 4, 4, 4, 4, 4, 4, 58, 59, 4, 4, 4, 4, 10, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 44, 45, 45, 45, 46, 4, 10, 4, 45, 45, 50, 10, 4, 10, 51, 45, 45, 45], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 2, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "03"}, {"name": "attribset", "type": "string", "value": "22:1800"}, {"name": "palette", "type": "string", "value": "04"}, {"name": "tileset", "type": "string", "value": "2e"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_2e_03_04_22_1800.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/FB.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [4, 57, 15, 15, 15, 15, 15, 15, 15, 15, 48, 79, 15, 15, 28, 28, 15, 15, 15, 15, 59, 64, 15, 28, 15, 15, 15, 15, 15, 15, 4, 57, 15, 15, 15, 44, 45, 45, 46, 15, 4, 51, 7, 6, 8, 50, 10, 4, 51, 45, 4, 4, 4, 4, 4, 4, 4, 4, 10, 4, 10, 4, 44, 45, 45, 45, 46, 4, 4, 4, 45, 45, 50, 4, 10, 10, 51, 45, 45, 45], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 3, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2640"}, {"name": "palette", "type": "string", "value": "06"}, {"name": "tileset", "type": "string", "value": "0f"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_0f_0b_06_27_2640.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/FF.json:
--------------------------------------------------------------------------------
1 | {"compressionlevel": -1, "height": 8, "infinite": false, "layers": [{"data": [15, 15, 15, 56, 4, 4, 4, 4, 56, 4, 7, 6, 8, 50, 4, 4, 10, 4, 56, 4, 4, 4, 4, 4, 4, 4, 4, 44, 50, 10, 4, 4, 10, 4, 93, 4, 44, 50, 4, 10, 4, 93, 4, 4, 4, 4, 56, 4, 4, 4, 4, 4, 4, 93, 4, 4, 56, 4, 10, 4, 4, 10, 4, 4, 4, 44, 50, 4, 4, 10, 45, 45, 45, 45, 45, 50, 4, 10, 4, 4], "height": 8, "id": 1, "name": "Tiles", "opacity": 1, "type": "tilelayer", "visible": true, "width": 10, "x": 0, "y": 0}, {"draworder": "topdown", "id": 2, "name": "EntityLayer", "objects": [], "opacity": 1, "type": "objectgroup", "visible": true, "x": 0, "y": 0}], "nextlayerid": 1, "nextobjectid": 4, "orientation": "orthogonal", "properties": [{"name": "animationset", "type": "string", "value": "0b"}, {"name": "attribset", "type": "string", "value": "27:2640"}, {"name": "palette", "type": "string", "value": "06"}, {"name": "tileset", "type": "string", "value": "0f"}], "renderorder": "right-down", "tiledversion": "1.5.0", "tileheight": 16, "tilesets": [{"columns": 16, "firstgid": 1, "image": "tiles_0f_0b_06_27_2640.png", "imageheight": 256, "imagewidth": 256, "margin": 0, "name": "main", "spacing": 0, "tilecount": 256, "tileheight": 16, "tilewidth": 16}], "tilewidth": 16, "type": "map", "version": 1.5, "width": 10}
--------------------------------------------------------------------------------
/patches/overworld/alttp/desert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/overworld/alttp/desert.png
--------------------------------------------------------------------------------
/patches/overworld/alttp/hammer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/overworld/alttp/hammer.png
--------------------------------------------------------------------------------
/patches/overworld/alttp/walrus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daid/LADXR/2c0d59245c1a4c02d9c41e18a77c7e7fc1be1ab6/patches/overworld/alttp/walrus.png
--------------------------------------------------------------------------------
/patches/overworld/dive/72.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "editorsettings":
3 | {
4 | "export":
5 | {
6 | "target":"."
7 | }
8 | },
9 | "height":8,
10 | "infinite":false,
11 | "layers":[
12 | {
13 | "data":[48, 54, 58, 59, 59, 225, 59, 59, 60, 46, 4, 4, 4, 4, 4, 4, 4, 4, 4, 57, 4, 4, 4, 4, 4, 93, 93, 93, 4, 77, 4, 4, 12, 12, 4, 93, 93, 93, 93, 4, 4, 4, 12, 4, 4, 4, 93, 93, 4, 4, 4, 4, 12, 4, 4, 4, 4, 4, 4, 4, 48, 73, 225, 74, 48, 73, 75, 74, 48, 48, 59, 59, 225, 59, 59, 59, 59, 59, 59, 59],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":1,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"00"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"22:0000"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"16"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"0F"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.4.3",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_0f_00_16_22_0000.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":1.4,
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/overworld/dive/B0.json:
--------------------------------------------------------------------------------
1 | { "compressionlevel":-1,
2 | "editorsettings":
3 | {
4 | "export":
5 | {
6 | "target":"."
7 | }
8 | },
9 | "height":8,
10 | "infinite":false,
11 | "layers":[
12 | {
13 | "data":[56, 4, 4, 4, 4, 4, 4, 4, 4, 57, 56, 183, 184, 4, 4, 4, 4, 62, 48, 53, 56, 206, 207, 4, 4, 4, 4, 57, 183, 184, 56, 161, 93, 4, 4, 4, 4, 57, 206, 207, 56, 93, 93, 62, 73, 75, 74, 79, 183, 184, 56, 93, 4, 57, 59, 59, 59, 60, 206, 207, 47, 48, 48, 79, 31, 31, 31, 31, 31, 31, 58, 59, 59, 60, 32, 32, 32, 32, 32, 32],
14 | "height":8,
15 | "id":1,
16 | "name":"Tiles",
17 | "opacity":1,
18 | "type":"tilelayer",
19 | "visible":true,
20 | "width":10,
21 | "x":0,
22 | "y":0
23 | },
24 | {
25 | "draworder":"topdown",
26 | "id":2,
27 | "name":"EntityLayer",
28 | "objects":[],
29 | "opacity":1,
30 | "type":"objectgroup",
31 | "visible":true,
32 | "x":0,
33 | "y":0
34 | }],
35 | "nextlayerid":1,
36 | "nextobjectid":1,
37 | "orientation":"orthogonal",
38 | "properties":[
39 | {
40 | "name":"animationset",
41 | "type":"string",
42 | "value":"02"
43 | },
44 | {
45 | "name":"attribset",
46 | "type":"string",
47 | "value":"22:1000"
48 | },
49 | {
50 | "name":"palette",
51 | "type":"string",
52 | "value":"01"
53 | },
54 | {
55 | "name":"tileset",
56 | "type":"string",
57 | "value":"22"
58 | }],
59 | "renderorder":"right-down",
60 | "tiledversion":"1.4.3",
61 | "tileheight":16,
62 | "tilesets":[
63 | {
64 | "columns":16,
65 | "firstgid":1,
66 | "image":"tiles_22_02_01_22_1000.png",
67 | "imageheight":256,
68 | "imagewidth":256,
69 | "margin":0,
70 | "name":"main",
71 | "spacing":0,
72 | "tilecount":256,
73 | "tileheight":16,
74 | "tilewidth":16
75 | }],
76 | "tilewidth":16,
77 | "type":"map",
78 | "version":1.4,
79 | "width":10
80 | }
--------------------------------------------------------------------------------
/patches/phone.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 |
3 |
4 | def patchPhone(rom):
5 | rom.texts[0x141] = b""
6 | rom.texts[0x142] = b""
7 | rom.texts[0x143] = b""
8 | rom.texts[0x144] = b""
9 | rom.texts[0x145] = b""
10 | rom.texts[0x146] = b""
11 | rom.texts[0x147] = b""
12 | rom.texts[0x148] = b""
13 | rom.texts[0x149] = b""
14 | rom.texts[0x14A] = b""
15 | rom.texts[0x14B] = b""
16 | rom.texts[0x14C] = b""
17 | rom.texts[0x14D] = b""
18 | rom.texts[0x14E] = b""
19 | rom.texts[0x14F] = b""
20 | rom.texts[0x16E] = b""
21 | rom.texts[0x1FD] = b""
22 | rom.texts[0x228] = b""
23 | rom.texts[0x229] = b""
24 | rom.texts[0x22A] = b""
25 | rom.texts[0x240] = b""
26 | rom.texts[0x241] = b""
27 | rom.texts[0x242] = b""
28 | rom.texts[0x243] = b""
29 | rom.texts[0x244] = b""
30 | rom.texts[0x245] = b""
31 | rom.texts[0x247] = b""
32 | rom.texts[0x248] = b""
33 | rom.patch(0x06, 0x2A7C, 0x2BBC, ASM("""
34 | ld a, [wTunicType]
35 | call SetEntitySpriteVariant
36 |
37 | ldh a, [hActiveEntityVisualPosY]
38 | sub $05
39 | ldh [hActiveEntityVisualPosY], a
40 | ld de, TelephoneSpriteVariants
41 | call RenderActiveEntitySpritesPair
42 | call ReturnIfNonInteractive_06
43 | call CheckLinkInteractionWithEntity_06
44 | ret nc
45 |
46 | ; We use $DB6D to store which tunics we have. This is normally the Dungeon9 instrument, which does not exist.
47 | ld a, [wTunicType]
48 | ld hl, wCollectedTunics
49 | inc a
50 |
51 | cp $01
52 | jr nz, notTunic1
53 | bit 0, [HL]
54 | jr nz, notTunic1
55 | inc a
56 | notTunic1:
57 |
58 | cp $02
59 | jr nz, notTunic2
60 | bit 1, [HL]
61 | jr nz, notTunic2
62 | inc a
63 | notTunic2:
64 |
65 | cp $03
66 | jr nz, noWrap
67 | xor a
68 | noWrap:
69 |
70 | ld [wTunicType], a
71 | ret
72 | TelephoneSpriteVariants:
73 | db $50, $00, $52, $00
74 | db $50, $02, $52, $02
75 | db $50, $03, $52, $03
76 | """, 0x6A7C), fill_nop=True)
77 |
--------------------------------------------------------------------------------
/patches/photographer.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 |
3 |
4 | def fixPhotographer(rom):
5 | # Allow richard photo without slime key
6 | rom.patch(0x36, 0x3234, ASM("jr nz, $52"), "", fill_nop=True)
7 | rom.patch(0x36, 0x3240, ASM("jr z, $46"), "", fill_nop=True)
8 | # Allow richard photo when castle is opened
9 | rom.patch(0x36, 0x31FF, ASM("jp nz, $7288"), "", fill_nop=True)
10 | # Allow photographer with bowwow saved
11 | rom.patch(0x36, 0x0398, ASM("or [hl]"), "", fill_nop=True)
12 | rom.patch(0x36, 0x3183, ASM("ret nz"), "", fill_nop=True)
13 | rom.patch(0x36, 0x31CB, ASM("jp nz, $7288"), "", fill_nop=True)
14 | rom.patch(0x36, 0x03DC, ASM("and $7F"), ASM("and $00"))
15 | # Allow bowwow photo with follower
16 | rom.patch(0x36, 0x31DA, ASM("jp nz, $7288"), "", fill_nop=True)
17 | # Allow bridge photo with follower
18 | rom.patch(0x36, 0x004D, ASM("call nz, UnloadEntity"), "", fill_nop=True)
19 | rom.patch(0x36, 0x006D, ASM("ret nz"), "", fill_nop=True) # Checks if any entity is alive
20 | # Allow Marin photos after she sang for the walrus
21 | rom.patch(0x36, 0x3101, ASM("ld a, [wIsMarinFollowingLink]"), ASM("call $7F10"))
22 | rom.patch(0x36, 0x312D, ASM("ld a, [wIsMarinFollowingLink]"), ASM("call $7F10"))
23 | rom.patch(0x36, 0x01F4, ASM("ld a, [wIsMarinFollowingLink]"), ASM("call $7F10"))
24 | rom.patch(0x36, 0x3F10, "00" * 16, ASM("""
25 | ld a, [wIsMarinFollowingLink]
26 | and a
27 | ret nz
28 | ld a, [$D8FD]
29 | and $20 ; check if walrus is gone
30 | ret
31 | """), fill_nop=True)
32 | # Well photo is taken as soon as Link lands if Marin isn't there
33 | rom.patch(0x36, 0x0236, ASM("ldh a, [hLinkAnimationState] \n cp $6A"), ASM("call $7F20"), fill_nop=True)
34 | rom.patch(0x36, 0x3F20, "00" * 32, ASM("""
35 | ld a, [wIsMarinFollowingLink]
36 | and a
37 | jr z, noMarinFollower
38 | ldh a, [hLinkAnimationState]
39 | cp $6A
40 | ret
41 | noMarinFollower:
42 | ldh a, [hLinkPositionZ]
43 | and a ; check if Link landed on the ground
44 | ret
45 | """), fill_nop=True)
46 |
--------------------------------------------------------------------------------
/patches/reduceRNG.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 |
3 |
4 | def slowdownThreeOfAKind(rom):
5 | rom.patch(0x06, 0x096B, ASM("ldh a, [hFrameCounter]\nand $0F"), ASM("ldh a, [hFrameCounter]\nand $3F"))
6 |
7 |
8 | def fixHorseHeads(rom):
9 | rom.patch(0x07, 0x3653, "00010400", "00010000")
10 |
--------------------------------------------------------------------------------
/patches/rooster.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 | from utils import formatText
3 |
4 |
5 | def patchRooster(rom):
6 | # Do not give the rooster
7 | rom.patch(0x19, 0x0E9D, ASM("ld [$DB7B], a"), "", fill_nop=True)
8 |
9 | # Do not load the rooster sprites
10 | rom.patch(0x00, 0x2EC7, ASM("jr nz, $08"), "", fill_nop=True)
11 |
12 | # Draw the found item
13 | rom.patch(0x19, 0x0E4A, ASM("ld hl, $4E37\nld c, $03\ncall RenderActiveEntitySpritesRect"), ASM("ld a, $0C\nrst $08"), fill_nop=True)
14 | rom.patch(0x19, 0x0E7B, ASM("ld hl, $4E37\nld c, $03\ncall RenderActiveEntitySpritesRect"), ASM("ld a, $0C\nrst $08"), fill_nop=True)
15 | # Give the item and message
16 | rom.patch(0x19, 0x0E69, ASM("ld a, $6D\ncall $2373"), ASM("ld a, $0E\nrst $08"), fill_nop=True)
17 |
18 | # Reuse unused evil eagle text slot for rooster message
19 | rom.texts[0x0B8] = formatText("Got the {ROOSTER}!")
20 |
21 | # Allow rooster pickup with special rooster item
22 | rom.patch(0x19, 0x1ABC, ASM("cp $03"), ASM("cp $0F"))
23 | rom.patch(0x19, 0x1AAE, ASM("cp $03"), ASM("cp $0F"))
24 |
25 | # Ignore the has-rooster flag in the rooster entity (do not despawn)
26 | rom.patch(0x19, 0x19E0, ASM("jp z, $7E61"), "", fill_nop=True)
27 |
28 | # If we are spawning the rooster, and the rooster is already existing, do not do anything, instead of despawning the rooster.
29 | rom.patch(0x01, 0x1FEF, ASM("ld [hl], d"), ASM("ret"))
30 | # Allow rooster to unload when changing rooms
31 | rom.patch(0x19, 0x19E9, ASM("ld [hl], a"), "", fill_nop=True)
32 |
33 | # Do not take away the rooster after D7
34 | rom.patch(0x03, 0x1E25, ASM("ld [$DB7B], a"), "", fill_nop=True)
35 |
36 | # Patch the color dungeon entrance not to check for rooster
37 | rom.patch(0x02, 0x3409, ASM("ld hl, $DB7B\nor [hl]"), "", fill_nop=True)
38 |
39 | # Spawn marin at taltal even with rooster
40 | rom.patch(0x18, 0x1EE3, ASM("jp nz, ClearEntityStatus_18"), "", fill_nop=True)
41 |
--------------------------------------------------------------------------------
/patches/save.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 | from backgroundEditor import BackgroundEditor
3 |
4 |
5 | def singleSaveSlot(rom):
6 | # Do not validate/erase slots 2 and 3 at rom start
7 | rom.patch(0x01, 0x06B3, ASM("call $4794"), "", fill_nop=True)
8 | rom.patch(0x01, 0x06B9, ASM("call $4794"), "", fill_nop=True)
9 |
10 | # Patch the code that checks if files have proper filenames to skip file 2/3
11 | rom.patch(0x01, 0x1DD9, ASM("ld b, $02"), ASM("ret"), fill_nop=True)
12 |
13 | # Remove the part that writes death counters for save2/3 on the file select screen
14 | rom.patch(0x01, 0x0821, 0x084B, "", fill_nop=True)
15 | # Remove the call that updates the hearts for save2
16 | rom.patch(0x01, 0x0800, ASM("call $4DBE"), "", fill_nop=True)
17 | # Remove the call that updates the hearts for save3
18 | rom.patch(0x01, 0x0806, ASM("call $4DD6"), "", fill_nop=True)
19 |
20 | # Remove the call that updates the names for save2 and save3
21 | rom.patch(0x01, 0x0D70, ASM("call $4D94\ncall $4D9D"), "", fill_nop=True)
22 |
23 | # Remove the 2/3 slots from the screen and remove the copy text
24 | be = BackgroundEditor(rom, 0x03)
25 | del be.tiles[0x9924]
26 | del be.tiles[0x9984]
27 | be.store(rom)
28 | be = BackgroundEditor(rom, 0x04)
29 | del be.tiles[0x9924]
30 | del be.tiles[0x9984]
31 | for n in range(0x99ED, 0x99F1):
32 | del be.tiles[n]
33 | be.store(rom)
34 |
35 | # Do not do left/right for erase/copy selection.
36 | rom.patch(0x01, 0x092B, ASM("jr z, $0B"), ASM("jr $0B"))
37 | # Only switch between players
38 | rom.patch(0x01, 0x08FA, 0x091D, ASM("""
39 | ld a, [$DBA7]
40 | and a
41 | ld a, [$DBA6]
42 | jr z, skip
43 | xor $03
44 | skip:
45 | """), fill_nop=True)
46 |
47 | # On the erase screen, only switch between save 1 and return
48 | rom.patch(0x01, 0x0E12, ASM("inc a\nand $03"), ASM("xor $03"), fill_nop=True)
49 | rom.patch(0x01, 0x0E21, ASM("dec a\ncp $ff\njr nz, $02\nld a,$03"), ASM("xor $03"), fill_nop=True)
50 |
51 | be = BackgroundEditor(rom, 0x06)
52 | del be.tiles[0x9924]
53 | del be.tiles[0x9984]
54 | be.store(rom)
55 |
--------------------------------------------------------------------------------
/patches/tarin.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 | from utils import formatText
3 |
4 |
5 | def updateTarin(rom):
6 | # Do not give the shield.
7 | rom.patch(0x05, 0x0CD0, ASM("""
8 | ld d, $04
9 | call $5321
10 | ld a, $01
11 | ld [wShieldLevel], a
12 | """), "", fill_nop=True)
13 |
14 | # Instead of showing the usual "your shield back" message, give the proper message and give the item.
15 | rom.patch(0x05, 0x0CDE, ASM("""
16 | ld a, $91
17 | call $2385
18 | """), ASM("""
19 | ld a, $0B ; GiveItemAndMessageForRoom
20 | rst 8
21 | """), fill_nop=True)
22 |
23 | rom.patch(0x05, 0x0CF0, ASM("""
24 | xor a
25 | ldh [hActiveEntitySpriteVariant], a
26 | ld de, $4CC6
27 | call $3C77
28 | """), ASM("""
29 | ld a, $0C ; RenderItemForRoom
30 | rst 8
31 | xor a
32 | ldh [hActiveEntitySpriteVariant], a
33 | """), fill_nop=True)
34 |
35 | # Set the room status to finished. (replaces a GBC check)
36 | rom.patch(0x05, 0x0CAB, 0x0CB0, ASM("""
37 | ld a, $20
38 | call $36C4
39 | """), fill_nop=True)
40 |
41 | # Instead of checking for the shield level to put you in the bed, check the room flag.
42 | rom.patch(0x05, 0x1202, ASM("ld a, [wShieldLevel]\nand a"), ASM("ldh a, [hRoomStatus]\nand $20"))
43 | rom.patch(0x05, 0x0C6D, ASM("ld a, [wShieldLevel]\nand a"), ASM("ldh a, [hRoomStatus]\nand $20"))
44 |
45 | # If the starting item is picked up, load the right palette when entering the room
46 | rom.patch(0x21, 0x0176, ASM("ld a, [wTarinFlag]\ncp $01"), ASM("ld a, [$DAA3]\ncp $A1"), fill_nop=True)
47 | rom.patch(0x05, 0x0C94, "FF473152C5280000", "FD2ED911CE100000")
48 | rom.patch(0x05, 0x0CB0, ASM("ld hl, $DC88"), ASM("ld hl, $DC80"))
49 |
50 | # Patch the text that Tarin uses to give your shield back.
51 | rom.texts[0x54] = formatText("#####, it is dangerous to go alone!\nTake this!")
52 |
--------------------------------------------------------------------------------
/patches/trendy.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 |
3 | def fixTrendy(rom):
4 | rom.patch(0x04, 0x2F29, "04", "02") # Patch the trendy game shield to be a rupee
5 |
6 | # Check the room flag to figure out how many items are available in total
7 | # This ensures we can keep playing until no items remain, and that we can no longer play when a restock is needed
8 | rom.patch(0x04, 0x2FAA, ASM("ld a, [$DB40]"), ASM("call $7FFA"))
9 | rom.patch(0x04, 0x3FFA, "00" * 6, ASM("""
10 | ld a, [$DAA0]
11 | and $20
12 | ret
13 | """))
14 |
--------------------------------------------------------------------------------
/patches/tunicFairy.py:
--------------------------------------------------------------------------------
1 | from utils import formatText
2 | from assembler import ASM
3 |
4 |
5 | def upgradeTunicFairy(rom):
6 | rom.texts[0x268] = formatText("Welcome, #####. I admire you for coming this far.")
7 | rom.texts[0x0CC] = formatText("Got the {RED_TUNIC}! You can change Tunics at the phone booths.")
8 | rom.texts[0x0CD] = formatText("Got the {BLUE_TUNIC}! You can change Tunics at the phone booths.")
9 |
10 | rom.patch(0x36, 0x111C, 0x1133, ASM("""
11 | call IncrementEntityState
12 | ld a, [$DDE1]
13 | and $10
14 | jr z, giveItems
15 | ld [hl], $09
16 | ret
17 |
18 | giveItems:
19 | ld a, [$DDE1]
20 | or $10
21 | ld [$DDE1], a
22 | """), fill_nop=True)
23 | rom.patch(0x36, 0x1139, 0x1144, ASM("""
24 | ld a, [$51BF]
25 | ldh [hActiveEntitySpriteVariant], a
26 | ld a, $02
27 | rst 8
28 | ld a, $03
29 | rst 8
30 | """), fill_nop=True)
31 |
32 | rom.patch(0x36, 0x1162, 0x1192, ASM("""
33 | ld a, [$51C0]
34 | ldh [hActiveEntitySpriteVariant], a
35 | ld a, $02
36 | rst 8
37 | ld a, $03
38 | rst 8
39 | call IncrementEntityState
40 | ret
41 | """), fill_nop=True)
42 |
43 | rom.patch(0x36, 0x119D, 0x11A2, "", fill_nop=True)
44 | rom.patch(0x36, 0x11B5, 0x11BE, ASM("""
45 | ; Skip to the end ignoring all the tunic giving animation.
46 | call IncrementEntityState
47 | ld [hl], $09
48 | """), fill_nop=True)
49 |
50 | rom.banks[0x36][0x11BF] = 0x87
51 | rom.banks[0x36][0x11C0] = 0x88
52 |
--------------------------------------------------------------------------------
/patches/witch.py:
--------------------------------------------------------------------------------
1 | from assembler import ASM
2 | from roomEditor import RoomEditor
3 |
4 |
5 | def updateWitch(rom):
6 | # Add a heartpiece at the toadstool, the item patches turn this into a 1 time toadstool item
7 | # Or depending on flags, in something else.
8 | re = RoomEditor(rom, 0x050)
9 | re.addEntity(2, 3, 0x35)
10 | re.store(rom)
11 |
12 | # Change what happens when you trade the toadstool with the witch
13 | # Note that the 2nd byte of this code gets patched with the item to give from the witch.
14 | rom.patch(0x05, 0x08D4, 0x08F0, ASM("""
15 | ld e, $09 ; load the item to give the first time
16 |
17 | ; Get the room flags and mark the witch as done.
18 | ld hl, $DAA2
19 | ld a, [hl]
20 | and $30
21 | set 4, [hl]
22 | set 5, [hl]
23 | jr z, skip
24 | ld e, $09 ; give powder every time after the first time.
25 | skip:
26 | ld a, e
27 | ldh [hActiveEntitySpriteVariant], a
28 | ld a, $02
29 | rst 8
30 | ld a, $03
31 | rst 8
32 | """), fill_nop=True)
33 |
34 | # Patch the toadstool to unload when you haven't delivered something to the witch yet.
35 | rom.patch(0x03, 0x1D4B, ASM("""
36 | ld hl, wHasToadstool
37 | ld a, [wMagicPowderCount]
38 | or [hl]
39 | jp nz, UnloadEntity
40 | """), ASM("""
41 | ld a, [$DAA2]
42 | and $20
43 | jp z, UnloadEntity
44 | """), fill_nop=True)
45 |
46 | # Patch what happens when we pickup the toadstool, call our chest code to give a toadstool.
47 | rom.patch(0x03, 0x1D6F, 0x1D7D, ASM("""
48 | ld a, $50
49 | ldh [hActiveEntitySpriteVariant], a
50 | ld a, $02 ; give item
51 | rst 8
52 |
53 | ld hl, $DAA2
54 | res 5, [hl]
55 | """), fill_nop=True)
56 |
57 | def witchIsPatched(rom):
58 | return sum(rom.banks[0x05][0x08D4:0x08F0]) != 0x0DC2
59 |
--------------------------------------------------------------------------------
/plan.py:
--------------------------------------------------------------------------------
1 |
2 |
3 | # Helper class to read and store planomizer data
4 | class Plan:
5 | def __init__(self, filename):
6 | self.forced_items = {}
7 | self.item_pool = {}
8 | item_group = {}
9 |
10 | for line in open(filename, "rt"):
11 | line = line.strip()
12 | if ";" in line:
13 | line = line[:line.find(";")]
14 | if "#" in line:
15 | line = line[:line.find("#")]
16 | if ":" not in line:
17 | continue
18 | entry_type, params = map(str.strip, line.upper().split(":", 1))
19 |
20 | if entry_type == "LOCATION" and ":" in params:
21 | location, item = map(str.strip, params.split(":", 1))
22 | if item == "":
23 | continue
24 | if item.startswith("[") and item.endswith("]"):
25 | item = item_group[item[1:-1]]
26 | if "," in item:
27 | item = list(map(str.strip, item.split(",")))
28 | self.forced_items[location] = item
29 | elif entry_type == "POOL" and ":" in params:
30 | item, count = map(str.strip, params.split(":", 1))
31 | self.item_pool[item] = self.item_pool.get(item, 0) + int(count)
32 | elif entry_type == "GROUP" and ":" in params:
33 | name, item = map(str.strip, params.split(":", 1))
34 | if item == "":
35 | continue
36 | if "," in item:
37 | item = list(map(str.strip, item.split(",")))
38 | item_group[name] = item
39 |
--------------------------------------------------------------------------------
/www/style.css:
--------------------------------------------------------------------------------
1 | .container {
2 | max-width: 1100px;
3 | background: #FFF;
4 | border: solid 1px #666;
5 | border-radius: 10px;
6 | margin-top: 20px;
7 | padding-bottom: 20px;
8 | margin-bottom: 200px;
9 | }
10 | .inputcontainer {
11 | display: flex;
12 | box-sizing: border-box;
13 | align-items: center;
14 | border: solid 1px #CCC;
15 | border-radius: 5px;
16 | width: 100%;
17 | height: 100%;
18 | }
19 | .inputcontainer * {
20 | margin: 0px;
21 | box-sizing: border-box;
22 | }
23 | .inputcontainer > :last-child {
24 | flex: 1 1 auto;
25 | background: #DDD;
26 | border: solid 1px #AAA;
27 | }
28 | .inputcontainerparent {
29 | padding: 1px 5px;
30 | }
31 | .tooltip::after {
32 | white-space: pre-wrap;
33 | width: 90%;
34 | pointer-events: none;
35 | }
36 | label {
37 | padding-right: 20px;
38 | }
39 | h1 {
40 | margin-bottom: 0px;
41 | }
42 | form {
43 | background: initial;
44 | border: initial;
45 | color: initial;
46 | margin: initial;
47 | padding: initial;
48 | }
49 | .selectromwarning {
50 | box-shadow: inset 0 0 0 2px red;
51 | }
52 | header .logo {
53 | left: 0;
54 | right: 0;
55 | text-align: center;
56 | display: block;
57 | }
58 | select option {
59 | font-weight: normal;
60 | }
61 |
--------------------------------------------------------------------------------