├── .gitattributes ├── .github └── workflows │ └── python.yml ├── .gitignore ├── ASM ├── .gitattributes ├── .gitignore ├── Makefile ├── README.md ├── build.py ├── build │ ├── .gitkeep │ ├── asm_symbols.txt │ ├── bundle.o │ └── c_symbols.txt ├── c │ ├── actor.c │ ├── actor.h │ ├── agony.c │ ├── agony.h │ ├── audio.h │ ├── bg_gate_shutter.h │ ├── blue_warp.c │ ├── blue_warp.h │ ├── bombchu_bowling.c │ ├── bombchu_bowling.h │ ├── chests.c │ ├── chests.h │ ├── color.h │ ├── debug.c │ ├── debug.h │ ├── demo_effect.c │ ├── demo_effect.h │ ├── door_of_time.c │ ├── door_of_time.h │ ├── dpad.c │ ├── dpad.h │ ├── dungeon_info.c │ ├── dungeon_info.h │ ├── en_item00.c │ ├── en_item00.h │ ├── en_wonderitem.c │ ├── en_wonderitem.h │ ├── everdrive.c │ ├── everdrive.h │ ├── extern_ctxt.c │ ├── extern_ctxt.h │ ├── file_icons.c │ ├── file_icons.h │ ├── file_message.c │ ├── file_message.h │ ├── file_select.c │ ├── file_select.h │ ├── ganon.c │ ├── ganon.h │ ├── get_items.c │ ├── get_items.h │ ├── gfx.c │ ├── gfx.h │ ├── hud_colors.c │ ├── hud_colors.h │ ├── icetrap.c │ ├── icetrap.h │ ├── inputviewer.c │ ├── inputviewer.h │ ├── item_draw_functions.c │ ├── item_draw_functions.h │ ├── item_draw_table.c │ ├── item_draw_table.h │ ├── item_effects.c │ ├── item_effects.h │ ├── item_table.c │ ├── item_table.h │ ├── item_upgrades.c │ ├── item_upgrades.h │ ├── kaleido.h │ ├── kaleido_item.c │ ├── kaleido_item.h │ ├── main.c │ ├── menu.c │ ├── message.c │ ├── message.h │ ├── misc_colors.c │ ├── misc_colors.h │ ├── model_text.c │ ├── model_text.h │ ├── models.c │ ├── models.h │ ├── music.c │ ├── music.h │ ├── obj_comb.c │ ├── obj_comb.h │ ├── obj_kibako.c │ ├── obj_kibako.h │ ├── obj_kibako2.c │ ├── obj_kibako2.h │ ├── obj_mure3.c │ ├── objects.c │ ├── objects.h │ ├── ocarina_buttons.c │ ├── ocarina_buttons.h │ ├── override.h │ ├── ovl_bg_haka_tubo.c │ ├── ovl_bg_spot18_basket.c │ ├── pots.c │ ├── pots.h │ ├── rainbow.c │ ├── rainbow.h │ ├── refill.c │ ├── refill.h │ ├── rng.c │ ├── rng.h │ ├── sage_gifts.c │ ├── sage_gifts.h │ ├── save.c │ ├── save.h │ ├── scarecrow.c │ ├── scene.c │ ├── scene.h │ ├── shop_actors.h │ ├── sys_matrix.h │ ├── text.c │ ├── text.h │ ├── textures.c │ ├── textures.h │ ├── trade_quests.c │ ├── trade_quests.h │ ├── triforce.c │ ├── triforce.h │ ├── twinrova.c │ ├── twinrova.h │ ├── uninvertYaxis.c │ ├── uninvertYaxis.h │ ├── util.c │ ├── util.h │ ├── weather.c │ ├── weather.h │ ├── z64.h │ ├── z64_math.h │ └── z64collision_check.h ├── linker_script.ld ├── ootSymbols.ld ├── resources │ ├── dpad.bin │ ├── font.bin │ ├── small_crate │ │ ├── small_crate_bosskey.bin │ │ ├── small_crate_gold.bin │ │ ├── small_crate_silver.bin │ │ └── small_crate_skull.bin │ └── triforce_sprite.bin ├── rom_diff.py ├── roms │ └── .gitkeep ├── src │ ├── actor.asm │ ├── addresses.asm │ ├── agony.asm │ ├── armos.asm │ ├── audio.asm │ ├── bean_salesman.asm │ ├── bg_gate_shutter.asm │ ├── bgs_fix.asm │ ├── big_poe.asm │ ├── bigocto.asm │ ├── blue_fire_arrows.asm │ ├── bonk.asm │ ├── boomerang.asm │ ├── boot.asm │ ├── build.asm │ ├── bunny_hood.asm │ ├── camera_init.asm │ ├── carpenter_boss.asm │ ├── carpet_salesman.asm │ ├── chest_game.asm │ ├── chests.asm │ ├── chus_in_logic.asm │ ├── colors.asm │ ├── config.asm │ ├── constants.asm │ ├── coop_state.asm │ ├── cow.asm │ ├── cutscenes.asm │ ├── damage.asm │ ├── dampe.asm │ ├── debug.asm │ ├── deku_mouth_condition.asm │ ├── door_of_time_col_fix.asm │ ├── dpad.asm │ ├── drop_overrides │ │ ├── bg_haka_tubo.asm │ │ ├── bg_spot18_basket.asm │ │ ├── en_wonderitem.asm │ │ ├── obj_comb.asm │ │ └── obj_mure3.asm │ ├── empty_bomb.asm │ ├── en_dns.asm │ ├── en_item00.asm │ ├── every_frame.asm │ ├── extended_objects.asm │ ├── fairy_ocarina.asm │ ├── file_select.asm │ ├── fishing.asm │ ├── gerudo_guard.asm │ ├── gohma.asm │ ├── gossip_hints.asm │ ├── grotto.asm │ ├── hacks.asm │ ├── hacks │ │ ├── en_item00.asm │ │ ├── ovl_bg_gate_shutter.asm │ │ ├── ovl_bg_haka_tubo.asm │ │ ├── ovl_bg_spot18_basket.asm │ │ ├── ovl_demo_kankyo.asm │ │ ├── ovl_en_changer.asm │ │ ├── ovl_en_dns.asm │ │ ├── ovl_en_ko.asm │ │ ├── ovl_en_kz.asm │ │ ├── ovl_en_po_field.asm │ │ ├── ovl_en_ssh.asm │ │ ├── ovl_obj_mure3.asm │ │ ├── z_file_choose.asm │ │ ├── z_parameter.asm │ │ └── z_title.asm │ ├── horseback_archery.asm │ ├── init.asm │ ├── initial_save.asm │ ├── item_overrides.asm │ ├── item_restriction_flags.asm │ ├── items_as_adult.asm │ ├── jabu_elevator.asm │ ├── key_counter.asm │ ├── king_zora.asm │ ├── lacs_condition.asm │ ├── lake_hylia.asm │ ├── link_anim.asm │ ├── macros.asm │ ├── malon.asm │ ├── malon_hooks.asm │ ├── mask_deequip.asm │ ├── medigoron.asm │ ├── menu.asm │ ├── messages.asm │ ├── mido.asm │ ├── misc_colors.asm │ ├── ocarina_buttons.asm │ ├── player_save_mask.asm │ ├── potion_shop.asm │ ├── rainbow_bridge.asm │ ├── rand_seed.asm │ ├── red_ice.asm │ ├── save.asm │ ├── scarecrow.asm │ ├── shooting_gallery.asm │ ├── shop.asm │ ├── song_fix.asm │ ├── time_travel.asm │ ├── timers.asm │ ├── trade_quests.asm │ ├── twinrova_wait.asm │ ├── volvagia.asm │ ├── weather.asm │ └── zelda.asm └── tools │ └── .gitkeep ├── Audiobank.py ├── CHANGELOG.md ├── CI.py ├── CONTRIBUTING.md ├── Colors.py ├── Cosmetics.py ├── Cutscenes.py ├── Dungeon.py ├── Entrance.py ├── EntranceShuffle.py ├── Fill.py ├── GUI ├── .editorconfig ├── .eslintignore.json ├── .eslintrc.json ├── .gitignore ├── angular.json ├── browserslist ├── build │ ├── icon.icns │ └── icon.png ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json ├── electron │ ├── src │ │ ├── assets │ │ │ └── icon │ │ │ │ ├── mac │ │ │ │ └── ootr_electron_icon3.png.icns │ │ │ │ ├── png │ │ │ │ ├── 128x128.png │ │ │ │ ├── 16x16.png │ │ │ │ ├── 24x24.png │ │ │ │ ├── 256x256.png │ │ │ │ ├── 32x32.png │ │ │ │ ├── 48x48.png │ │ │ │ ├── 512x512.png │ │ │ │ ├── 64x64.png │ │ │ │ └── 96x96.png │ │ │ │ └── win │ │ │ │ └── ootr_electron_icon3.png.ico │ │ ├── main.ts │ │ ├── modules │ │ │ └── generator.js │ │ └── preload.ts │ └── tsconfig.json ├── package-lock.json ├── package.json ├── package_release.json ├── run.js ├── src │ ├── app │ │ ├── @theme │ │ │ ├── components │ │ │ │ ├── footer │ │ │ │ │ ├── footer.component.scss │ │ │ │ │ └── footer.component.ts │ │ │ │ ├── header │ │ │ │ │ ├── header.component.html │ │ │ │ │ ├── header.component.scss │ │ │ │ │ ├── header.component.ts │ │ │ │ │ └── img │ │ │ │ │ │ ├── X.png │ │ │ │ │ │ ├── headerIcon.png │ │ │ │ │ │ ├── max.png │ │ │ │ │ │ └── min.png │ │ │ │ └── index.ts │ │ │ ├── directives │ │ │ │ └── .gitkeep │ │ │ ├── layouts │ │ │ │ ├── GUI │ │ │ │ │ ├── gui.layout.scss │ │ │ │ │ └── gui.layout.ts │ │ │ │ └── index.ts │ │ │ ├── pipes │ │ │ │ └── .gitkeep │ │ │ ├── styles │ │ │ │ ├── material.scss │ │ │ │ ├── pace.theme.scss │ │ │ │ ├── styles.scss │ │ │ │ ├── theme.ootr-dark.scss │ │ │ │ ├── theme.ootr-default.scss │ │ │ │ └── themes.scss │ │ │ └── theme.module.ts │ │ ├── app-routing.module.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── components │ │ │ └── guiListbox │ │ │ │ ├── guiListbox.html │ │ │ │ ├── guiListbox.scss │ │ │ │ └── guiListbox.ts │ │ ├── directives │ │ │ └── responsiveCols.directive.ts │ │ ├── pages │ │ │ ├── generator │ │ │ │ ├── confirmationWindow │ │ │ │ │ ├── confirmationWindow.component.ts │ │ │ │ │ └── confirmationWindow.scss │ │ │ │ ├── dialogWindow │ │ │ │ │ ├── dialogWindow.component.ts │ │ │ │ │ └── dialogWindow.scss │ │ │ │ ├── errorDetailsWindow │ │ │ │ │ ├── errorDetailsWindow.component.ts │ │ │ │ │ └── errorDetailsWindow.scss │ │ │ │ ├── generator.component.html │ │ │ │ ├── generator.component.scss │ │ │ │ ├── generator.component.ts │ │ │ │ ├── generator.module.ts │ │ │ │ ├── guiTooltip │ │ │ │ │ └── guiTooltip.component.ts │ │ │ │ ├── progressWindow │ │ │ │ │ ├── progressWindow.component.ts │ │ │ │ │ └── progressWindow.scss │ │ │ │ └── textInputWindow │ │ │ │ │ ├── textInputWindow.component.ts │ │ │ │ │ └── textInputWindow.scss │ │ │ ├── pages-menu.ts │ │ │ ├── pages-routing.module.ts │ │ │ ├── pages.component.ts │ │ │ └── pages.module.ts │ │ └── providers │ │ │ ├── GUIGlobal.ts │ │ │ ├── GuiEvent.ts │ │ │ └── theme-switcher.service.ts │ ├── assets │ │ ├── .gitkeep │ │ └── img │ │ │ ├── X.png │ │ │ ├── headerIcon.png │ │ │ ├── max.png │ │ │ ├── min.png │ │ │ ├── moon.svg │ │ │ ├── notMax.png │ │ │ └── sun.svg │ ├── environments │ │ ├── environment.hmr.ts │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── favicon.png │ ├── hmr.ts │ ├── index.html │ ├── karma.conf.js │ ├── main.ts │ ├── polyfills.ts │ ├── test.ts │ ├── tsconfig.app.json │ └── tsconfig.spec.json ├── tsconfig.json └── webTest │ ├── .gitignore │ ├── index_web.html │ ├── package.json │ ├── public │ ├── css │ │ ├── bootstrap-theme.css │ │ ├── bootstrap-theme.min.css │ │ ├── bootstrap.css │ │ ├── bootstrap.min.css │ │ ├── mediaCSS5.css │ │ ├── sidebarStats.css │ │ └── webtest.css │ ├── img │ │ └── countdown_logo.png │ └── js │ │ ├── settingsGUI.js │ │ └── vendor │ │ ├── bootstrap.bundle.js │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.js │ │ ├── bootstrap.min.js │ │ └── jquery-1.11.2.min.js │ ├── server.js │ └── settingsParser │ ├── index.js │ └── package.json ├── Goals.py ├── Gui.py ├── HintList.py ├── Hints.py ├── IconManip.py ├── Item.py ├── ItemList.py ├── ItemPool.py ├── JSONDump.py ├── LICENSE ├── Location.py ├── LocationList.py ├── MBSDIFFPatch.py ├── MQ.py ├── Main.py ├── Messages.py ├── Models.py ├── Music.py ├── MusicHelpers.py ├── N64Patch.py ├── Notes ├── Chest Textures │ ├── .gitignore │ ├── Custom Chest Textures.txt │ ├── Front Base Texture Format.png │ ├── Side Base Texture Format.png │ ├── diff_bytes.py │ ├── extract_wooden_chest_textures.py │ ├── magic.bat │ └── rgba5551topng │ │ ├── LICENSE │ │ ├── README.md │ │ └── rgba5551topng ├── GUI │ ├── architecture.md │ ├── how_to_dev.md │ └── web-gui-testing.md ├── OoT10table.txt ├── OoT_hex_edit.txt ├── SRAM.txt ├── WAD_crashscreen_patch.asm ├── ZPFZ patch format.txt ├── asm-hack-guide.md ├── asout2gzi.py ├── auto-tracker-ctx.md ├── code-style.md ├── coop-ctx.md ├── extra-save-data.md ├── grotto_mixed_er_notes.txt ├── making_the_wad_gzi_patch.txt ├── message_table_notes.txt ├── mq_dump ├── new scene flags.txt ├── scene_flag_system.txt ├── shop item notes.txt ├── trade_quest_rework.txt └── vscode.md ├── OcarinaSongs.py ├── OoTRandomizer.py ├── Patches.py ├── Plandomizer.py ├── ProcessActors.py ├── README.md ├── Region.py ├── Rom.py ├── RuleParser.py ├── Rules.py ├── RulesCommon.py ├── SaveContext.py ├── SceneFlags.py ├── Search.py ├── Sequence.py ├── SettingTypes.py ├── Settings.py ├── SettingsList.py ├── SettingsListTricks.py ├── SettingsToJson.py ├── Sounds.py ├── Spoiler.py ├── StartingItems.py ├── State.py ├── TextBox.py ├── Unittest.py ├── Utils.py ├── World.py ├── assets └── pre-commit.py ├── bin ├── Compress │ ├── Compress │ ├── Compress.exe │ ├── Compress.out │ ├── Compress32.exe │ ├── Compress_ARM32 │ ├── Compress_ARM64 │ ├── Compress_ARM64.exe │ ├── Compress_ARM64.out │ ├── LICENSE │ └── src │ │ ├── bSwap.h │ │ ├── compressor.c │ │ ├── crc.c │ │ └── yaz0.c ├── Decompress │ ├── Decompress │ ├── Decompress.exe │ ├── Decompress.out │ ├── Decompress32.exe │ ├── Decompress_ARM32 │ ├── Decompress_ARM64 │ ├── Decompress_ARM64.exe │ ├── Decompress_ARM64.out │ ├── LICENSE │ └── src │ │ ├── bSwap.h │ │ ├── crc.c │ │ ├── decompressor.c │ │ └── makefile ├── gzinject │ ├── LICENSE │ ├── README.md │ ├── gzinject │ ├── gzinject.exe │ ├── gzinject.out │ ├── gzinject32.exe │ ├── gzinject_ARM32 │ ├── gzinject_ARM64 │ ├── gzinject_ARM64.exe │ ├── gzinject_ARM64.out │ ├── ootr_jpn.gzi │ └── ootr_usa.gzi └── minibsdiff │ ├── LICENSE.txt │ ├── README.md │ ├── minibsdiff │ ├── minibsdiff.exe │ ├── minibsdiff.out │ ├── minibsdiff32.exe │ ├── minibsdiff_ARM32 │ ├── minibsdiff_ARM64 │ ├── minibsdiff_ARM64.exe │ └── minibsdiff_ARM64.out ├── crc.py ├── data ├── Bingo │ ├── bingo_goals.json │ ├── bingosync_bingo_hints.json │ └── generic_bingo_hints.json ├── Glitched World │ ├── Bosses.json │ ├── Bottom of the Well MQ.json │ ├── Bottom of the Well.json │ ├── Deku Tree MQ.json │ ├── Deku Tree.json │ ├── Dodongos Cavern MQ.json │ ├── Dodongos Cavern.json │ ├── Fire Temple MQ.json │ ├── Fire Temple.json │ ├── Forest Temple MQ.json │ ├── Forest Temple.json │ ├── Ganons Castle MQ.json │ ├── Ganons Castle.json │ ├── Gerudo Training Ground MQ.json │ ├── Gerudo Training Ground.json │ ├── Ice Cavern MQ.json │ ├── Ice Cavern.json │ ├── Jabu Jabus Belly MQ.json │ ├── Jabu Jabus Belly.json │ ├── Overworld.json │ ├── Shadow Temple MQ.json │ ├── Shadow Temple.json │ ├── Spirit Temple MQ.json │ ├── Spirit Temple.json │ ├── Water Temple MQ.json │ └── Water Temple.json ├── Hints │ ├── balanced.json │ ├── bingo.json │ ├── chaos.json │ ├── chaos_dev_fenhl.json │ ├── chaos_dev_fenhl_no_goal.json │ ├── chaos_no_goal.json │ ├── coop.json │ ├── ddr.json │ ├── ice_percent.json │ ├── important_checks.json │ ├── league.json │ ├── mixed_pools.json │ ├── mw_path.json │ ├── mw_woth.json │ ├── saws.json │ ├── scrubs.json │ ├── sgl.json │ ├── strong.json │ ├── tournament.json │ ├── tournament_s3.json │ ├── triforce_blitz_s2.json │ ├── useless.json │ ├── very_strong.json │ ├── very_strong_magic.json │ └── weekly.json ├── LogicHelpers.json ├── Models │ ├── Adult │ │ └── Constants │ │ │ ├── postconstants.zobj │ │ │ └── preconstants.zobj │ └── Child │ │ └── Constants │ │ ├── postconstants.zobj │ │ └── preconstants.zobj ├── Music │ ├── .gitignore │ ├── README.md │ └── update_ootrs_v2.py ├── Presets │ └── .gitignore ├── Voices │ ├── Adult │ │ └── Feminine │ │ │ ├── 00-0000.bin │ │ │ ├── 00-0001.bin │ │ │ ├── 00-0002.bin │ │ │ ├── 00-0003.bin │ │ │ ├── 00-0004.bin │ │ │ ├── 00-0005.bin │ │ │ ├── 00-0006.bin │ │ │ ├── 00-0007.bin │ │ │ ├── 00-0008.bin │ │ │ ├── 00-0009.bin │ │ │ ├── 00-000A.bin │ │ │ ├── 00-000B.bin │ │ │ ├── 00-000C.bin │ │ │ ├── 00-000D.bin │ │ │ ├── 00-000E.bin │ │ │ ├── 00-000F.bin │ │ │ ├── 00-0010.bin │ │ │ ├── 00-0011.bin │ │ │ ├── 00-0012.bin │ │ │ ├── 00-0013.bin │ │ │ ├── 00-0015.bin │ │ │ ├── 00-0016.bin │ │ │ ├── 00-0017.bin │ │ │ ├── 00-0018.bin │ │ │ ├── 00-0019.bin │ │ │ ├── 00-001A.bin │ │ │ ├── 00-001B.bin │ │ │ ├── 00-0037.bin │ │ │ ├── 00-0038.bin │ │ │ ├── 00-003C.bin │ │ │ ├── 00-003D.bin │ │ │ ├── 00-004D.bin │ │ │ ├── 00-004E.bin │ │ │ ├── 00-004F.bin │ │ │ ├── 00-0050.bin │ │ │ ├── 00-0051.bin │ │ │ ├── 00-0052.bin │ │ │ ├── 00-0053.bin │ │ │ ├── 00-0054.bin │ │ │ ├── 00-0055.bin │ │ │ ├── 00-0056.bin │ │ │ ├── 00-0057.bin │ │ │ ├── 00-0058.bin │ │ │ └── 00-0086.bin │ ├── Child │ │ └── Feminine │ │ │ ├── 00-0014.bin │ │ │ ├── 00-001C.bin │ │ │ ├── 00-001D.bin │ │ │ ├── 00-001E.bin │ │ │ ├── 00-001F.bin │ │ │ ├── 00-0020.bin │ │ │ ├── 00-0021.bin │ │ │ ├── 00-0022.bin │ │ │ ├── 00-0023.bin │ │ │ ├── 00-0024.bin │ │ │ ├── 00-0025.bin │ │ │ ├── 00-0026.bin │ │ │ ├── 00-0027.bin │ │ │ ├── 00-0028.bin │ │ │ ├── 00-0029.bin │ │ │ ├── 00-002A.bin │ │ │ ├── 00-002B.bin │ │ │ ├── 00-002C.bin │ │ │ ├── 00-002D.bin │ │ │ ├── 00-002E.bin │ │ │ ├── 00-002F.bin │ │ │ ├── 00-0030.bin │ │ │ ├── 00-0031.bin │ │ │ ├── 00-0032.bin │ │ │ ├── 00-0034.bin │ │ │ ├── 00-0035.bin │ │ │ ├── 00-0036.bin │ │ │ ├── 00-003E.bin │ │ │ ├── 00-003F.bin │ │ │ ├── 00-0040.bin │ │ │ ├── 00-0041.bin │ │ │ ├── 00-0042.bin │ │ │ ├── 00-0043.bin │ │ │ ├── 00-0045.bin │ │ │ ├── 00-0047.bin │ │ │ ├── 00-0048.bin │ │ │ ├── 00-0049.bin │ │ │ ├── 00-004A.bin │ │ │ ├── 00-004B.bin │ │ │ ├── 00-004C.bin │ │ │ └── 00-0087.bin │ └── SilentVoiceSFX.bin ├── World │ ├── Bosses.json │ ├── Bottom of the Well MQ.json │ ├── Bottom of the Well.json │ ├── Deku Tree MQ.json │ ├── Deku Tree.json │ ├── Dodongos Cavern MQ.json │ ├── Dodongos Cavern.json │ ├── Fire Temple MQ.json │ ├── Fire Temple.json │ ├── Forest Temple MQ.json │ ├── Forest Temple.json │ ├── Ganons Castle MQ.json │ ├── Ganons Castle.json │ ├── Gerudo Training Ground MQ.json │ ├── Gerudo Training Ground.json │ ├── Ice Cavern MQ.json │ ├── Ice Cavern.json │ ├── Jabu Jabus Belly MQ.json │ ├── Jabu Jabus Belly.json │ ├── Overworld.json │ ├── Shadow Temple MQ.json │ ├── Shadow Temple.json │ ├── Spirit Temple MQ.json │ ├── Spirit Temple.json │ ├── Water Temple MQ.json │ └── Water Temple.json ├── blue_fire_arrow_item_name_eng.ia4 ├── custom_music_exclusion.txt ├── generated │ ├── .gitignore │ ├── patch_symbols.json │ ├── rom_patch.txt │ └── symbols.json ├── icons │ ├── belt.tiff │ ├── grey.tiff │ ├── magicLargeExtras.raw │ └── magicSmallExtras.raw ├── items │ ├── A_Button.zobj │ ├── BossFire.zobj │ ├── BossForest.zobj │ ├── BossShadow.zobj │ ├── BossSpirit.zobj │ ├── BossWater.zobj │ ├── C_Button_Horizontal.zobj │ ├── C_Button_Vertical.zobj │ ├── ChuBag.zobj │ ├── KeyRing.zobj │ ├── MagicMeter.zobj │ ├── MagicMeter2.zobj │ ├── Note.zobj │ ├── SmallFire.zobj │ ├── SmallForest.zobj │ ├── SmallGTG.zobj │ ├── SmallGTG_Aks.zobj │ ├── SmallGanon.zobj │ ├── SmallShadow.zobj │ ├── SmallSpirit.zobj │ ├── SmallTCG.zobj │ ├── SmallThieves.zobj │ ├── SmallWater.zobj │ ├── SmallWell.zobj │ └── Triforce.zobj ├── keaton.bin ├── mqu.json ├── presets_default.json ├── settings_mapping.json ├── textures │ ├── chest │ │ ├── chest_base_gilded_rgba16_patch.bin │ │ ├── chest_base_heart_rgba16_patch.bin │ │ ├── chest_base_silver_rgba16_patch.bin │ │ ├── chest_base_skull_rgba16_patch.bin │ │ ├── chest_front_gilded_rgba16_patch.bin │ │ ├── chest_front_heart_rgba16_patch.bin │ │ ├── chest_front_silver_rgba16_patch.bin │ │ └── chest_front_skull_rgba16_patch.bin │ ├── crate │ │ ├── crate_bosskey_rgba16_patch.bin │ │ ├── crate_gold_rgba16_patch.bin │ │ ├── crate_heart_rgba16_patch.bin │ │ ├── crate_key_rgba16_patch.bin │ │ ├── crate_skull_rgba16_patch.bin │ │ ├── smallcrate_bosskey_rgba16_patch.bin │ │ ├── smallcrate_gold_rgba16_patch.bin │ │ ├── smallcrate_heart_rgba16_patch.bin │ │ ├── smallcrate_key_rgba16_patch.bin │ │ └── smallcrate_skull_rgba16_patch.bin │ └── pot │ │ ├── pot_bosskey_rgba16_patch.bin │ │ ├── pot_gold_rgba16_patch.bin │ │ ├── pot_key_rgba16_patch.bin │ │ ├── pot_side_heart_rgba16_patch.bin │ │ ├── pot_skull_rgba16_patch.bin │ │ └── pot_top_heart_rgba16_patch.bin └── title.bin ├── dmaTable.dat ├── ntype.py ├── tests ├── README.md ├── cfairy.dist ├── disables.sav ├── entrance-warps.sav ├── entrance.sav ├── entrance2.sav ├── entrance3.sav ├── glitched-standard.sav ├── glitched-tokens.sav ├── ludicrous.sav ├── mq.sav ├── multiworld.sav ├── nightforest.sav ├── odd-stones.sav ├── plando │ ├── boss_rush_dc_mq.json │ ├── boss_rush_dc_vanilla.json │ ├── boss_rush_deku_mq.json │ ├── boss_rush_deku_vanilla.json │ ├── boss_rush_fire_mq.json │ ├── boss_rush_fire_vanilla.json │ ├── boss_rush_forest_mq.json │ ├── boss_rush_forest_vanilla.json │ ├── boss_rush_jabu_mq.json │ ├── boss_rush_jabu_vanilla.json │ ├── boss_rush_shadow_mq.json │ ├── boss_rush_shadow_mq_vanilla_keys.json │ ├── boss_rush_shadow_vanilla.json │ ├── boss_rush_spirit_mq.json │ ├── boss_rush_spirit_vanilla.json │ ├── custom-ice-traps-count.json │ ├── custom-ice-traps-percent-triforce-hunt.json │ ├── custom-ice-traps-percent.json │ ├── disabled-song-location.json │ ├── dual-hints-custom-text.json │ ├── dual-hints-with-upgrade.json │ ├── dual-hints.json │ ├── empty-dungeons-all-dungeon-er.json │ ├── empty-dungeons-all-dungeon-item-any-dungeon.json │ ├── empty-dungeons-all-dungeon-item-anywhere.json │ ├── empty-dungeons-all-dungeon-item-remove.json │ ├── empty-dungeons-all-mq-all.json │ ├── empty-dungeons-all-mq-random.json │ ├── empty-dungeons-all-plentiful.json │ ├── empty-dungeons-all-songs-dungeon.json │ ├── empty-dungeons-half-boss-shuffle.json │ ├── empty-dungeons-half-dungeon-er.json │ ├── empty-dungeons-half-dungeon-item-any-dungeon.json │ ├── empty-dungeons-half-dungeon-item-anywhere.json │ ├── empty-dungeons-half-dungeon-item-remove.json │ ├── empty-dungeons-half-mq-all.json │ ├── empty-dungeons-half-mq-random.json │ ├── empty-dungeons-half-plentiful.json │ ├── empty-dungeons-half-songs-dungeon.json │ ├── empty.json │ ├── light-arrows-1.json │ ├── light-arrows-2.json │ ├── light-arrows-3.json │ ├── negative-pattern-test.json │ ├── no-ice-trap-pending-junk.json │ ├── non-standard-visible-ice-traps.json │ ├── one-hint-per-goal-dungeons.json │ ├── one-hint-per-goal-hearts.json │ ├── one-hint-per-goal-medallions.json │ ├── one-hint-per-goal-skulls.json │ ├── one-hint-per-goal-stones.json │ ├── one-hint-per-goal-triforce-hunt.json │ ├── plando-adult-trade-in-list.json │ ├── plando-adult-trade-item-group-in-list.json │ ├── plando-adult-trade-item-group.json │ ├── plando-ammo-max-out-of-bounds.json │ ├── plando-beehives.json │ ├── plando-blue-fire-arrows-hints.json │ ├── plando-boss-list-adult.json │ ├── plando-boss-list-child.json │ ├── plando-boss-list.json │ ├── plando-boss-shuffle-allmq.json │ ├── plando-boss-shuffle-limited-dungeon-shuffle.json │ ├── plando-boss-shuffle-nomq.json │ ├── plando-bottle-item-group-in-list.json │ ├── plando-bottle-item-group.json │ ├── plando-bottles-in-list.json │ ├── plando-change-triforce-piece-count.json │ ├── plando-ctmc-test-reverse.json │ ├── plando-ctmc-test.json │ ├── plando-egg-not-shuffled-one-pool.json │ ├── plando-egg-not-shuffled-two-pool.json │ ├── plando-egg-shuffled-one-pool.json │ ├── plando-egg-shuffled-two-pool.json │ ├── plando-er-colossus-spawn-validity.json │ ├── plando-excess-starting-items.json │ ├── plando-explicit-item-pool-2.json │ ├── plando-explicit-item-pool-3.json │ ├── plando-explicit-item-pool.json │ ├── plando-fix-broken-drops-bad.json │ ├── plando-fix-broken-drops-good.json │ ├── plando-fix-broken-drops-off.json │ ├── plando-freestanding-allmq.json │ ├── plando-freestanding-nomq.json │ ├── plando-freestanding-pots-crates-beehives-triforcehunt.json │ ├── plando-goals-exclusions-skulls-bridge.json │ ├── plando-goals-exclusions-skulls-gbk.json │ ├── plando-goals-exclusions-var-dungeons.json │ ├── plando-goals-exclusions-var-meds.json │ ├── plando-goals-exclusions-var-stones.json │ ├── plando-goals-multiworld-crisscross-entrance-locks.json │ ├── plando-goals-priority-bridge.json │ ├── plando-goals-priority-custom.json │ ├── plando-goals-priority-gbk.json │ ├── plando-goals-priority-mixed-trials.json │ ├── plando-goals-priority-mixed.json │ ├── plando-goals-priority-triforce-hunt.json │ ├── plando-goals-starting-items-fallback.json │ ├── plando-goals-starting-items-trials.json │ ├── plando-item-list-explicit.json │ ├── plando-item-list-implicit.json │ ├── plando-item-pool-matches-items-placed-after-starting-items-replaced.json │ ├── plando-keyrings-all-anydungeon-allmq.json │ ├── plando-keyrings-all-anydungeon-halfmq.json │ ├── plando-keyrings-all-anydungeon-nomq.json │ ├── plando-keyrings-all-anywhere-allmq.json │ ├── plando-keyrings-all-anywhere-halfmq.json │ ├── plando-keyrings-all-anywhere-nomq.json │ ├── plando-keyrings-all-dungeon-allmq.json │ ├── plando-keyrings-all-dungeon-halfmq.json │ ├── plando-keyrings-all-dungeon-nomq.json │ ├── plando-keyrings-bosskey-forest-anywhere-balanced.json │ ├── plando-keyrings-bosskey-forest-anywhere-minimal.json │ ├── plando-keyrings-bosskey-forest-vanilla-plentiful.json │ ├── plando-keyrings-bosskey-none-anywhere-ludicrous.json │ ├── plando-keyrings-bosskey-none-anywhere-plentiful.json │ ├── plando-keyrings-forest-anywhere-balanced.json │ ├── plando-keyrings-forest-anywhere-ludicrous.json │ ├── plando-keyrings-forest-anywhere-minimal.json │ ├── plando-keyrings-forest-anywhere-plentiful.json │ ├── plando-keyrings-forest-keysy-plentiful.json │ ├── plando-keyrings-forest-vanilla-plentiful.json │ ├── plando-keyrings-hideout-default-anywhere-balanced.json │ ├── plando-keyrings-hideout-default-anywhere-plentiful.json │ ├── plando-keyrings-hideout-default-vanilla.json │ ├── plando-keyrings-hideout-fast-anywhere-balanced.json │ ├── plando-keyrings-hideout-fast-anywhere-plentiful.json │ ├── plando-keyrings-hideout-fast-vanilla.json │ ├── plando-keyrings-hideout-open-plentiful.json │ ├── plando-keyrings-none-anywhere-ludicrous.json │ ├── plando-keyrings-none-anywhere-plentiful.json │ ├── plando-list-case-sensitivity.json │ ├── plando-list-exhaustion.json │ ├── plando-list.json │ ├── plando-ludicrous-default.json │ ├── plando-ludicrous-ice-traps.json │ ├── plando-ludicrous-junk-locations.json │ ├── plando-ludicrous-max-locations.json │ ├── plando-ludicrous-skip-child-zelda.json │ ├── plando-ludicrous-starting-all-items.json │ ├── plando-ludicrous-starting-bottles.json │ ├── plando-ludicrous-starting-hearts.json │ ├── plando-mirrored-ice-traps.json │ ├── plando-new-placed-ice-traps.json │ ├── plando-num-adult-trade-item-bad.json │ ├── plando-num-adult-trade-item-good.json │ ├── plando-num-bottles-fountain-closed-bad.json │ ├── plando-num-bottles-fountain-closed-good.json │ ├── plando-num-bottles-fountain-open-bad.json │ ├── plando-num-bottles-fountain-open-good.json │ ├── plando-num-weird-egg-item-bad.json │ ├── plando-num-weird-egg-item-good.json │ ├── plando-placed-and-added-ice-traps.json │ ├── plando-potscrates-allmq.json │ ├── plando-potscrates-nomq.json │ ├── plando-shop-items.json │ ├── plando-table-tests.json │ ├── plando-use-normal-triforce-piece-count.json │ ├── plando-weird-egg-in-list.json │ ├── skip-zelda.json │ └── those_pots_over_there.json ├── plentiful.sav ├── tokensanity.sav ├── triforce-multiworld.sav ├── triforce-startingitems.sav └── triforce.sav ├── texture_util.py ├── update-presets.py └── version.py /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | 3 | *.txt text 4 | *.json text 5 | *.c text eol=lf 6 | *.h text eol=lf 7 | *.py text eol=lf 8 | *.md text 9 | *.html text 10 | *.asm text eol=lf 11 | 12 | *.bin binary 13 | *.o binary 14 | 15 | /ASM/build/*.txt text -diff linguist-generated=true 16 | /data/generated/* text -diff linguist-generated=true 17 | 18 | /bin/Compress/Compress* binary 19 | /bin/Decompress/Decompress* binary 20 | /bin/gzinject/gzinject* binary 21 | /bin/minibsdiff/minibsdiff* binary 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .sw* 2 | .vs 3 | .vscode 4 | .idea 5 | /ASM/build/bin 6 | /Output 7 | /build 8 | /dist 9 | /Logs 10 | /testlogs 11 | __pycache__ 12 | ARCHIVE.bin 13 | 14 | **/.DS_Store 15 | 16 | #Directory generated when we create wad file 17 | /wadextract 18 | common-key.bin 19 | 20 | *.[nz]64 21 | *.[nz]64.bak 22 | *.prof 23 | *.pyc 24 | *.pyo 25 | *.sav 26 | *.spec 27 | .*.sw* 28 | *.wad 29 | 30 | data/Models/Adult/*.zobj 31 | data/Models/Adult/Pieces 32 | data/Models/Child/*.zobj 33 | data/Models/Child/Pieces 34 | 35 | tests/Output 36 | !tests/*.sav 37 | !tests/plando/*.json 38 | 39 | # In order to keep this file tidy, please add any personal conventions to your 40 | # global git configuration. 41 | /ASM/build/bundle_r.txt 42 | /ASM/build/bundle_d.txt 43 | 44 | **/.DS_Store 45 | -------------------------------------------------------------------------------- /ASM/.gitattributes: -------------------------------------------------------------------------------- 1 | *.bin binary 2 | /build/* binary linguist-generated=true 3 | /build/*.txt text -diff linguist-generated=true 4 | -------------------------------------------------------------------------------- /ASM/.gitignore: -------------------------------------------------------------------------------- 1 | /inject 2 | /roms/* 3 | /tools/* 4 | /c/*.o 5 | armips* 6 | !.gitkeep 7 | -------------------------------------------------------------------------------- /ASM/build/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/ASM/build/.gitkeep -------------------------------------------------------------------------------- /ASM/build/bundle.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/ASM/build/bundle.o -------------------------------------------------------------------------------- /ASM/c/agony.h: -------------------------------------------------------------------------------- 1 | #ifndef AGONY_H 2 | #define AGONY_H 3 | 4 | void agony_inside_radius_setup(); 5 | void agony_outside_radius_setup(); 6 | void agony_vibrate_setup(); 7 | void draw_agony(); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /ASM/c/audio.h: -------------------------------------------------------------------------------- 1 | #ifndef AUDIO_H 2 | #define AUDIO_H 3 | 4 | #include 5 | 6 | typedef struct { 7 | float x, y, z; 8 | } Vec3f; // move this if needed elsewhere 9 | 10 | extern Vec3f z64_SfxDefaultPos; 11 | extern float z64_SfxDefaultFreqAndVolScale; 12 | extern uint8_t z64_SfxDefaultReverb; 13 | 14 | #endif //AUDIO_H 15 | -------------------------------------------------------------------------------- /ASM/c/bg_gate_shutter.h: -------------------------------------------------------------------------------- 1 | #include "z64.h" 2 | 3 | typedef struct BgGateShutter { 4 | /* 0x0000 */ DynaPolyActor dyna; 5 | /* 0x0154 */ void* actionFunc; 6 | /* 0x0158 */ int16_t openingState; // 1 if gate is opening 7 | /* 0x015C */ z64_xyzf_t somePos; 8 | /* 0x0168 */ int16_t unk_168; 9 | } BgGateShutter; // size = 0x016C 10 | -------------------------------------------------------------------------------- /ASM/c/blue_warp.h: -------------------------------------------------------------------------------- 1 | #ifndef DOOR_WARP1_H 2 | #define DOOR_WARP1_H 3 | 4 | #include "z64.h" 5 | 6 | int32_t DoorWarp1_PlayerInRange_Overwrite(z64_actor_t* actor, z64_game_t* game); 7 | 8 | int32_t DoorWarp1_IsSpiritRewardObtained(void); 9 | int32_t DoorWarp1_IsShadowRewardObtained(void); 10 | 11 | void DoorWarp1_KokiriEmerald_Overwrite(void); 12 | void DoorWarp1_GoronRuby_Overwrite(void); 13 | void DoorWarp1_ZoraSapphire_Overwrite(void); 14 | void DoorWarp1_ForestMedallion_Overwrite(void); 15 | void DoorWarp1_FireMedallion_Overwrite(void); 16 | void DoorWarp1_WaterMedallion_Overwrite(void); 17 | void DoorWarp1_SpiritMedallion_Overwrite(void); 18 | void DoorWarp1_ShadowMedallion_Overwrite(void); 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /ASM/c/bombchu_bowling.h: -------------------------------------------------------------------------------- 1 | typedef enum { 2 | /* 0 */ EXITEM_BOMB_BAG_BOWLING, 3 | /* 1 */ EXITEM_HEART_PIECE_BOWLING, 4 | /* 2 */ EXITEM_BOMBCHUS_BOWLING, 5 | /* 3 */ EXITEM_BOMBS_BOWLING, 6 | /* 4 */ EXITEM_PURPLE_RUPEE_BOWLING, 7 | /* 5 */ EXITEM_BOMB_BAG_COUNTER, 8 | /* 6 */ EXITEM_HEART_PIECE_COUNTER, 9 | /* 7 */ EXITEM_BOMBCHUS_COUNTER, 10 | /* 8 */ EXITEM_BOMBS_COUNTER, 11 | /* 9 */ EXITEM_PURPLE_RUPEE_COUNTER, 12 | /* 10 */ EXITEM_GREEN_RUPEE_CHEST, 13 | /* 11 */ EXITEM_BLUE_RUPEE_CHEST, 14 | /* 12 */ EXITEM_RED_RUPEE_CHEST, 15 | /* 13 */ EXITEM_13, 16 | /* 14 */ EXITEM_14, 17 | /* 15 */ EXITEM_SMALL_KEY_CHEST, 18 | /* 16 */ EXITEM_MAGIC_FIRE, 19 | /* 17 */ EXITEM_MAGIC_WIND, 20 | /* 18 */ EXITEM_MAGIC_DARK, 21 | /* 19 */ EXITEM_BULLET_BAG 22 | } EnExItemType; 23 | -------------------------------------------------------------------------------- /ASM/c/door_of_time.c: -------------------------------------------------------------------------------- 1 | #include "door_of_time.h" 2 | #include "z64.h" 3 | 4 | extern uint8_t DOT_CONDITION; 5 | 6 | int32_t DemoKankyo_CutsceneFlags_Get_Hook(void* play, int16_t flag) { 7 | switch (DOT_CONDITION) { 8 | case 0: // open 9 | return 1; 10 | case 1: // sot 11 | return CutsceneFlags_Get(play, flag); 12 | case 2: // oot_sot 13 | return z64_file.items[Z64_SLOT_OCARINA] == 0x08 && CutsceneFlags_Get(play, flag); 14 | case 3: // stones 15 | return (z64_file.quest_items & 0x1C0000) == 0x1C0000; 16 | case 4: // stones_sot 17 | return (z64_file.quest_items & 0x1C0000) == 0x1C0000 && CutsceneFlags_Get(play, flag); 18 | case 5: // stones_oot_sot 19 | return (z64_file.quest_items & 0x1C0000) == 0x1C0000 && z64_file.items[Z64_SLOT_OCARINA] == 0x08 && CutsceneFlags_Get(play, flag); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ASM/c/door_of_time.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int32_t DemoKankyo_CutsceneFlags_Get_Hook(void* play, int16_t flag); 4 | -------------------------------------------------------------------------------- /ASM/c/everdrive.h: -------------------------------------------------------------------------------- 1 | #ifndef EVERDRIVE_H 2 | #define EVERDRIVE_H 3 | 4 | #include 5 | 6 | #define ED64_DETECTION_UNKNOWN 0 7 | #define ED64_DETECTION_PRESENT 1 8 | #define ED64_DETECTION_NOT_PRESENT 2 9 | 10 | #define EVERDRIVE_PROTOCOL_STATE_INIT 0x00 11 | #define EVERDRIVE_PROTOCOL_STATE_HANDSHAKE 0x01 12 | #define EVERDRIVE_PROTOCOL_STATE_MW 0x02 13 | 14 | bool everdrive_detect(); 15 | bool everdrive_read(uint8_t *buf); 16 | bool everdrive_write(uint8_t *buf); 17 | void everdrive_frame(bool in_game); 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /ASM/c/extern_ctxt.h: -------------------------------------------------------------------------------- 1 | #include "z64.h" 2 | #include "icetrap.h" 3 | 4 | void process_extern_ctxt(); 5 | void extern_scene_init(); 6 | -------------------------------------------------------------------------------- /ASM/c/file_icons.h: -------------------------------------------------------------------------------- 1 | #ifndef FILE_ICONS_H 2 | #define FILE_ICONS_H 3 | 4 | #include "gfx.h" 5 | #include "z64.h" 6 | 7 | void draw_file_icons(z64_disp_buf_t* db, const z64_menudata_t* menu_data); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /ASM/c/file_message.h: -------------------------------------------------------------------------------- 1 | #ifndef FILE_MESSAGE_H 2 | #define FILE_MESSAGE_H 3 | 4 | #include "gfx.h" 5 | #include "z64.h" 6 | 7 | void draw_file_message(z64_disp_buf_t* db, const z64_menudata_t* menu_data); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /ASM/c/file_select.h: -------------------------------------------------------------------------------- 1 | #ifndef FILE_SELECT_H 2 | #define FILE_SELECT_H 3 | 4 | #include "z64.h" 5 | #define PASSWORD_LENGTH 6 6 | 7 | typedef enum { 8 | /* 0 */ SM_FADE_MAIN_TO_SELECT, 9 | /* 1 */ SM_MOVE_FILE_TO_TOP, 10 | /* 2 */ SM_FADE_IN_FILE_INFO, 11 | /* 3 */ SM_CONFIRM_FILE, 12 | /* 4 */ SM_FADE_OUT_FILE_INFO, 13 | /* 5 */ SM_MOVE_FILE_TO_SLOT, 14 | /* 6 */ SM_FADE_OUT, 15 | /* 7 */ SM_LOAD_GAME, 16 | } SelectMode; 17 | 18 | typedef enum { 19 | /* 0 */ FS_BTN_CONFIRM_YES, 20 | /* 1 */ FS_BTN_CONFIRM_QUIT, 21 | } ConfirmButtonIndex; 22 | 23 | void draw_file_select_hash(uint32_t fade_out_alpha, z64_menudata_t* menu_data); 24 | 25 | void Audio_StopCurrentMusic(uint16_t arg0); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /ASM/c/ganon.c: -------------------------------------------------------------------------------- 1 | #include "ganon.h" 2 | #include "refill.h" 3 | 4 | #include "z64.h" 5 | 6 | uint8_t NO_ESCAPE_SEQUENCE = 0; 7 | 8 | void check_ganon_entry() { 9 | if (NO_ESCAPE_SEQUENCE && z64_file.entrance_index == 0x0517) { 10 | health_and_magic_refill(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ASM/c/ganon.h: -------------------------------------------------------------------------------- 1 | #ifndef GANON_H 2 | #define GANON_H 3 | 4 | void check_ganon_entry(); 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /ASM/c/hud_colors.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include "color.h" 3 | #include "z64.h" 4 | 5 | void update_hud_colors(); 6 | uint32_t rupee_hud_color(); 7 | extern const colorRGB8_t rupee_colors[4]; 8 | extern const colorRGB16_t defaultHeart; 9 | extern const colorRGB16_t defaultDDHeart; 10 | -------------------------------------------------------------------------------- /ASM/c/icetrap.c: -------------------------------------------------------------------------------- 1 | #include "icetrap.h" 2 | #include "z64.h" 3 | 4 | _Bool ice_trap_is_pending() { 5 | return z64_file.scene_flags[0x49].unk_00_ > 0; //Unused word in scene x49. 6 | } 7 | 8 | void push_pending_ice_trap() { 9 | z64_file.scene_flags[0x49].unk_00_++; 10 | } 11 | 12 | void give_ice_trap() { 13 | if (z64_file.scene_flags[0x49].unk_00_) { 14 | z64_file.scene_flags[0x49].unk_00_--; 15 | z64_LinkInvincibility(&z64_link, 0x14); 16 | z64_LinkDamage(&z64_game, &z64_link, 0x03, 0, 0, 0x14); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ASM/c/icetrap.h: -------------------------------------------------------------------------------- 1 | #ifndef ICETRAP_H 2 | #define ICETRAP_H 3 | 4 | #include "z64.h" 5 | 6 | void push_pending_ice_trap(); 7 | void give_ice_trap(); 8 | _Bool ice_trap_is_pending(); 9 | 10 | #endif 11 | -------------------------------------------------------------------------------- /ASM/c/inputviewer.h: -------------------------------------------------------------------------------- 1 | #ifndef INPUTVIEWER_H 2 | #define INPUTVIEWER_H 3 | 4 | #include "z64.h" 5 | #include "gfx.h" 6 | #include "text.h" 7 | 8 | extern colorRGB16_t CFG_A_BUTTON_COLOR; 9 | extern colorRGB16_t CFG_B_BUTTON_COLOR; 10 | extern colorRGB16_t CFG_C_BUTTON_COLOR; 11 | 12 | void draw_input_viewer(z64_disp_buf_t* db); 13 | 14 | uint8_t is_hook_static(); 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /ASM/c/item_draw_table.h: -------------------------------------------------------------------------------- 1 | #ifndef ITEM_DRAW_TABLE_H 2 | #define ITEM_DRAW_TABLE_H 3 | 4 | #include "z64.h" 5 | #include "color.h" 6 | 7 | typedef union { 8 | uint32_t dlist; 9 | colorRGBA8_t color; 10 | } item_draw_arg_t; 11 | 12 | typedef struct { 13 | void (*draw_func)(z64_game_t* game, uint32_t draw_id); 14 | item_draw_arg_t args[8]; 15 | } item_draw_table_entry_t; 16 | 17 | extern item_draw_table_entry_t item_draw_table[]; 18 | 19 | void base_draw_gi_model(z64_game_t* game, uint32_t draw_id); 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /ASM/c/kaleido.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by vcunningham on 10/12/23. 3 | // 4 | 5 | #ifndef KALEIDO_H 6 | #define KALEIDO_H 7 | 8 | #define AGE_REQ_ADULT 0 9 | #define AGE_REQ_CHILD 1 10 | #define AGE_REQ_NONE 9 11 | 12 | #define CHECK_AGE_REQ_SLOT(slot) \ 13 | ((z64_SlotAgeReqs[slot] == AGE_REQ_NONE) || z64_SlotAgeReqs[slot] == ((void)0, z64_file.link_age)) 14 | 15 | extern uint8_t z64_SlotAgeReqs[24]; 16 | extern int16_t z64_sEquipState; 17 | extern int16_t z64_sEquipAnimTimer; 18 | extern int16_t z64_sEquipMoveTimer; 19 | 20 | typedef enum { 21 | /* 0x00 */ PAUSE_ITEM, 22 | /* 0x01 */ PAUSE_MAP, 23 | /* 0x02 */ PAUSE_QUEST, 24 | /* 0x03 */ PAUSE_EQUIP, 25 | /* 0x04 */ PAUSE_WORLD_MAP 26 | } pause_menu_page; 27 | 28 | #endif //KALEIDO_H 29 | -------------------------------------------------------------------------------- /ASM/c/menu.c: -------------------------------------------------------------------------------- 1 | #include "z64.h" 2 | #include "kaleido.h" 3 | 4 | _Bool c_equipment_menu_slot_filled() { 5 | if (z64_game.pause_ctxt.cursor_x[PAUSE_EQUIP] == 0) { 6 | if (z64_game.pause_ctxt.cursor_y[PAUSE_EQUIP] == 0) { 7 | if (z64_file.link_age == 0 && (z64_file.bullet_bag || z64_file.quiver)) return 1; 8 | else return z64_file.bullet_bag; 9 | } 10 | return (z64_file.equipment_items >> (3 * z64_game.pause_ctxt.cursor_y[PAUSE_EQUIP])) & 0x07; 11 | } 12 | if (z64_game.pause_ctxt.cursor_y[PAUSE_EQUIP] == 0) { 13 | if (z64_game.pause_ctxt.cursor_x[PAUSE_EQUIP] != 3) goto retnormal; 14 | return z64_file.broken_giants_knife || z64_file.giants_knife; 15 | } 16 | retnormal: 17 | return (z64_file.equipment >> ((4 * z64_game.pause_ctxt.cursor_y[PAUSE_EQUIP]) + (z64_game.pause_ctxt.cursor_x[PAUSE_EQUIP] - 1))) & 0x01; 18 | } 19 | -------------------------------------------------------------------------------- /ASM/c/message.h: -------------------------------------------------------------------------------- 1 | #ifndef MESSAGE_H 2 | #define MESSAGE_H 3 | 4 | void display_misc_messages(); 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /ASM/c/misc_colors.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | uint32_t get_bombchu_back_color(float brightness); 4 | void update_misc_colors(); 5 | -------------------------------------------------------------------------------- /ASM/c/model_text.h: -------------------------------------------------------------------------------- 1 | #ifndef MODEL_TEXT_H 2 | #define MODEL_TEXT_H 3 | 4 | #include "z64.h" 5 | #include "gfx.h" 6 | #include "text.h" 7 | #include "util.h" 8 | 9 | extern uint16_t illegal_model; 10 | 11 | void draw_illegal_model_text(z64_disp_buf_t* db); 12 | void check_model_skeletons(); 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /ASM/c/models.h: -------------------------------------------------------------------------------- 1 | #ifndef MODELS_H 2 | #define MODELS_H 3 | 4 | #include "z64.h" 5 | #include "override.h" 6 | #include 7 | 8 | typedef struct model_t { 9 | uint16_t object_id; 10 | uint8_t graphic_id; 11 | } model_t; 12 | 13 | typedef struct { 14 | uint16_t object_id; 15 | uint8_t* buf; 16 | } loaded_object_t; 17 | 18 | 19 | void models_init(); 20 | void models_reset(); 21 | 22 | void lookup_model_by_override(model_t* model, override_t override); 23 | void draw_model(model_t model, z64_actor_t* actor, z64_game_t* game, float base_scale); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /ASM/c/music.h: -------------------------------------------------------------------------------- 1 | #ifndef MUSIC_H 2 | #define MUSIC_H 3 | 4 | #include 5 | #include "z64.h" 6 | #include "triforce.h" 7 | #include "dungeon_info.h" 8 | #include "model_text.h" 9 | 10 | void manage_music_changes(); 11 | _Bool Health_IsCritical(); 12 | void display_song_name(z64_disp_buf_t* db); 13 | void display_song_name_on_file_select(z64_disp_buf_t* db); 14 | 15 | typedef enum { 16 | /* 0 */ SONG_NAME_NONE, // Never displayed. 17 | /* 1 */ SONG_NAME_TOP, // Top of the screen. 18 | /* 2 */ SONG_NAME_PAUSE, // Pause screen only. 19 | } SongNamePosition; 20 | 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /ASM/c/obj_comb.h: -------------------------------------------------------------------------------- 1 | #ifndef OBJ_COMB_H 2 | #define OBJ_COMB_H 3 | 4 | #include "z64.h" 5 | 6 | struct ObjComb; 7 | 8 | typedef void (*ObjCombActionFunc)(struct ObjComb*, z64_game_t*); 9 | 10 | typedef struct ObjComb { 11 | /* 0x0000 */ z64_actor_t actor; 12 | /* 0x013C */ ObjCombActionFunc actionFunc; 13 | /* 0x0140 */ uint8_t unk_00[0x60]; 14 | /* 0x01A0 */ uint16_t unk_1B0; 15 | /* 0x01A2 */ uint16_t unk_1B2; 16 | /* 0x01A4 */ uint8_t chest_type; 17 | } ObjComb; // size = 0x01A4 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /ASM/c/obj_kibako.h: -------------------------------------------------------------------------------- 1 | #ifndef OBJ_KIBAKO_H 2 | #define OBJ_KIBAKO_H 3 | 4 | #include "z64.h" 5 | 6 | typedef struct ObjKibako { 7 | /* 0x0000 */ z64_actor_t actor; 8 | /* 0x013C */ void* actionFunc; 9 | /* 0x0140 */ uint8_t collider[0x4C]; 10 | /* 0x018C */ uint8_t chest_type; 11 | } ObjKibako; // size = 0x019C 12 | 13 | override_t get_smallcrate_override(z64_actor_t* actor, z64_game_t* game); 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /ASM/c/obj_kibako2.h: -------------------------------------------------------------------------------- 1 | #ifndef Z_OBJ_KIBAKO2_H 2 | #define Z_OBJ_KIBAKO2_H 3 | 4 | #include "item_table.h" 5 | #include "get_items.h" 6 | #include "z64.h" 7 | 8 | struct ObjKibako2; 9 | 10 | typedef void (*ObjKibako2ActionFunc)(struct ObjKibako2*, z64_game_t*); 11 | 12 | typedef struct ObjKibako2 { 13 | /* 0x0000 */ DynaPolyActor dyna; 14 | /* 0x0154 */ uint8_t collider[0x4C]; 15 | /* 0x01A0 */ void* actionFunc; 16 | /* 0x01A4 */ int16_t collectibleFlag; 17 | /* 0x01A8 */ uint8_t chest_type; 18 | } ObjKibako2; // size = 0x01B8 19 | 20 | override_t get_crate_override(z64_actor_t* actor, z64_game_t* game); 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /ASM/c/obj_mure3.c: -------------------------------------------------------------------------------- 1 | #include "z64.h" 2 | #include "get_items.h" 3 | #include "actor.h" 4 | 5 | z64_actor_t* Obj_Mure3_RupeeCircle_DropRupee(z64_actor_t* this, z64_xyzf_t* pos, uint16_t params, uint32_t index) { 6 | xflag_t flag = { 0 }; 7 | ActorAdditionalData* extras = Actor_GetAdditionalData(this); 8 | Actor_BuildFlag(this, &flag, extras->actor_id, index + 1); 9 | flag = resolve_alternative_flag(&flag); 10 | if (get_newflag_override(&flag).key.all) { 11 | drop_collectible_override_flag = flag; 12 | z64_actor_t* spawned = (z64_actor_t*)z64_Item_DropCollectible2(&z64_game, pos, params); 13 | z64_bzero(&drop_collectible_override_flag, sizeof(drop_collectible_override_flag)); 14 | return spawned; 15 | } 16 | return (z64_actor_t*)z64_Item_DropCollectible2(&z64_game, pos, params); 17 | } 18 | -------------------------------------------------------------------------------- /ASM/c/objects.h: -------------------------------------------------------------------------------- 1 | #ifndef OBJECTS_H 2 | #define OBJECTS_H 3 | 4 | #include "z64.h" 5 | 6 | int32_t object_index_or_spawn(z64_obj_ctxt_t* object_ctx, int16_t object_id); 7 | void enitem00_set_link_incoming_item_id(z64_actor_t* actor, z64_game_t* game, int32_t getItemId); 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /ASM/c/ocarina_buttons.c: -------------------------------------------------------------------------------- 1 | #include "ocarina_buttons.h" 2 | 3 | uint8_t c_block_ocarina() { 4 | uint8_t res = 0; 5 | if (!(z64_file.scene_flags[0x50].unk_00_ & 1 << 0)) { // A 6 | res |= 1 << 0; 7 | } 8 | if (!(z64_file.scene_flags[0x50].unk_00_ & 1 << 1)) { // C up 9 | res |= 1 << 1; 10 | } 11 | if (!(z64_file.scene_flags[0x50].unk_00_ & 1 << 2)) { // C down 12 | res |= 1 << 2; 13 | } 14 | if (!(z64_file.scene_flags[0x50].unk_00_ & 1 << 3)) { // C left 15 | res |= 1 << 3; 16 | } 17 | if (!(z64_file.scene_flags[0x50].unk_00_ & 1 << 4)) { // C right 18 | res |= 1 << 4; 19 | } 20 | return res; 21 | } 22 | extern uint8_t EPONAS_SONG_NOTES; 23 | int8_t can_spawn_epona() { 24 | if (!SHUFFLE_OCARINA_BUTTONS) { 25 | return 1; 26 | } 27 | return (c_block_ocarina() & EPONAS_SONG_NOTES) ? 0 : 1; 28 | } 29 | -------------------------------------------------------------------------------- /ASM/c/ocarina_buttons.h: -------------------------------------------------------------------------------- 1 | #include "z64.h" 2 | 3 | uint8_t c_block_ocarina(); 4 | int8_t can_spawn_epona(); 5 | 6 | extern uint8_t SHUFFLE_OCARINA_BUTTONS; 7 | -------------------------------------------------------------------------------- /ASM/c/override.h: -------------------------------------------------------------------------------- 1 | #ifndef OVERRIDE_H 2 | #define OVERRIDE_H 3 | 4 | #include 5 | 6 | typedef union overide_key_t { 7 | uint64_t all; 8 | struct { 9 | uint8_t scene; 10 | uint8_t type; 11 | uint16_t pad; 12 | uint32_t flag; 13 | }; 14 | } override_key_t; 15 | 16 | // a type used when the cloak of an ice trap is irrelevant 17 | typedef union override_value_base_t { 18 | uint32_t all; 19 | struct { 20 | uint16_t item_id; 21 | uint8_t player; 22 | uint8_t _pad; 23 | }; 24 | } override_value_base_t; 25 | 26 | typedef struct { 27 | override_value_base_t base; 28 | uint16_t looks_like_item_id; 29 | uint16_t _pad; 30 | } override_value_t; 31 | 32 | typedef struct { 33 | override_key_t key; 34 | override_value_t value; 35 | } override_t; 36 | 37 | typedef struct { 38 | override_key_t alt; 39 | override_key_t primary; 40 | } alt_override_t; 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /ASM/c/ovl_bg_haka_tubo.c: -------------------------------------------------------------------------------- 1 | #include "get_items.h" 2 | #include "z64.h" 3 | #include "actor.h" 4 | 5 | z64_actor_t* BgHakaTubo_DropCollectible_Hack(z64_actor_t* this, z64_xyzf_t* pos, uint16_t params, uint32_t index) { 6 | xflag_t flag = { 0 }; 7 | ActorAdditionalData* extras = Actor_GetAdditionalData(this); 8 | Actor_BuildFlag(this, &flag, extras->actor_id, index + 1); 9 | flag = resolve_alternative_flag(&flag); 10 | if (get_newflag_override(&flag).key.all) { 11 | drop_collectible_override_flag = flag; 12 | z64_actor_t* spawned = (z64_actor_t*)z64_Item_DropCollectible(&z64_game, pos, 0); 13 | z64_bzero(&drop_collectible_override_flag, sizeof(drop_collectible_override_flag)); 14 | return spawned; 15 | } 16 | return (z64_actor_t*)z64_Item_DropCollectible(&z64_game, pos, params); 17 | } 18 | -------------------------------------------------------------------------------- /ASM/c/pots.h: -------------------------------------------------------------------------------- 1 | #ifndef POTS_H 2 | #define POTS_H 3 | 4 | #include "item_table.h" 5 | #include "get_items.h" 6 | #include "z64.h" 7 | 8 | // Regular Pot Struct 9 | typedef struct ObjTsubo { 10 | /* 0x0000 */ z64_actor_t actor; 11 | /* 0x013C */ void* actionFunc; 12 | /* 0x0140 */ uint8_t collider[0x4C]; 13 | /* 0x018C */ int8_t objTsuboBankIndex; 14 | /* 0x0190 */ uint8_t chest_type; 15 | } ObjTsubo; // size = 0x01A0 16 | 17 | // Flying Pot Struct 18 | typedef struct EnTuboTrap { 19 | /* 0x0000 */ z64_actor_t actor; 20 | /* 0x013C */ void* actionFunc; 21 | /* 0x0140 */ float targetY; 22 | /* 0x0144 */ z64_xyzf_t originPos; 23 | /* 0x0150 */ uint8_t collider[0x4C]; 24 | /* 0x019C */ uint8_t chest_type; 25 | } EnTuboTrap; // size = 0x01AC 26 | 27 | override_t get_pot_override(z64_actor_t* actor, z64_game_t* game); 28 | override_t get_flying_pot_override(z64_actor_t* actor, z64_game_t* game); 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /ASM/c/rainbow.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include "color.h" 3 | 4 | colorRGB8_t get_rainbow_color(uint32_t f, uint32_t step_frames); 5 | -------------------------------------------------------------------------------- /ASM/c/refill.c: -------------------------------------------------------------------------------- 1 | #include "refill.h" 2 | 3 | #include "z64.h" 4 | 5 | void health_and_magic_refill() 6 | { 7 | z64_file.refill_hearts = 0x140; 8 | z64_file.magic = z64_file.magic_capacity_set * 0x30; 9 | } 10 | -------------------------------------------------------------------------------- /ASM/c/refill.h: -------------------------------------------------------------------------------- 1 | #ifndef REFILL_H 2 | #define REFILL_H 3 | 4 | void health_and_magic_refill(); 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /ASM/c/rng.h: -------------------------------------------------------------------------------- 1 | #ifndef RNG_H 2 | #define RNG_H 3 | 4 | #include "z64.h" 5 | 6 | extern uint32_t SEED; 7 | extern uint32_t RANDOMIZER_RNG_SEED; 8 | extern uint32_t RNG_SEED_INT; 9 | 10 | uint32_t Seeded_Rand_Next(); 11 | void Seeded_Rand_Seed(uint32_t seed); 12 | void Seeded_Reset(); 13 | float Seeded_Rand_ZeroOne(); 14 | float Seeded_Rand_Centered(); 15 | void seed_rng(); 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /ASM/c/sage_gifts.h: -------------------------------------------------------------------------------- 1 | #ifndef SAGE_GIFTS_H 2 | #define SAGE_GIFTS_H 3 | 4 | void give_sage_gifts(); 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /ASM/c/save.h: -------------------------------------------------------------------------------- 1 | #ifndef SAVE_H 2 | #define SAVE_H 3 | 4 | #include 5 | #include "override.h" 6 | 7 | // Struct for storing additional data in SRAM. This has to always be a multiple of 2 bytes long supposedly. 8 | typedef struct { 9 | uint8_t silver_rupee_counts[0x16]; 10 | bool collected_dungeon_rewards[8]; 11 | override_t incoming_queue[3]; 12 | uint8_t password[6]; 13 | } extended_savecontext_static_t __attribute__ ((aligned (8))); 14 | 15 | 16 | typedef union { 17 | uint32_t all; 18 | struct { 19 | uint16_t offset; 20 | uint8_t type; 21 | uint8_t value; 22 | }; 23 | } extended_initial_save_entry; 24 | 25 | 26 | extern extended_initial_save_entry EXTENDED_INITIAL_SAVE_DATA; 27 | extern extended_savecontext_static_t extended_savectx; 28 | 29 | void SsSram_ReadWrite_Safe(uint32_t addr, void* dramAddr, size_t size, uint32_t direction); 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /ASM/c/scarecrow.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | void store_scarecrow_fix(uint16_t* from, uint16_t* song) { 4 | for (int i = 0; i < 0x40; i+=2) { 5 | if (song[i] == 0x5700 || song[i] == 0) continue; 6 | if (song[i + 1] < 4) song[i + 1] = 4; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /ASM/c/scene.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | extern int8_t curr_scene_setup; 4 | void get_current_scene_setup_number(); 5 | -------------------------------------------------------------------------------- /ASM/c/text.h: -------------------------------------------------------------------------------- 1 | #ifndef TEXT_H 2 | #define TEXT_H 3 | 4 | #include "z64.h" 5 | 6 | void text_init(); 7 | int text_print(z64_disp_buf_t* db, const char* s, int left, int top); 8 | int text_print_size(z64_disp_buf_t* db, const char* s, int left, int top, int width, int height); 9 | int draw_int(z64_disp_buf_t* db, int32_t number, int16_t left, int16_t top, colorRGBA8_t color); 10 | int draw_int_size(z64_disp_buf_t* db, int32_t number, int16_t left, int16_t top, colorRGBA8_t color, int16_t width, int16_t height); 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /ASM/c/trade_quests.h: -------------------------------------------------------------------------------- 1 | #ifndef TRADE_QUESTS_H 2 | #define TRADE_QUESTS_H 3 | 4 | #include "util.h" 5 | #include "z64.h" 6 | #include "shop_actors.h" 7 | 8 | uint16_t SaveFile_NextOwnedTradeItem(uint16_t itemId); 9 | uint16_t SaveFile_PrevOwnedTradeItem(uint16_t itemId); 10 | 11 | void SaveFile_SetTradeItemAsOwned(uint16_t itemId); 12 | void SaveFile_UnsetTradeItemAsOwned(uint16_t itemId); 13 | 14 | uint16_t IsTradeItem(uint16_t itemId); 15 | uint16_t IsAdultTradeItem(uint16_t itemId); 16 | uint16_t GetTradeItemIndex(uint16_t itemId); 17 | 18 | int16_t GetTradeSlot(uint16_t itemId); 19 | void UpdateTradeEquips(uint16_t itemId, int16_t trade_slot); 20 | void TurnInTradeItem(uint16_t itemId); 21 | 22 | typedef struct { 23 | uint16_t index; 24 | uint16_t item_id; 25 | uint16_t exchange_item_id; 26 | int16_t action_parameter; 27 | char name[20]; 28 | } exchange_item_t; 29 | 30 | extern const exchange_item_t trade_quest_items[22]; 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /ASM/c/triforce.h: -------------------------------------------------------------------------------- 1 | #ifndef TRIFORCE_H 2 | #define TRIFORCE_H 3 | 4 | #include "z64.h" 5 | #include "gfx.h" 6 | #include "text.h" 7 | #include "util.h" 8 | #include "model_text.h" 9 | 10 | extern uint16_t TRIFORCE_HUNT_ENABLED; 11 | extern uint16_t TRIFORCE_PIECES_REQUIRED; 12 | 13 | void draw_triforce_count(z64_disp_buf_t* db); 14 | void set_triforce_render(); 15 | void ice_percent_credits_warp(); 16 | 17 | #define BLOCK_TRIFORCE (0x00000001 | \ 18 | 0x00000002 | \ 19 | 0x00000080 | \ 20 | 0x00000400 | \ 21 | 0x10000000 | \ 22 | 0x20000000) 23 | 24 | #define CAN_DRAW_TRIFORCE (((z64_link.state_flags_1 & BLOCK_TRIFORCE ) == 0) && \ 25 | ((uint32_t)z64_ctxt.state_dtor==z64_state_ovl_tab[3].vram_dtor) && \ 26 | (z64_file.game_mode == 0) && \ 27 | ((z64_event_state_1 & 0x20) == 0)) 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /ASM/c/twinrova.c: -------------------------------------------------------------------------------- 1 | #include "twinrova.h" 2 | #include "z64.h" 3 | 4 | extern uint8_t START_TWINROVA_FIGHT; 5 | extern uint32_t TWINROVA_ACTION_TIMER; 6 | 7 | void clear_twinrova_vars() { 8 | START_TWINROVA_FIGHT = 0; 9 | TWINROVA_ACTION_TIMER = 0; 10 | } 11 | -------------------------------------------------------------------------------- /ASM/c/twinrova.h: -------------------------------------------------------------------------------- 1 | #ifndef TWINROVA_H 2 | #define TWINROVA_H 3 | 4 | void clear_twinrova_vars(); 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /ASM/c/uninvertYaxis.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include "z64.h" 3 | 4 | void manage_uninvert_yaxis(); 5 | -------------------------------------------------------------------------------- /ASM/c/util.c: -------------------------------------------------------------------------------- 1 | #include "util.h" 2 | #include "z64.h" 3 | #include "actor.h" 4 | 5 | extern char C_HEAP[]; 6 | void* heap_next = NULL; 7 | 8 | void heap_init() { 9 | heap_next = &C_HEAP[0]; 10 | } 11 | 12 | void* heap_alloc(int bytes) { 13 | int rem = bytes % 16; 14 | if (rem) bytes += 16 - rem; 15 | 16 | void* result = heap_next; 17 | heap_next = (char*)heap_next + bytes; 18 | return result; 19 | } 20 | 21 | void file_init(file_t* file) { 22 | file->buf = heap_alloc(file->size); 23 | read_file(file->buf, file->vrom_start, file->size); 24 | } 25 | 26 | void* resolve_overlay_addr(void* addr, uint16_t overlay_id) { 27 | ActorOverlay overlay = gActorOverlayTable[overlay_id]; 28 | if (overlay.loadedRamAddr) { 29 | return addr - overlay.vramStart + overlay.loadedRamAddr; 30 | } 31 | return NULL; 32 | } 33 | -------------------------------------------------------------------------------- /ASM/c/util.h: -------------------------------------------------------------------------------- 1 | #ifndef UTIL_H 2 | #define UTIL_H 3 | 4 | #include 5 | 6 | #define array_size(a) (sizeof(a) / sizeof(a[0])) 7 | 8 | void heap_init(); 9 | void* heap_alloc(int bytes); 10 | 11 | typedef struct { 12 | uint8_t* buf; 13 | uint32_t vrom_start; 14 | uint32_t size; 15 | } file_t; 16 | 17 | typedef void (*read_file_fn)(void* mem_addr, uint32_t vrom_addr, 18 | uint32_t size); 19 | #define read_file ((read_file_fn)0x80000DF0) 20 | 21 | void file_init(file_t* file); 22 | void* resolve_overlay_addr(void* addr, uint16_t overlay_id); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /ASM/c/weather.h: -------------------------------------------------------------------------------- 1 | #ifndef WEATHER_H 2 | #define WEATHER_H 3 | 4 | void override_weather_state(); 5 | 6 | #endif 7 | -------------------------------------------------------------------------------- /ASM/c/z64_math.h: -------------------------------------------------------------------------------- 1 | #ifndef Z_MATH_H 2 | #define Z_MATH_H 3 | 4 | #include "stdint.h" 5 | 6 | typedef struct z64_xyz_t 7 | { 8 | int16_t x; 9 | int16_t y; 10 | int16_t z; 11 | } z64_xyz_t; 12 | 13 | typedef struct z64_xyzf_t 14 | { 15 | float x; 16 | float y; 17 | float z; 18 | } z64_xyzf_t; 19 | 20 | typedef uint16_t z64_angle_t; 21 | typedef struct 22 | { 23 | z64_angle_t x; 24 | z64_angle_t y; 25 | z64_angle_t z; 26 | } z64_rot_t; 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /ASM/linker_script.ld: -------------------------------------------------------------------------------- 1 | SECTIONS 2 | { 3 | /* Allocatable and important sections */ 4 | .text : { *(.text*); } 5 | .rodata : { *(.rodata*); } 6 | 7 | /* 8 | * Put the NOLOAD sections (bss, sbss, etc) into data to 9 | * force them to be in the ROM 10 | */ 11 | .data : { *(.data*); *(.bss*); *(COMMON); } 12 | .sdata : { *(.sdata*); *(.sbss*); *(.scommon); } 13 | 14 | /* Not allocatable sections that may be useful */ 15 | .reginfo : { *(.reginfo); } 16 | .pdr : { *(.pdr); } 17 | .gnu.attributes : { KEEP (*(.gnu.attributes)); } 18 | .mdebug : { *(.mdebug); } 19 | .mdebug.abi32 : { *(.mdebug.abi32); } 20 | 21 | /* Useless allocatable sections */ 22 | /DISCARD/ : { 23 | *(.MIPS.abiflags) 24 | *(.MIPS.options) 25 | *(.note.gnu.build-id) 26 | *(.got) 27 | *(.interp) 28 | *(.eh_frame) 29 | *(.reginfo) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ASM/resources/dpad.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/ASM/resources/dpad.bin -------------------------------------------------------------------------------- /ASM/resources/font.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/ASM/resources/font.bin -------------------------------------------------------------------------------- /ASM/resources/small_crate/small_crate_bosskey.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/ASM/resources/small_crate/small_crate_bosskey.bin -------------------------------------------------------------------------------- /ASM/resources/small_crate/small_crate_gold.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/ASM/resources/small_crate/small_crate_gold.bin -------------------------------------------------------------------------------- /ASM/resources/small_crate/small_crate_silver.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/ASM/resources/small_crate/small_crate_silver.bin -------------------------------------------------------------------------------- /ASM/resources/small_crate/small_crate_skull.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/ASM/resources/small_crate/small_crate_skull.bin -------------------------------------------------------------------------------- /ASM/resources/triforce_sprite.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/ASM/resources/triforce_sprite.bin -------------------------------------------------------------------------------- /ASM/roms/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/ASM/roms/.gitkeep -------------------------------------------------------------------------------- /ASM/src/addresses.asm: -------------------------------------------------------------------------------- 1 | ; Pointers to game state 2 | .definelabel SAVE_CONTEXT, 0x8011A5D0 3 | .definelabel GLOBAL_CONTEXT, 0x801C84A0 4 | .definelabel SUBSCREEN_CONTEXT, 0x801D8C00 5 | .definelabel PLAYER_ACTOR, 0x801DAA30 6 | .definelabel GET_ITEMTABLE, 0x803A9E7E 7 | 8 | ; Extended memory map: 9 | //AUDIO_THREAD_FREE 0x8018EE60 ; size 0x37F00 10 | .definelabel DEBUG_BUFFER, 0x80600000 ; size 0x1000 11 | .definelabel C_HEAP, 0x80601000 12 | -------------------------------------------------------------------------------- /ASM/src/armos.asm: -------------------------------------------------------------------------------- 1 | en_am_calculation_1: 2 | lui at, 0x3F81 3 | ori at, at, 0x3F19 4 | mtc1 at, f8 5 | jr ra 6 | nop 7 | 8 | en_am_calculation_2: 9 | lui at, 0x3F81 10 | ori at, at, 0x3F19 11 | mtc1 at, f10 12 | jr ra 13 | nop 14 | -------------------------------------------------------------------------------- /ASM/src/bg_gate_shutter.asm: -------------------------------------------------------------------------------- 1 | ; Check the new gate open flag instead of the master sword check 2 | ; This happens after the zelda's letter check so it should only effect it when the setting is set to open 3 | ; Put the flag into t9 because it will be checked against 0 when we return 4 | ; we can use t8 5 | bg_gate_shutter_open_hack: 6 | li t8, OPEN_KAKARIKO 7 | lb t8, 0x00(t8) ; read the value of the OPEN_KAKARIKO setting. If we set it to 2 then it's always open 8 | jr ra 9 | andi t9, t8, 0x02 10 | -------------------------------------------------------------------------------- /ASM/src/bgs_fix.asm: -------------------------------------------------------------------------------- 1 | ;Big Goron Fix 2 | ;Zero out the pointer to the actor that big goron is interacting with 3 | ;This change is done in the 1.2 version of the game 4 | 5 | bgs_fix: 6 | sw r0, 0x0118(a0) ;zero out pointer in goron instance 7 | addiu ra, ra, 0x30 ;increment ra to simulate original branch 8 | jr ra ;return 9 | sw t6, 0x0180(a0) ;displaced 10 | -------------------------------------------------------------------------------- /ASM/src/blue_fire_arrows.asm: -------------------------------------------------------------------------------- 1 | 2 | blue_fire_arrows: 3 | addiu at, zero, 0x0016 ; sets at to arrow actor id 4 | bne t9, at, @@return ; return if actor isn't an arrow 5 | addiu at, zero, 0x0004 ; sets at to arrow type for ice arrows 6 | jr ra 7 | lh t9, 0x1C(v1) ; load arrow type from actor - 4 for ice arrows 8 | 9 | @@return: 10 | jr ra 11 | addiu at, zero, 0x00F0 ; set at to blue fire actor id 12 | -------------------------------------------------------------------------------- /ASM/src/boomerang.asm: -------------------------------------------------------------------------------- 1 | clear_boomerang_pointer: 2 | sw a0, 0x18(sp) ;displaced 3 | la t0, PLAYER_ACTOR 4 | jr ra 5 | sw r0, 0x678(t0) ;pointer to boomerang in Links instance 6 | -------------------------------------------------------------------------------- /ASM/src/boot.asm: -------------------------------------------------------------------------------- 1 | ; Add dmatable entries for new code 2 | ; Remove the unused files at the bottom the DMA Table 3 | ; - this isn't strictly necessary, but adds flexibility for the future 4 | .orga 0xD1B0 5 | .area 0x100, 0 6 | .word 0x03480000, 0x03480000 + PAYLOAD_END - PAYLOAD_START, 0x03480000, 0 7 | .endarea 8 | 9 | ; Load new code from ROM 10 | ; Replaces: 11 | ; lui v0, 0x8012 12 | ; addiu v0, v0, 0xD2A0 13 | ; sw ra, 0x001C (sp) 14 | ; sw a0, 0x0140 (sp) 15 | ; addiu t6, r0, 0x0140 16 | ; lui at, 0x8010 17 | ; sw t6, 0xE500 (at) 18 | ; lui at, 0x8010 19 | ; addiu t7, r0, 0x00F0 20 | .orga 0xB17BB4 ; In memory: 0x800A1C54 21 | .area 0x24, 0 22 | sw ra, 0x001C (sp) 23 | sw a0, 0x0140 (sp) 24 | 25 | ; Load first code file from ROM 26 | lui a0, 0x8040 27 | li a2, PAYLOAD_END - PAYLOAD_START 28 | jal 0x80000DF0 29 | lui a1, 0x0348 30 | 31 | jal init 32 | nop 33 | .endarea 34 | -------------------------------------------------------------------------------- /ASM/src/camera_init.asm: -------------------------------------------------------------------------------- 1 | camera_init: 2 | ; initialize camera->waterCamSetting at 1 instead of -1 3 | addiu t0, $zero, 0x0001 4 | sw t0, 0x011C(s0) 5 | 6 | ; Displaed code 7 | jr ra 8 | lh t2, 0x014C(s0) 9 | -------------------------------------------------------------------------------- /ASM/src/carpenter_boss.asm: -------------------------------------------------------------------------------- 1 | ;Manually set three variables needed to ensure correct dialog state when receiving item from the Carpenter Boss 2 | 3 | prevent_carpenter_boss_softlock: 4 | la t0, 0x801D2578 ;msgCtx+8000 5 | li t1, 0x6C 6 | lw t2, 0x6300(t0) 7 | beq t1, t2, @@return ;if msgCtx+E300‬ is 0x6C its too early, return 8 | li t2, 0x01 9 | li t3, 0x36 10 | sw t2, 0x6300(t0) ;msgCtx+0xE300‬ 11 | sb t3, 0x6304(t0) ;msgCtx+0xE304 12 | li t4, 0xFFFFFFFF 13 | lb t6, 0x63E7(t0) 14 | bne t6, t4, @@return ;if msgCtx+0xE3E7‬ is 0xFF, set it to 0x02 15 | li t5, 0x02 16 | sb t5, 0x63E7(t0) ;msgCtx+0xE3E7 17 | 18 | @@return: 19 | jr ra 20 | addiu a2, r0, 0x22 ;displaced 21 | -------------------------------------------------------------------------------- /ASM/src/constants.asm: -------------------------------------------------------------------------------- 1 | ; Delayed item flags 2 | DELAYED_LIGHT_ARROWS equ 0x01 3 | DELAYED_FAIRY_OCARINA equ 0x02 4 | DELAYED_ITEM_FAIRIES equ 0x10 ; 0x10 to 0x12 5 | DELAYED_UPGRADE_FAIRIES equ 0x13 ; 0x13 to 0x15 6 | DELAYED_OCARINA_SONGS equ 0x20 ; 0x20 to 0x2B 7 | DELAYED_REQUIEM equ 0x23 8 | DELAYED_EPONAS_SONG equ 0x27 9 | DELAYED_SUNS_SONG equ 0x29 10 | DELAYED_SONG_OF_TIME equ 0x2A 11 | DELAYED_COOP equ 0xFF 12 | -------------------------------------------------------------------------------- /ASM/src/dampe.asm: -------------------------------------------------------------------------------- 1 | dampe_fix: 2 | lw t2, 0x1D44(s1) ; Scene Collection Flags 3 | andi t2, t2, 0x0100 4 | bnez t2, @@received_hp 5 | nop 6 | lw t2, 0x1D48(s1) ; Temporary Collection Flags 7 | andi t2, t2, 0x0100 8 | bnez t2, @@no_hp 9 | nop 10 | lw at, 0x1d48(s1) 11 | ori t2, at, 0x0100 12 | sw t2, 0x1d48(s1) 13 | b @@return 14 | and t2, r0, r0 15 | 16 | @@received_hp: 17 | addiu t4, r0, 0x0000 18 | 19 | @@no_hp: 20 | ori t2, r0, 0x0001 21 | 22 | @@return: 23 | jr ra 24 | nop 25 | -------------------------------------------------------------------------------- /ASM/src/deku_mouth_condition.asm: -------------------------------------------------------------------------------- 1 | deku_mouth_condition: 2 | lw t5, 4(v1) ; 0 = Adult, 1 = Child 3 | lb t6, DUNGEONS_SHUFFLED 4 | or t7, t5, t6 5 | beqz t7, @@mouth_closed ; If both adult and dungeons not shuffled, closed mouth. 6 | nop 7 | beqz t6, @@mouth_open ; If child and dungeons not shuffled, open mouth. 8 | nop 9 | lhu t6, 0x0ED4(v1) ; event_chk_inf[0] 10 | andi t6, t6, 0x0010 ; "Showed Mido Sword & Shield" 11 | or t6, t6, t5 12 | beqz t6, @@mouth_closed ; If both adult and haven't shown Mido the Sword and Shield, closed mouth. 13 | nop 14 | @@mouth_open: 15 | jr ra 16 | li t7, 1 17 | @@mouth_closed: 18 | jr ra 19 | li t7, 0 20 | -------------------------------------------------------------------------------- /ASM/src/door_of_time_col_fix.asm: -------------------------------------------------------------------------------- 1 | kill_door_of_time_col: 2 | sw zero, 0x130(a0) ; update = NULL 3 | sw zero, 0x134(a0) ; draw = NULL 4 | la at, SAVE_CONTEXT 5 | lb t0, 0x0EDC(at) 6 | ori t0, t0, 0x08 ; "Opened the Door of Time" Flag 7 | sb t0, 0x0EDC(at) 8 | lui at, 0x3F80 ; displaced instruction 9 | jr ra 10 | mtc1 at, f6 ; displaced instruction 11 | -------------------------------------------------------------------------------- /ASM/src/dpad.asm: -------------------------------------------------------------------------------- 1 | dpad_draw: 2 | addiu sp, sp, -0x10 3 | sw ra, 0(sp) 4 | jal draw_dpad_and_menu_utilities 5 | nop 6 | lw t6, 0x1C44(s6) 7 | lui t8, 0xDB06 8 | lw ra, 0(sp) 9 | jr ra 10 | addiu sp,sp, 0x10 11 | -------------------------------------------------------------------------------- /ASM/src/drop_overrides/bg_haka_tubo.asm: -------------------------------------------------------------------------------- 1 | ; Hack for shadow temple spinning pot to drop a flagged collectible 2 | ; Actor is in s4 3 | ; Loop index is in s0 4 | 5 | bg_haka_tubo_drop_params_hack: ; Hack when setting up the params 6 | addiu a1, sp, 0x5C ; Replaced code 7 | or a0, s4, r0 ; Put the actor pointer into a0 instead of PlayState 8 | jr ra 9 | or a3, s0, r0 ; Put the loop index into a3 10 | -------------------------------------------------------------------------------- /ASM/src/drop_overrides/obj_mure3.asm: -------------------------------------------------------------------------------- 1 | ; Hacks for rupee towers to drop flagged collectibles 2 | 3 | ; obj_mure3 pointer should be in s2 4 | ; index of the for loop is in s0 5 | obj_mure3_drop_params_hack: 6 | or a0, s2, r0 ; Store the actor pointer into a0 instead of PlayState 7 | jr ra 8 | or a3, s0, r0 ; Store the loop index into a3 9 | 10 | ; S0 should still have our loop index and it should be 6 when we call here 11 | obj_mure3_redrupee_hack: 12 | lh a3, 0x18(s2) ; get our new flag out of the z rotation 13 | beqz a3, obj_mure3_redrupee_hack_end 14 | nop 15 | add a3, s0 ; add the loop index 16 | li a2, drop_collectible_override_flag ; activate the override 17 | sh a3, 0x00(a2) 18 | obj_mure3_redrupee_hack_end: 19 | jr ra 20 | addiu a2, r0, 0x4002 ; replaced code 21 | -------------------------------------------------------------------------------- /ASM/src/empty_bomb.asm: -------------------------------------------------------------------------------- 1 | ;At the end of the bombs explosion it sets a bunch of variables if Link is still holding the bomb instance. 2 | ;This hooks into that check and sets three additional variables to prevent empty bomb 3 | ;This is NOT the same fix that was made in version 1.1 of the game. 4 | ;Doing it this way prevents the Bomb OI glitch that the OoT devs added in 1.1 and onwards. 5 | 6 | empty_bomb: 7 | sw t5, 0x066C(v0) ;displaced 8 | sb r0, 0x141(v0) ;Action Parameter 1 9 | sb r0, 0x144(v0) ;Action Parameter 2 10 | li t6, 0xFE 11 | jr ra 12 | sb t6, 0x142(v0) ;Last Held Item ID 13 | -------------------------------------------------------------------------------- /ASM/src/en_dns.asm: -------------------------------------------------------------------------------- 1 | ; Deku Scrub Salesman take payment before giving item 2 | ; dns actor at 0x18(sp) 3 | EnDns_TakePayment: 4 | addiu sp, sp, -0x20 5 | sw ra, 0x10(sp) 6 | 7 | ; Call the payment function. It's stored in the actor 8 | ; (**(code **)(*(int *)(param_1 + 0x2b0) + 0xc))(param_1); 9 | lw a1, 0x38(sp) ; get actor pointer off stack. Add 0x20 because we pushed the stack 10 | or a0, a1, r0 ; move it into a0 for when we call the function 11 | lw a1, 0x2b0(a1) ; Get dnsItemEntry pointer from actor 12 | lw a1, 0x0c(a1) ; Get payment function pointer from dnsItemEntry 13 | jalr a1 ; Call payment function 14 | nop 15 | 16 | ; Replaced code: 17 | jal Message_CloseTextBox 18 | lw a0, 0x3c(sp) ; Add 0x20 because we pushed the stack 19 | 20 | lw ra, 0x10(sp) 21 | jr ra 22 | addiu sp, sp, 0x20 23 | -------------------------------------------------------------------------------- /ASM/src/every_frame.asm: -------------------------------------------------------------------------------- 1 | before_game_state_update_hook: 2 | addiu sp, sp, -0x18 3 | sw ra, 0x10 (sp) 4 | 5 | jal before_game_state_update 6 | nop 7 | 8 | lw ra, 0x10 (sp) 9 | addiu sp, sp, 0x18 10 | 11 | ; Displaced code 12 | lw t6, 0x0018 (sp) 13 | jr ra 14 | lui at, 0x8010 15 | -------------------------------------------------------------------------------- /ASM/src/fairy_ocarina.asm: -------------------------------------------------------------------------------- 1 | fairy_ocarina_getitem_override: 2 | addiu sp, sp, -0x20 3 | sw a0, 0x18(sp) 4 | sw ra, 0x1C(sp) 5 | 6 | jal fairy_ocarina_getitem 7 | nop 8 | 9 | lw a0, 0x18(sp) 10 | lw ra, 0x1C(sp) 11 | jr ra 12 | addiu sp, sp, 0x20 13 | -------------------------------------------------------------------------------- /ASM/src/gohma.asm: -------------------------------------------------------------------------------- 1 | gohma_climb: 2 | sh $zero, 0x0186(s0) ;patienceTimer = 0 3 | 4 | ; Displaced code 5 | lui a1, 0x40A0 6 | jr ra 7 | lui a2, 0x3F00 8 | -------------------------------------------------------------------------------- /ASM/src/hacks/en_item00.asm: -------------------------------------------------------------------------------- 1 | .headersize(0x800110A0 - 0xA87000) 2 | 3 | ; Hook EnItem00_Init 4 | .org 0x80011b4c 5 | ; Replaces: 6 | ; addiu sp, sp, -0x40 7 | ; sw s0, 0x18(sp) 8 | j EnItem00_Init_Hook 9 | nop 10 | EnItem00_Init_Continue: 11 | -------------------------------------------------------------------------------- /ASM/src/hacks/ovl_bg_haka_tubo.asm: -------------------------------------------------------------------------------- 1 | ; Bg_Haka_Tubo Hacks (Shadow Temple Spinning Pots) 2 | .headersize(0x8099bec0 - 0xd30b50) 3 | 4 | ; Hack 3 spinning pot drops to drop overridden items 5 | 6 | .org 0x8099c34c ; Hack when setting up the params to Item_DropCollectible 7 | ; Replaces: 8 | ; or a0, s6, r0 9 | ; addiu a1, sp, 0x5C 10 | jal bg_haka_tubo_drop_params_hack 11 | or a0, s6, r0 12 | 13 | .org 0x8099c378 ; Hack call to Item_DropCollectible 14 | ; Replaces: 15 | ; jal Item_DropCollectible 16 | jal BgHakaTubo_DropCollectible_Hack 17 | -------------------------------------------------------------------------------- /ASM/src/hacks/ovl_demo_kankyo.asm: -------------------------------------------------------------------------------- 1 | ; Hacks in ovl_Demo_Kankyo for Door of Time settings 2 | 3 | .headersize(0x809307C0 - 0x00CCDF30) 4 | 5 | .org 0x80930C3C 6 | ; Replaces 7 | ; jal CutsceneFlags_Get 8 | jal DemoKankyo_CutsceneFlags_Get_Hook 9 | -------------------------------------------------------------------------------- /ASM/src/hacks/ovl_en_dns.asm: -------------------------------------------------------------------------------- 1 | ; Hacks in en_dns (deku scrub salesman) 2 | .headersize(0x80A74C60 - 0x00DF75A0) 3 | 4 | ; Hack EnDns_SetupSale to take the payment before giving the item 5 | .org 0x80a75834 6 | ; Replaces 7 | ; jal Message_CloseTextBox 8 | ; lw a0, 0x1c(sp) 9 | 10 | jal EnDns_TakePayment 11 | nop 12 | 13 | ; Nop out where it normally takes the payment 14 | .org 0x80a75958 15 | nop 16 | 17 | .org 0x80a7590c 18 | nop 19 | -------------------------------------------------------------------------------- /ASM/src/hacks/ovl_en_ko.asm: -------------------------------------------------------------------------------- 1 | .headersize (0x80AD1C20 - 0xE51A60) 2 | 3 | ; Control if Fado (blonde Kokiri girl) can spawn in Lost Woods 4 | .org 0x80AD3A84 ; Fado branch at end of EnKo_CanSpawn (called by EnKo_Init), override to always true 5 | addiu t5, $zero, 0x0031 6 | .org 0x80AD3EB0 ; end of EnKo_Init, controls Fado spawn 7 | jal check_fado_spawn_flags 8 | sw t8, 0x0180(s0) 9 | lw $ra, 0x001C($sp) 10 | lw s0, 0x0018($sp) 11 | jr $ra 12 | addiu $sp, $sp, 0x0020 13 | 14 | ; Fix Fado's text id when trading in the odd potion out of order 15 | .org 0x80AD37A4 ; vrom 0xE535E4 16 | sh t2, 0x010E(s0) 17 | 18 | .headersize 0 19 | -------------------------------------------------------------------------------- /ASM/src/hacks/ovl_en_po_field.asm: -------------------------------------------------------------------------------- 1 | ; Hyrule Field Poe Hacks 2 | 3 | .headersize(0x80AF7D60 - 0x00E75040) 4 | 5 | ; this->collider.base.ocFlags1 = OC1_ON | OC1_TYPE_ALL; to allow the poe soul to trigger the collision with more than just Link 6 | ; original code: addiu t4, $zero, 0x0009 7 | .org 0x80AF8660 8 | addiu t4, $zero, 0x0039 9 | 10 | ; Since we changed the collision flags, restrict interactions to only Link and Epona when Link is riding. 11 | .org 0x80AF9BE0 12 | jal big_poe_soul_collision 13 | or a0, s0, $zero ; Displaced code 14 | -------------------------------------------------------------------------------- /ASM/src/hacks/ovl_en_ssh.asm: -------------------------------------------------------------------------------- 1 | ; Hacks in en_ssh (Cursed Skulltula Family) 2 | .headersize(0x80B25590 - 0x00EA0CC0) 3 | 4 | ;Replace Text ID's for 100 Skulltula Cursed Man, to misc hint if the setting is on. 5 | 6 | .org 0x80B26F90 7 | addiu t0, $zero, 0x9009 ;Replace Text ID 0x0026 8 | 9 | .org 0x80B26F8C 10 | addiu t9, $zero, 0x9009 ;Replace Text ID 0x0027 11 | 12 | .org 0x80B26F34 13 | addiu t2, $zero, 0x9009 ;Replace Text ID 0x0029 14 | 15 | .org 0x80B26F64 16 | addiu t5, $zero, 0x9009 ;Replace Text ID 0x0024 17 | 18 | .org 0x80B26F68 19 | addiu t6, $zero, 0x9009 ;Replace Text ID 0x0025 20 | 21 | ; Give each remaining cursed skulltula house resident a different text ID, for skulltula reward hints 22 | 23 | .org 0x80B26F34 24 | addiu t1, t1, 0x9003 25 | -------------------------------------------------------------------------------- /ASM/src/hacks/z_parameter.asm: -------------------------------------------------------------------------------- 1 | .headersize(0x8006D8E0 - 0x00AE3840) 2 | 3 | ;============================================================= 4 | ; Move the small key counter horizontally if we have boss key. 5 | ;============================================================= 6 | 7 | .org 0x8007594C 8 | ; Replaces addiu t7, $zero, 0x001A 9 | ; addiu t8, $zero, 0x00BE 10 | jal move_key_icon 11 | addiu t7, $zero, 0x001A 12 | 13 | .org 0x80075A38 14 | ; Replaces addiu s2, $zero, 0x002A 15 | ; addiu t8, $zero, 0x00BE 16 | jal move_key_counter 17 | addiu s2, $zero, 0x002A 18 | -------------------------------------------------------------------------------- /ASM/src/hacks/z_title.asm: -------------------------------------------------------------------------------- 1 | ; Nintendo Logo title screen 2 | 3 | .headersize(0x80800000 - 0x00B9DA40) 4 | 5 | .org 0x80800700 6 | ; Replaces: 7 | ; lbu t3, 0x01E1(s0) 8 | ; lui v0, 0x8012 9 | jal skip_nintendo_logo 10 | lbu t3, 0x01E1(s0) 11 | -------------------------------------------------------------------------------- /ASM/src/init.asm: -------------------------------------------------------------------------------- 1 | init: 2 | addiu sp, sp, -0x18 3 | sw ra, 0x10 (sp) 4 | 5 | jal c_init 6 | nop 7 | 8 | ; Displaced code 9 | lui v0, 0x8012 10 | addiu v0, v0, 0xD2A0 11 | addiu t6, r0, 0x0140 12 | lui at, 0x8010 13 | sw t6, 0xE500 (at) 14 | addiu t7, r0, 0x00F0 15 | 16 | lw ra, 0x10 (sp) 17 | jr ra 18 | addiu sp, sp, 0x18 19 | 20 | 21 | Static_ctxt_Init: 22 | li t0, RANDO_CONTEXT 23 | sw t0, 0x15D4(v0) 24 | jr ra 25 | ; Displaced code 26 | li v0, 0x15C0 27 | -------------------------------------------------------------------------------- /ASM/src/items_as_adult.asm: -------------------------------------------------------------------------------- 1 | stick_as_adult: 2 | la t8, SAVE_CONTEXT 3 | lw t8, 0x04(t8) ; Link age 4 | bnez t8, @@return ; Return if child 5 | nop 6 | la t2, empty_dlist ; Load empty display list if adult 7 | @@return: 8 | addiu t8, v1, 0x0008 ; displaced code 9 | jr ra 10 | sw t8, 0x02C0(t7) ; displaced code 11 | 12 | masks_as_adult: 13 | la t7, SAVE_CONTEXT 14 | lw t7, 0x04(t7) ; Link age 15 | bnez t7, @@return ; Return if child 16 | nop 17 | la t6, empty_dlist ; Load empty display list if adult 18 | @@return: 19 | sw t6, 0x0004(v0) 20 | jr ra 21 | lb t7, 0x013F(s0) 22 | -------------------------------------------------------------------------------- /ASM/src/jabu_elevator.asm: -------------------------------------------------------------------------------- 1 | jabu_elevator: 2 | 3 | addiu sp, sp, -0x10 4 | sw t0, 0x00(sp) 5 | swc1 f2, 0x04(sp) 6 | swc1 f4, 0x08(sp) 7 | 8 | la t0, JABU_ELEVATOR_ENABLE 9 | lbu t0, 0x00(t0) 10 | beqz t0, @@return 11 | li t5, 0x0200 12 | 13 | lui t0, 0x801E 14 | addiu t0, 0xAA30 15 | 16 | lwc1 f2, 0x28(t0) ; links y 17 | lui t0, 0xC496 18 | mtc1 t0, f4 ; f4 = -1200 19 | nop 20 | c.lt.s f2, f4 21 | nop 22 | bc1t @@bottom 23 | nop 24 | li t5, 0x200 25 | b @@return 26 | nop 27 | 28 | @@bottom: 29 | li t5, 0xC0 30 | 31 | @@return: 32 | 33 | lwc1 f4, 0x08(sp) 34 | lwc1 f2, 0x04(sp) 35 | lw t0, 0x00(sp) 36 | jr ra 37 | addiu sp, sp, 0x10 38 | -------------------------------------------------------------------------------- /ASM/src/key_counter.asm: -------------------------------------------------------------------------------- 1 | move_key_icon: 2 | ; displaced code 3 | addiu t8, $zero, 0x00BE 4 | 5 | li s0, bk_display 6 | lw s0, 0x00 (s0) 7 | beqz s0, @@return_icon 8 | nop 9 | 10 | addiu t7, t7, 0x000E ; If BK icon is displayed, move X coordinate 11 | 12 | @@return_icon: 13 | jr ra 14 | nop 15 | 16 | move_key_counter: 17 | ; displaced code 18 | addiu t8, $zero, 0x00BE 19 | 20 | li s0, bk_display 21 | lw s0, 0x00 (s0) 22 | beqz s0, @@return_counter 23 | nop 24 | 25 | addiu s2, s2, 0x000E ; If BK icon is displayed, move X coordinate 26 | 27 | @@return_counter: 28 | jr ra 29 | nop 30 | -------------------------------------------------------------------------------- /ASM/src/link_anim.asm: -------------------------------------------------------------------------------- 1 | override_changelinkanimdefaultstop: 2 | addiu sp, sp, -0x28 3 | sw ra, 0x0024(sp) 4 | sw a0, 0x0028(sp) 5 | sw a1, 0x002C(sp) 6 | sw a2, 0x0030(sp) 7 | jal 0x8008A194 ;SkelAnime_GetFrameCount 8 | lw a0, 0x0030(sp) 9 | mtc1 v0, f4 10 | mtc1 zero, f0 11 | addiu t6, zero, 0x0002 12 | cvt.s.w f6, f4 13 | sw t6, 0x0018(sp) 14 | lw a0, 0x0028(sp) 15 | lw a1, 0x002C(sp) 16 | lw a2, 0x0030(sp) 17 | lui a3, 0x3F80 18 | 19 | li t0, 0x040032B0 20 | bne a2, t0, @@skip ;if next animation is heavy rock pickup, change speed 21 | nop 22 | lui a3, 0x4040 ;3.0f 23 | @@skip: 24 | swc1 f6, 0x0014(sp) 25 | swc1 f0, 0x0010(sp) 26 | jal 0x8008C000 ;SkelAnime_ChangeLinkAnim 27 | swc1 f0, 0x001C(sp) 28 | lw ra, 0x0024(sp) 29 | lw ra, 0x0024(sp) 30 | jr ra 31 | addiu sp, sp, 0x28 32 | -------------------------------------------------------------------------------- /ASM/src/macros.asm: -------------------------------------------------------------------------------- 1 | ;========================================================== 2 | ; Branch Macros 3 | ;========================================================== 4 | 5 | //allow branching to absolute file addresses 6 | 7 | .macro b_a, addr 8 | b (org() + addr - orga()) 9 | .endmacro 10 | 11 | .macro beqz_a, reg1, addr 12 | beqz reg1, (org() + addr - orga()) 13 | .endmacro 14 | 15 | .macro bnez_a, reg1, addr 16 | bnez reg1, (org() + addr - orga()) 17 | .endmacro 18 | 19 | .macro bne_a, reg1, reg2, addr 20 | bne reg1, reg2, (org() + addr - orga()) 21 | .endmacro 22 | 23 | .macro beq_a, reg1, reg2, addr 24 | beq reg1, reg2, (org() + addr - orga()) 25 | .endmacro 26 | 27 | .macro bnezl_a, reg1, addr 28 | bnezl reg1, (org() + addr - orga()) 29 | .endmacro 30 | -------------------------------------------------------------------------------- /ASM/src/mask_deequip.asm: -------------------------------------------------------------------------------- 1 | ; Check if equipped mask = item in child trade slot before de-equipping mask. 2 | mask_check_trade_slot: 3 | lui v1, 0x8012 ; Save Context pt. 1 4 | lbu t7, 0x014F(t0) ; Equipped Mask Param 5 | addiu v1, v1, 0xA5D0 ; Save Context pt. 2 6 | addiu t7, t7, 0x23 ; Add 0x23 to equipped mask param to get item number. 7 | lbu t8, 0x8B(v1) ; Item in Child Trade Slot 8 | nop 9 | beq t7, t8, @@return ; If they are equal, skip de-equipping the mask. 10 | nop 11 | jr ra 12 | sb zero, 0x014F(t0) ; De-equip Mask 13 | @@return: 14 | jr ra 15 | nop 16 | -------------------------------------------------------------------------------- /ASM/src/misc_colors.asm: -------------------------------------------------------------------------------- 1 | bombchu_back_color: 2 | addiu sp, sp, -0x18 3 | sw v0, 0x10(sp) 4 | sw ra, 0x14(sp) 5 | jal get_bombchu_back_color 6 | mov.s f12, f0 7 | move t5, v0 8 | lw v0, 0x10(sp) 9 | lw ra, 0x14(sp) 10 | jr ra 11 | addiu sp, sp, 0x18 12 | -------------------------------------------------------------------------------- /ASM/src/rand_seed.asm: -------------------------------------------------------------------------------- 1 | rand_seed_truth_spinner: 2 | addiu sp, sp, -0x20 3 | sw a0, 0x18(sp) 4 | sw ra, 0x1C(sp) 5 | 6 | jal Seeded_Rand_ZeroOne 7 | nop 8 | 9 | lw a0, 0x18(sp) 10 | lw ra, 0x1C(sp) 11 | jr ra 12 | addiu sp, sp, 0x20 13 | -------------------------------------------------------------------------------- /ASM/src/red_ice.asm: -------------------------------------------------------------------------------- 1 | red_ice_alpha: 2 | ; set initial red ice opacity 3 | ; a0 = red ice actor 4 | lw t0, CHEST_TEXTURE_MATCH_CONTENTS 5 | lw t1, CHEST_SIZE_MATCH_CONTENTS 6 | or t3, t0, t1 7 | lw t2, CHEST_SIZE_TEXTURE 8 | or t3, t3, t2 9 | beqz t3, @@return ; keep opaque if chest appearance matches contents is disabled 10 | li t7, 0xFF ; fully opaque by default 11 | lhu t0, 0x001C(a0) ; actor params 12 | andi t0, t0, 0x0700 ; red ice type 13 | beq t0, 0x0300, @@return ; keep type 3 (red ice wall) opaque 14 | nop 15 | ; make other types semitransparent 16 | li t7, 0x7F ; 50% opacity 17 | @@return: 18 | jr ra 19 | sh t7, 0x01F0(a0) 20 | -------------------------------------------------------------------------------- /ASM/src/save.asm: -------------------------------------------------------------------------------- 1 | open_save_hook: 2 | 3 | ; push the registers to the stack 4 | addiu sp, sp, -0x40 5 | sw ra, 0x00(sp) 6 | sw v0, 0x04(sp) 7 | sw v1, 0x08(sp) 8 | sw a0, 0x0C(sp) 9 | sw a1, 0x10(sp) 10 | sw a2, 0x14(sp) 11 | sw a3, 0x18(sp) 12 | sw s0, 0x1c(sp) 13 | sw s1, 0x20(sp) 14 | sw at, 0x24(sp) 15 | 16 | lw a0, 0x60(sp) ; get savecontext variable off the stack 17 | jal Save_Open 18 | lw a0, 0x00(a0) ; get the buffer pointer 19 | 20 | 21 | lw v0, 0x04(sp) 22 | lw v1, 0x08(sp) 23 | lw a0, 0x0C(sp) 24 | lw a1, 0x10(sp) 25 | lw a2, 0x14(sp) 26 | lw a3, 0x18(sp) 27 | lw s0, 0x1c(sp) 28 | lw s1, 0x20(sp) 29 | lw at, 0x24(sp) 30 | 31 | ; Replaced code 32 | jal 0x80057030 33 | addu A1, T9, A3 34 | 35 | lw ra, 0x00(sp) 36 | jr ra 37 | addiu sp, sp, 0x40 38 | -------------------------------------------------------------------------------- /ASM/src/shooting_gallery.asm: -------------------------------------------------------------------------------- 1 | shooting_gallery_init: 2 | li t0, SAVE_CONTEXT 3 | lw t2, 0x04(t0) ; Link's age 4 | 5 | beq t2, r0, @@adult 6 | lw t1, 0x00(t0) ; Entrance Idx 7 | 8 | @@child: 9 | li at, 0x003B ; Kakariko Shooting Gallery 10 | bne t1, at, @@return 11 | nop 12 | li t3, 0xC47A0000 ; -1000.0 13 | sw t3, 0x28(a0) ; Y-Position 14 | 15 | @@adult: 16 | li at, 0x0016D ; Market Shooting Gallery 17 | bne t1, at, @@return 18 | nop 19 | li t3, 0xC47A0000 ; -1000.0 20 | sw t3, 0x28(a0) ; Y-Position 21 | 22 | @@return: 23 | ; Displaced Code 24 | jr ra 25 | li t6, 0x0001 26 | -------------------------------------------------------------------------------- /ASM/src/timers.asm: -------------------------------------------------------------------------------- 1 | disable_trade_timers: 2 | sw r0, 0x753C(at) ; displaced 3 | lbu at, DISABLE_TIMERS 4 | beqz at, @@return 5 | la at, GLOBAL_CONTEXT 6 | lhu at, 0x1D2C(at) 7 | andi at, at, 0x00C0 ; temp switch flags 0x16 & 0x17 8 | bnez at, @@return ; don't disable timers during collapse sequence 9 | nop 10 | j 0x80073930 ; skip storing new timer state 11 | nop 12 | @@return: 13 | j 0x80073914 ; back to the normal code. 14 | nop 15 | -------------------------------------------------------------------------------- /ASM/src/volvagia.asm: -------------------------------------------------------------------------------- 1 | volvagia_flying_hitbox: 2 | 3 | ; Displaced code 4 | addiu a2, $zero, 0x0004 5 | andi t6, a1, 0x0002 6 | lb t7, 0x00AF(s0) ;this->actor.colChkInfo.health 7 | bnel t7, zero, @@return 8 | nop 9 | addiu t6, $zero, 0x0000 ;if volvagia has 0 health, cancel the collision check 10 | 11 | @@return: 12 | jr ra 13 | nop 14 | -------------------------------------------------------------------------------- /ASM/src/weather.asm: -------------------------------------------------------------------------------- 1 | //Change En_Weather_Tag to check for medallions 2 | .headersize (0x80AD7270 - 0xE570B0) 3 | 4 | //Weather Tag 4 (Cloudy, Fire Temple hasn't been beaten) 5 | .org 0x80AD7390 6 | .area 0x18, 0 7 | lui v1, hi(KAKARIKO_WEATHER_FORECAST) 8 | lbu t5, lo(KAKARIKO_WEATHER_FORECAST)(v1) 9 | li t4, 1 // Cloudy 10 | beq t5, t4, @tag4_skip_actor_kill 11 | nop 12 | .endarea 13 | // Fall into Actor Kill call 14 | 15 | .org 0x80AD73B0 16 | @tag4_skip_actor_kill: 17 | 18 | //Weather Tag 5 (Thunderstorm, Shadow Temple hasn't been completed) 19 | .org 0x80AD73C8 20 | .area 0x3C, 0 21 | lui v1, hi(KAKARIKO_WEATHER_FORECAST) 22 | lbu t5, lo(KAKARIKO_WEATHER_FORECAST)(v1) 23 | li t4, 2 // Thunderstorm 24 | beq t5, t4, @tag5_skip_actor_kill 25 | nop 26 | .endarea 27 | 28 | .org 0x80AD740C 29 | @tag5_skip_actor_kill: 30 | 31 | .headersize 0 32 | -------------------------------------------------------------------------------- /ASM/src/zelda.asm: -------------------------------------------------------------------------------- 1 | ;load zeldas current animation to check it 2 | ;also move link a little bit forward out of talk range 3 | zelda_check_anim: 4 | addiu a1, a1, 0x6F04 ;displaced, wait animation seg address 5 | lw t0, 0x144(a0) ;current animation 6 | beq t0, a1, @@return 7 | la t1, PLAYER_ACTOR 8 | li t2, 0x4469C000 ;935.0f 9 | li t3, 0xC3240000 ;-164.0f 10 | sw t2, 0x24(t1) ;x 11 | sw t3, 0x2C(t1) ;z 12 | @@return: 13 | jr ra 14 | nop 15 | -------------------------------------------------------------------------------- /ASM/tools/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/ASM/tools/.gitkeep -------------------------------------------------------------------------------- /GUI/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | 15 | [*.js] 16 | indent_size = 4 -------------------------------------------------------------------------------- /GUI/.eslintignore.json: -------------------------------------------------------------------------------- 1 | *package.json 2 | package-lock.json 3 | dist 4 | e2e/** 5 | karma.conf.js 6 | commitlint.config.js* 7 | -------------------------------------------------------------------------------- /GUI/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /bin 5 | /obj 6 | /dist 7 | /electron/dist 8 | /tmp 9 | /out-tsc 10 | /installer 11 | /python 12 | 13 | # dependencies 14 | /node_modules 15 | 16 | # profiling files 17 | chrome-profiler-events.json 18 | speed-measure-plugin.json 19 | 20 | # IDEs and editors 21 | /.idea 22 | .project 23 | .classpath 24 | .c9/ 25 | *.launch 26 | .settings/ 27 | *.sublime-workspace 28 | .vs 29 | 30 | # IDE - VSCode 31 | .vscode/* 32 | !.vscode/settings.json 33 | !.vscode/tasks.json 34 | !.vscode/launch.json 35 | !.vscode/extensions.json 36 | .history/* 37 | 38 | # IDE - VS 39 | *.sln 40 | *.njsproj 41 | 42 | # misc 43 | /.angular/cache 44 | /.sass-cache 45 | /connect.lock 46 | /coverage 47 | /libpeerconnection.log 48 | npm-debug.log 49 | yarn-error.log 50 | testem.log 51 | /typings 52 | *.bat 53 | 54 | # System Files 55 | .DS_Store 56 | Thumbs.db 57 | 58 | # Angular 59 | .angular 60 | -------------------------------------------------------------------------------- /GUI/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 -------------------------------------------------------------------------------- /GUI/build/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/build/icon.icns -------------------------------------------------------------------------------- /GUI/build/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/build/icon.png -------------------------------------------------------------------------------- /GUI/e2e/protractor.conf.js: -------------------------------------------------------------------------------- 1 | // Protractor configuration file, see link for more information 2 | // https://github.com/angular/protractor/blob/master/lib/config.ts 3 | 4 | const { SpecReporter } = require('jasmine-spec-reporter'); 5 | 6 | exports.config = { 7 | allScriptsTimeout: 11000, 8 | specs: [ 9 | './src/**/*.e2e-spec.ts' 10 | ], 11 | capabilities: { 12 | 'browserName': 'chrome' 13 | }, 14 | directConnect: true, 15 | baseUrl: 'http://localhost:4200/', 16 | framework: 'jasmine', 17 | jasmineNodeOpts: { 18 | showColors: true, 19 | defaultTimeoutInterval: 30000, 20 | print: function() {} 21 | }, 22 | onPrepare() { 23 | require('ts-node').register({ 24 | project: require('path').join(__dirname, './tsconfig.e2e.json') 25 | }); 26 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 27 | } 28 | }; -------------------------------------------------------------------------------- /GUI/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | import { browser, logging } from 'protractor'; 3 | 4 | describe('workspace-project App', () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | it('should display welcome message', () => { 12 | page.navigateTo(); 13 | expect(page.getTitleText()).toEqual('Welcome to ootr-electron-gui!'); 14 | }); 15 | 16 | afterEach(async () => { 17 | // Assert that there are no errors emitted from the browser 18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 19 | expect(logs).not.toContain(jasmine.objectContaining({ 20 | level: logging.Level.SEVERE, 21 | })); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /GUI/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('app-root h1')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /GUI/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /GUI/electron/src/assets/icon/mac/ootr_electron_icon3.png.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/electron/src/assets/icon/mac/ootr_electron_icon3.png.icns -------------------------------------------------------------------------------- /GUI/electron/src/assets/icon/png/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/electron/src/assets/icon/png/128x128.png -------------------------------------------------------------------------------- /GUI/electron/src/assets/icon/png/16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/electron/src/assets/icon/png/16x16.png -------------------------------------------------------------------------------- /GUI/electron/src/assets/icon/png/24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/electron/src/assets/icon/png/24x24.png -------------------------------------------------------------------------------- /GUI/electron/src/assets/icon/png/256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/electron/src/assets/icon/png/256x256.png -------------------------------------------------------------------------------- /GUI/electron/src/assets/icon/png/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/electron/src/assets/icon/png/32x32.png -------------------------------------------------------------------------------- /GUI/electron/src/assets/icon/png/48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/electron/src/assets/icon/png/48x48.png -------------------------------------------------------------------------------- /GUI/electron/src/assets/icon/png/512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/electron/src/assets/icon/png/512x512.png -------------------------------------------------------------------------------- /GUI/electron/src/assets/icon/png/64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/electron/src/assets/icon/png/64x64.png -------------------------------------------------------------------------------- /GUI/electron/src/assets/icon/png/96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/electron/src/assets/icon/png/96x96.png -------------------------------------------------------------------------------- /GUI/electron/src/assets/icon/win/ootr_electron_icon3.png.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/electron/src/assets/icon/win/ootr_electron_icon3.png.ico -------------------------------------------------------------------------------- /GUI/electron/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./src", 5 | "outDir": "./dist", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "module": "commonjs", 9 | "moduleResolution": "node", 10 | "emitDecoratorMetadata": true, 11 | "experimentalDecorators": true, 12 | "target": "es5", 13 | "typeRoots": ["node_modules/@types"], 14 | "types": [ 15 | "node" 16 | ], 17 | "lib": ["es2018", "dom"] 18 | } 19 | } -------------------------------------------------------------------------------- /GUI/src/app/@theme/components/footer/footer.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../styles/themes'; 2 | @import '@nebular/theme/styles/global/breakpoints'; 3 | 4 | @include nb-install-component() { 5 | width: 100%; 6 | display: flex; 7 | justify-content: space-between; 8 | align-items: center; 9 | 10 | .socials { 11 | font-size: 28px; 12 | 13 | a { 14 | padding: 5.6px; 15 | color: nb-theme(color-success-600); 16 | transition: color ease-out 0.1s; 17 | 18 | &:hover { 19 | color: nb-theme(color-basic-1100); 20 | } 21 | } 22 | } 23 | 24 | span { 25 | a#updateButton { 26 | color: nb-theme(color-warning-600); 27 | } 28 | } 29 | 30 | @include media-breakpoint-down(is) { 31 | .socials { 32 | font-size: 21px; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /GUI/src/app/@theme/components/header/img/X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/app/@theme/components/header/img/X.png -------------------------------------------------------------------------------- /GUI/src/app/@theme/components/header/img/headerIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/app/@theme/components/header/img/headerIcon.png -------------------------------------------------------------------------------- /GUI/src/app/@theme/components/header/img/max.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/app/@theme/components/header/img/max.png -------------------------------------------------------------------------------- /GUI/src/app/@theme/components/header/img/min.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/app/@theme/components/header/img/min.png -------------------------------------------------------------------------------- /GUI/src/app/@theme/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './header/header.component'; 2 | export * from './footer/footer.component'; 3 | -------------------------------------------------------------------------------- /GUI/src/app/@theme/directives/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/app/@theme/directives/.gitkeep -------------------------------------------------------------------------------- /GUI/src/app/@theme/layouts/index.ts: -------------------------------------------------------------------------------- 1 | export * from './GUI/gui.layout'; 2 | -------------------------------------------------------------------------------- /GUI/src/app/@theme/pipes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/app/@theme/pipes/.gitkeep -------------------------------------------------------------------------------- /GUI/src/app/@theme/styles/pace.theme.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Copyright Akveo. All Rights Reserved. 4 | * Licensed under the MIT License. See License.txt in the project root for license information. 5 | */ 6 | 7 | @mixin ngx-pace-theme() { 8 | 9 | .pace .pace-progress { 10 | background: nb-theme(text-hint-color); 11 | } 12 | 13 | .pace .pace-progress-inner { 14 | box-shadow: 0 0 10px nb-theme(text-hint-color), 0 0 5px nb-theme(text-hint-color); 15 | } 16 | 17 | .pace .pace-activity { 18 | display: none; 19 | border-top-color: nb-theme(text-hint-color); 20 | border-left-color: nb-theme(text-hint-color); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /GUI/src/app/@theme/styles/themes.scss: -------------------------------------------------------------------------------- 1 | @forward '@nebular/theme/styles/theming'; 2 | @use '@nebular/theme/styles/theming' as *; 3 | @use '@nebular/theme/styles/themes/default'; 4 | 5 | @import "theme.ootr-default"; 6 | @import "theme.ootr-dark"; 7 | 8 | $nb-enabled-themes: (ootr-default, ootr-dark); 9 | -------------------------------------------------------------------------------- /GUI/src/app/app-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { ExtraOptions, RouterModule, Routes } from '@angular/router'; 2 | import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 3 | 4 | const routes: Routes = [ 5 | { path: 'pages', loadChildren: () => import('./pages/pages.module').then(m => m.PagesModule) }, 6 | { path: '', redirectTo: 'pages', pathMatch: 'full' }, 7 | { path: '**', redirectTo: 'pages' }, 8 | ]; 9 | 10 | const config: ExtraOptions = { 11 | useHash: true, 12 | initialNavigation: 'disabled', //Route manually at the start to avoid URL changes in the browser 13 | relativeLinkResolution: 'legacy' 14 | }; 15 | 16 | @NgModule({ 17 | imports: [ 18 | RouterModule.forRoot(routes, config) 19 | ], 20 | exports: [RouterModule], 21 | schemas: [ 22 | CUSTOM_ELEMENTS_SCHEMA 23 | ], 24 | }) 25 | export class AppRoutingModule { 26 | } 27 | -------------------------------------------------------------------------------- /GUI/src/app/pages/generator/confirmationWindow/confirmationWindow.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../app/@theme/styles/themes'; 2 | 3 | @include nb-install-component() { 4 | ::ng-deep { 5 | .confirmation-window { 6 | margin-left: auto; 7 | margin-right: auto; 8 | width: 90%; 9 | 10 | .headerButton { 11 | float: right; 12 | margin-top: -10px; 13 | margin-right: -10px; 14 | } 15 | 16 | .footerButtonWrapper { 17 | text-align: center; 18 | } 19 | 20 | button + button { 21 | margin-left: 14px; 22 | } 23 | } 24 | 25 | @media (min-width: 560px) { 26 | .confirmation-window { 27 | width: 532px; 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /GUI/src/app/pages/generator/dialogWindow/dialogWindow.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../app/@theme/styles/themes'; 2 | 3 | @include nb-install-component() { 4 | ::ng-deep { 5 | .dialog-window { 6 | margin-left: auto; 7 | margin-right: auto; 8 | width: 90%; 9 | 10 | .headerButton { 11 | float: right; 12 | margin-top: -10px; 13 | margin-right: -10px; 14 | } 15 | 16 | .footerButtonWrapper { 17 | text-align: center; 18 | } 19 | 20 | button + button { 21 | margin-left: 14px; 22 | } 23 | } 24 | 25 | @media (min-width: 560px) { 26 | .dialog-window { 27 | width: 532px; 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /GUI/src/app/pages/generator/progressWindow/progressWindow.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../app/@theme/styles/themes'; 2 | 3 | @include nb-install-component() { 4 | ::ng-deep { 5 | .progress-window { 6 | margin-left: auto; 7 | margin-right: auto; 8 | width: 90%; 9 | 10 | .headerButton { 11 | float: right; 12 | margin-top: -10px; 13 | margin-right: -10px; 14 | } 15 | 16 | .footerButtonWrapper { 17 | margin-top: 18px; 18 | text-align: center; 19 | } 20 | 21 | button + button { 22 | margin-left: 14px; 23 | } 24 | } 25 | 26 | @media (min-width: 560px) { 27 | .progress-window { 28 | width: 532px; 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /GUI/src/app/pages/generator/textInputWindow/textInputWindow.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../app/@theme/styles/themes'; 2 | 3 | @include nb-install-component() { 4 | ::ng-deep { 5 | .textInput-window { 6 | margin-left: auto; 7 | margin-right: auto; 8 | width: 90%; 9 | 10 | .headerButton { 11 | float: right; 12 | margin-top: -10px; 13 | margin-right: -10px; 14 | } 15 | 16 | .textInput { 17 | position: relative; 18 | left: 0px; 19 | width: 100%; 20 | text-align: left; 21 | padding-left: 5.25px !important; 22 | margin-right: 14px !important; 23 | } 24 | 25 | .footerButtonWrapper { 26 | text-align: center; 27 | } 28 | 29 | button + button { 30 | margin-left: 14px; 31 | } 32 | } 33 | 34 | @media (min-width: 560px) { 35 | .textInput-window { 36 | width: 532px; 37 | } 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /GUI/src/app/pages/pages-menu.ts: -------------------------------------------------------------------------------- 1 | import { NbMenuItem } from '@nebular/theme'; 2 | 3 | export const MENU_ITEMS: NbMenuItem[] = [ 4 | { 5 | title: 'Generator', 6 | icon: 'nb-home', // TODO Check maybe remove nb 7 | link: '/pages/generator', 8 | home: true, 9 | } 10 | ]; 11 | -------------------------------------------------------------------------------- /GUI/src/app/pages/pages-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { RouterModule, Routes } from '@angular/router'; 2 | import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; 3 | 4 | import { PagesComponent } from './pages.component'; 5 | import { GeneratorComponent } from './generator/generator.component'; 6 | 7 | const routes: Routes = [{ 8 | path: '', 9 | component: PagesComponent, 10 | children: [ 11 | { 12 | path: 'generator', 13 | component: GeneratorComponent, 14 | }, 15 | { 16 | path: '', 17 | redirectTo: 'generator', 18 | pathMatch: 'full', 19 | }, 20 | ], 21 | }]; 22 | 23 | @NgModule({ 24 | imports: [RouterModule.forChild(routes)], 25 | exports: [RouterModule], 26 | schemas: [ 27 | CUSTOM_ELEMENTS_SCHEMA 28 | ] 29 | }) 30 | export class PagesRoutingModule { 31 | } 32 | -------------------------------------------------------------------------------- /GUI/src/app/pages/pages.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { MENU_ITEMS } from './pages-menu'; 3 | 4 | @Component({ 5 | selector: 'ootr-ngx-pages', 6 | template: ` 7 | 8 | 9 | 10 | `, 11 | }) 12 | export class PagesComponent { 13 | menu = MENU_ITEMS; 14 | } 15 | -------------------------------------------------------------------------------- /GUI/src/app/pages/pages.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | 3 | import { PagesComponent } from './pages.component'; 4 | import { GeneratorModule } from './generator/generator.module'; 5 | import { PagesRoutingModule } from './pages-routing.module'; 6 | import { ThemeModule } from '../@theme/theme.module'; 7 | 8 | const PAGES_COMPONENTS = [ 9 | PagesComponent 10 | ]; 11 | 12 | @NgModule({ 13 | imports: [ 14 | PagesRoutingModule, 15 | ThemeModule, 16 | GeneratorModule 17 | ], 18 | declarations: [ 19 | ...PAGES_COMPONENTS, 20 | ], 21 | }) 22 | export class PagesModule { 23 | } 24 | -------------------------------------------------------------------------------- /GUI/src/app/providers/GuiEvent.ts: -------------------------------------------------------------------------------- 1 | export type GuiEvent = { 2 | name: string; 3 | message?: string; 4 | version?: string; 5 | branchUrl?: string; 6 | } 7 | -------------------------------------------------------------------------------- /GUI/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/assets/.gitkeep -------------------------------------------------------------------------------- /GUI/src/assets/img/X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/assets/img/X.png -------------------------------------------------------------------------------- /GUI/src/assets/img/headerIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/assets/img/headerIcon.png -------------------------------------------------------------------------------- /GUI/src/assets/img/max.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/assets/img/max.png -------------------------------------------------------------------------------- /GUI/src/assets/img/min.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/assets/img/min.png -------------------------------------------------------------------------------- /GUI/src/assets/img/moon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /GUI/src/assets/img/notMax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/assets/img/notMax.png -------------------------------------------------------------------------------- /GUI/src/environments/environment.hmr.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: false, 3 | hmr: true 4 | }; 5 | -------------------------------------------------------------------------------- /GUI/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | hmr: false 4 | }; 5 | -------------------------------------------------------------------------------- /GUI/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false, 7 | hmr: false 8 | }; 9 | 10 | /* 11 | * For easier debugging in development mode, you can import the following file 12 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 13 | * 14 | * This import should be commented out in production mode because it will have a negative impact 15 | * on performance if an error is thrown. 16 | */ 17 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. 18 | -------------------------------------------------------------------------------- /GUI/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/favicon.ico -------------------------------------------------------------------------------- /GUI/src/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/src/favicon.png -------------------------------------------------------------------------------- /GUI/src/hmr.ts: -------------------------------------------------------------------------------- 1 | import { NgModuleRef, ApplicationRef } from '@angular/core'; 2 | import { createNewHosts } from '@angularclass/hmr'; 3 | 4 | export const hmrBootstrap = (module: any, bootstrap: () => Promise>) => { 5 | let ngModule: NgModuleRef; 6 | module.hot.accept(); 7 | bootstrap().then(mod => ngModule = mod); 8 | module.hot.dispose(() => { 9 | const appRef: ApplicationRef = ngModule.injector.get(ApplicationRef); 10 | const elements = appRef.components.map(c => c.location.nativeElement); 11 | const makeVisible = createNewHosts(elements); 12 | ngModule.destroy(); 13 | makeVisible(); 14 | }); 15 | }; 16 | -------------------------------------------------------------------------------- /GUI/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | import { hmrBootstrap } from './hmr'; 8 | 9 | if (environment.production || !environment.hmr) { 10 | enableProdMode(); 11 | } 12 | 13 | const bootstrap = () => platformBrowserDynamic().bootstrapModule(AppModule); 14 | 15 | if (environment.hmr) { 16 | if (module['hot']) { 17 | hmrBootstrap(module, bootstrap); 18 | } else { 19 | console.error('HMR is not enabled for webpack-dev-server!'); 20 | console.log('Are you using the --hmr flag for ng serve?'); 21 | } 22 | } else { 23 | bootstrap().catch(err => console.error(err)); 24 | } 25 | -------------------------------------------------------------------------------- /GUI/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting(), { 16 | teardown: { destroyAfterEach: false } 17 | } 18 | ); 19 | // Then we find all the tests. 20 | const context = require.context('./', true, /\.spec\.ts$/); 21 | // And load the modules. 22 | context.keys().map(context); 23 | -------------------------------------------------------------------------------- /GUI/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [ "node" ] 6 | }, 7 | "files": [ 8 | "main.ts", 9 | "polyfills.ts" 10 | ], 11 | "include": [ 12 | "src/**/*.d.ts" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /GUI/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /GUI/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "downlevelIteration": true, 6 | "outDir": "./dist/out-tsc", 7 | "sourceMap": true, 8 | "declaration": false, 9 | "module": "esnext", 10 | "moduleResolution": "node", 11 | "emitDecoratorMetadata": true, 12 | "experimentalDecorators": true, 13 | "importHelpers": true, 14 | "target": "es2020", 15 | "allowJs": true, 16 | "typeRoots": [ 17 | "node_modules/@types" 18 | ], 19 | "lib": [ 20 | "es2018", 21 | "dom" 22 | ] 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /GUI/webTest/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # settings map 4 | /settingsParser/settings_list.json 5 | 6 | # angular dist 7 | /public/angular 8 | 9 | # dependencies 10 | /node_modules 11 | 12 | # profiling files 13 | chrome-profiler-events.json 14 | speed-measure-plugin.json 15 | 16 | # IDEs and editors 17 | /.idea 18 | .project 19 | .classpath 20 | .c9/ 21 | *.launch 22 | .settings/ 23 | *.sublime-workspace 24 | 25 | # IDE - VSCode 26 | .vscode/* 27 | !.vscode/settings.json 28 | !.vscode/tasks.json 29 | !.vscode/launch.json 30 | !.vscode/extensions.json 31 | .history/* 32 | 33 | # misc 34 | /.sass-cache 35 | /connect.lock 36 | /coverage 37 | /libpeerconnection.log 38 | npm-debug.log 39 | yarn-error.log 40 | testem.log 41 | /typings 42 | 43 | # System Files 44 | .DS_Store 45 | Thumbs.db 46 | 47 | # package-lock.json 48 | package-lock.json 49 | -------------------------------------------------------------------------------- /GUI/webTest/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "testServer", 3 | "version": "1.0.0", 4 | "main": "server.js", 5 | "dependencies": { 6 | "del": "^3.0.0", 7 | "express": "^5.0.0-alpha.7", 8 | "fs-extra": "^8.1.0", 9 | "http": "^0.0.0", 10 | "make-dir": "^3.0.0", 11 | "open": "^6.4.0" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /GUI/webTest/public/img/countdown_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/GUI/webTest/public/img/countdown_logo.png -------------------------------------------------------------------------------- /GUI/webTest/public/js/settingsGUI.js: -------------------------------------------------------------------------------- 1 | //Spoiler Handling 2 | $(".spoiler-trigger").click(function() { 3 | $(this).parent().next().collapse('toggle'); 4 | }); 5 | 6 | //Footer only showing if scrolled down at least 95% 7 | $(window).scroll(function() { 8 | ($(document).scrollTop() + $(window).height()) / $(document).height() > 0.95 ? $('#footer').fadeIn() : $('#footer').fadeOut(); 9 | }); -------------------------------------------------------------------------------- /GUI/webTest/settingsParser/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "settingsParser", 3 | "description": "", 4 | "version": "1.0.0", 5 | "author": "Marwin Misselhorn", 6 | "main": "index.js", 7 | "private": true, 8 | "dependencies": {} 9 | } 10 | -------------------------------------------------------------------------------- /Notes/Chest Textures/.gitignore: -------------------------------------------------------------------------------- 1 | *.bin -------------------------------------------------------------------------------- /Notes/Chest Textures/Front Base Texture Format.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/Notes/Chest Textures/Front Base Texture Format.png -------------------------------------------------------------------------------- /Notes/Chest Textures/Side Base Texture Format.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/Notes/Chest Textures/Side Base Texture Format.png -------------------------------------------------------------------------------- /Notes/Chest Textures/diff_bytes.py: -------------------------------------------------------------------------------- 1 | # new texture, vanilla texture, num bytes 2 | textures = [('silver_chest_front.bin', 'oot_chest_front.bin', 4096), 3 | ('silver_chest_base.bin', 'oot_chest_base.bin', 2048), 4 | ('gilded_chest_front.bin', 'oot_chest_front.bin', 4096), 5 | ('gilded_chest_base.bin', 'oot_chest_base.bin', 2048), 6 | ('skull_chest_front.bin', 'oot_chest_front.bin', 4096), 7 | ('skull_chest_base.bin', 'oot_chest_base.bin', 2048)] 8 | 9 | for new_tex, vanilla_tex, numbytes in textures: 10 | with open(vanilla_tex, 'rb') as v: 11 | vb = v.read() 12 | with open(new_tex, 'rb') as n: 13 | nb = n.read() 14 | diff_tex = bytearray(numbytes) 15 | for index in range(len(vb)): 16 | diff_tex[index] = (nb[index] - vb[index]) & 0xFF 17 | with open(new_tex, 'wb') as nw: 18 | nw.write(diff_tex) -------------------------------------------------------------------------------- /Notes/Chest Textures/extract_wooden_chest_textures.py: -------------------------------------------------------------------------------- 1 | with open('../../ZOOTDEC.z64', 'rb') as rom: 2 | rom.seek(0xFEC798, 0) 3 | front = rom.read(4096) 4 | base = rom.read(2048) 5 | with open('oot_chest_front.bin', 'wb') as front_file: 6 | front_file.write(front) 7 | with open('oot_chest_base.bin', 'wb') as base_file: 8 | base_file.write(base) -------------------------------------------------------------------------------- /Notes/Chest Textures/rgba5551topng/README.md: -------------------------------------------------------------------------------- 1 | # rgba5551topng 2 | Utility for converting raw rgba5551 pixel data to an image. 3 | 4 | This version is built for Ubuntu 20.04 5 | 6 | Original + source: https://github.com/krimtonz/rgba5551topng 7 | 8 | # Compiling 9 | libpng required for compiling 10 | 11 | # Usage 12 | rga5551topng 13 | 14 | -i input file (Raw binary data to read from...must be width * height * 2 bytes long 15 | 16 | -o output file (Output png file) 17 | 18 | -w width in pixels 19 | 20 | -h height in pixels 21 | 22 | -b set this flag if input file is in big endian format. 23 | 24 | -------------------------------------------------------------------------------- /Notes/Chest Textures/rgba5551topng/rgba5551topng: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/Notes/Chest Textures/rgba5551topng/rgba5551topng -------------------------------------------------------------------------------- /Notes/OoT10table.txt: -------------------------------------------------------------------------------- 1 | [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 942, 944, 946, 948, 950, 952, 954, 956, 958, 960, 962, 964, 966, 968, 970, 972, 974, 976, 978, 980, 982, 984, 986, 988, 990, 992, 994, 996, 998, 1000, 1002, 1004, 1508, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525] -------------------------------------------------------------------------------- /Notes/asm-hack-guide.md: -------------------------------------------------------------------------------- 1 | 1. Find the actor in [SceneNavi](https://github.com/xdanieldzd/SceneNavi/releases/latest) 2 | 2. Look up Actor Type as Id on to find actor name 3 | 3. Find actor name with underscores removed in [decomp](https://github.com/zeldaret/oot) 4 | 4. Identify a function call to replace 5 | 5. Use [Ghidra 9.2](https://github.com/NationalSecurityAgency/ghidra/releases/tag/Ghidra_9.2_build) with [Zelda64Loader](https://github.com/Random06457/Zelda64Loader) to find the address of the function call 6 | 6. For function calls within the same overlay, remove the relocation table entry 7 | -------------------------------------------------------------------------------- /Notes/message_table_notes.txt: -------------------------------------------------------------------------------- 1 | Message_FindMessage (debug) -> func_800D6A90 (1.0 EN) / func_800D69EC (1.0 JP) 2 | save context + 0x2200 = play->msgCtx.font 3 | line 12279 in data.s in disassembly 4 | 80112E34 = pointer to JP table (8010A94C) line 10152 5 | 80112E38 = pointer to EN table (8010EA8C) line 11196 6 | credit table? 80112CAC line 12254 7 | findmessage called near lbl_800DCB60 (JP) / lbl_800DCC04 (EN) 8 | 9 | text ID FFFC hard-coded offsets for JP file in func_8005BD78 / Font_LoadOrderedFont in kanfont.s / z_kanfont.c 10 | DMA request needs to be modified to point to EN file if FFFC relocated there 11 | a3 = 0803A150 change to actual FFFC offset, modify segment to 07 if in EN file 12 | t6 = 08000000 change to 07000000 if FFFC in EN file 13 | t7 = 0803A340 change to actual FFFD offset, modify segment to 07 if in EN file (used for FFFC length) 14 | t8 = 008EB000 change to 0092D000 for start of file pointer 15 | 16 | 17 | -------------------------------------------------------------------------------- /RulesCommon.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | import re 3 | from typing import TYPE_CHECKING, Protocol, Any 4 | 5 | if TYPE_CHECKING: 6 | from State import State 7 | 8 | 9 | class AccessRule(Protocol): 10 | def __call__(self, state: State, **kwargs) -> bool: 11 | ... 12 | 13 | 14 | # Variable names and values used by rule execution, 15 | # will be automatically filled by Items 16 | allowed_globals: dict[str, Any] = {} 17 | 18 | 19 | _escape: re.Pattern[str] = re.compile(r'[\'()[\]-]') 20 | 21 | 22 | def escape_name(name: str) -> str: 23 | return _escape.sub('', name.replace(' ', '_')) 24 | -------------------------------------------------------------------------------- /bin/Compress/Compress: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Compress/Compress -------------------------------------------------------------------------------- /bin/Compress/Compress.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Compress/Compress.exe -------------------------------------------------------------------------------- /bin/Compress/Compress.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Compress/Compress.out -------------------------------------------------------------------------------- /bin/Compress/Compress32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Compress/Compress32.exe -------------------------------------------------------------------------------- /bin/Compress/Compress_ARM32: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Compress/Compress_ARM32 -------------------------------------------------------------------------------- /bin/Compress/Compress_ARM64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Compress/Compress_ARM64 -------------------------------------------------------------------------------- /bin/Compress/Compress_ARM64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Compress/Compress_ARM64.exe -------------------------------------------------------------------------------- /bin/Compress/Compress_ARM64.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Compress/Compress_ARM64.out -------------------------------------------------------------------------------- /bin/Compress/src/bSwap.h: -------------------------------------------------------------------------------- 1 | #ifndef BSWAP_H 2 | #define BSWAP_H 3 | 4 | #include 5 | 6 | uint32_t bSwap32(uint32_t a) 7 | { 8 | return( (a & 0x000000FF) << 24 | 9 | (a & 0x0000FF00) << 8 | 10 | (a & 0x00FF0000) >> 8 | 11 | (a & 0xFF000000) >> 24 ); 12 | } 13 | 14 | uint16_t bSwap16(uint16_t a) 15 | { 16 | return( (a & 0x00FF) << 8 | 17 | (a & 0xFF00) >> 8 ); 18 | } 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /bin/Decompress/Decompress: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Decompress/Decompress -------------------------------------------------------------------------------- /bin/Decompress/Decompress.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Decompress/Decompress.exe -------------------------------------------------------------------------------- /bin/Decompress/Decompress.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Decompress/Decompress.out -------------------------------------------------------------------------------- /bin/Decompress/Decompress32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Decompress/Decompress32.exe -------------------------------------------------------------------------------- /bin/Decompress/Decompress_ARM32: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Decompress/Decompress_ARM32 -------------------------------------------------------------------------------- /bin/Decompress/Decompress_ARM64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Decompress/Decompress_ARM64 -------------------------------------------------------------------------------- /bin/Decompress/Decompress_ARM64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Decompress/Decompress_ARM64.exe -------------------------------------------------------------------------------- /bin/Decompress/Decompress_ARM64.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/Decompress/Decompress_ARM64.out -------------------------------------------------------------------------------- /bin/Decompress/src/bSwap.h: -------------------------------------------------------------------------------- 1 | #ifndef BSWAP_H 2 | #define BSWAP_H 3 | 4 | #include 5 | 6 | #if BYTE_ORDER == LITTLE_ENDIAN 7 | #define bSwap32(x) _bSwap32(x) 8 | #define bSwap16(x) _bSwap16(x) 9 | 10 | #elif BYTE_ORDER == BIG_ENDIAN 11 | #define bSwap32(x) (x) 12 | #define bSwap16(x) (x) 13 | 14 | #endif 15 | 16 | uint32_t _bSwap32(uint32_t a) 17 | { 18 | return( (a & 0x000000FF) << 24 | 19 | (a & 0x0000FF00) << 8 | 20 | (a & 0x00FF0000) >> 8 | 21 | (a & 0xFF000000) >> 24 ); 22 | } 23 | 24 | uint16_t _bSwap16(uint16_t a) 25 | { 26 | return( (a & 0x00FF) << 8 | 27 | (a & 0xFF00) >> 8 ); 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /bin/Decompress/src/makefile: -------------------------------------------------------------------------------- 1 | # Windows gets Decompress.exe and Decompress32.exe 2 | # MacOS gets Decompress.out (it doesn't support 32 bit programs) 3 | # Linux gets Decompress 4 | 5 | ifeq ($(OS), Windows_NT) 6 | EXECUTABLES = Decompress.exe Decompress32.exe 7 | else 8 | UNAME_S = $(shell uname -s) 9 | ifeq ($(UNAME_S), Darwin) 10 | EXECUTABLES = Decompress.out 11 | endif 12 | 13 | ifeq ($(UNAME_S), Linux) 14 | EXECUTABLES = Decompress 15 | endif 16 | endif 17 | 18 | all: $(EXECUTABLES) 19 | 20 | .SUFFIXES: .c 21 | Decompress.exe: decompressor.c 22 | gcc -s -O3 -o $@ $^ 23 | 24 | .SUFFIXES: .c 25 | Decompress32.exe: decompressor.c 26 | gcc -s -O3 -m32 -o $@ $^ 27 | 28 | .SUFFIXES: .c 29 | Decompress.out: decompressor.c 30 | gcc -O3 -o $@ $^ 31 | 32 | .SUFFIXES: .c 33 | Decompress: decompressor.c 34 | gcc -s -O3 -o $@ $^ 35 | -------------------------------------------------------------------------------- /bin/gzinject/gzinject: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/gzinject/gzinject -------------------------------------------------------------------------------- /bin/gzinject/gzinject.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/gzinject/gzinject.exe -------------------------------------------------------------------------------- /bin/gzinject/gzinject.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/gzinject/gzinject.out -------------------------------------------------------------------------------- /bin/gzinject/gzinject32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/gzinject/gzinject32.exe -------------------------------------------------------------------------------- /bin/gzinject/gzinject_ARM32: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/gzinject/gzinject_ARM32 -------------------------------------------------------------------------------- /bin/gzinject/gzinject_ARM64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/gzinject/gzinject_ARM64 -------------------------------------------------------------------------------- /bin/gzinject/gzinject_ARM64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/gzinject/gzinject_ARM64.exe -------------------------------------------------------------------------------- /bin/gzinject/gzinject_ARM64.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/gzinject/gzinject_ARM64.out -------------------------------------------------------------------------------- /bin/minibsdiff/minibsdiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/minibsdiff/minibsdiff -------------------------------------------------------------------------------- /bin/minibsdiff/minibsdiff.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/minibsdiff/minibsdiff.exe -------------------------------------------------------------------------------- /bin/minibsdiff/minibsdiff.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/minibsdiff/minibsdiff.out -------------------------------------------------------------------------------- /bin/minibsdiff/minibsdiff32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/minibsdiff/minibsdiff32.exe -------------------------------------------------------------------------------- /bin/minibsdiff/minibsdiff_ARM32: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/minibsdiff/minibsdiff_ARM32 -------------------------------------------------------------------------------- /bin/minibsdiff/minibsdiff_ARM64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/minibsdiff/minibsdiff_ARM64 -------------------------------------------------------------------------------- /bin/minibsdiff/minibsdiff_ARM64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/minibsdiff/minibsdiff_ARM64.exe -------------------------------------------------------------------------------- /bin/minibsdiff/minibsdiff_ARM64.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/bin/minibsdiff/minibsdiff_ARM64.out -------------------------------------------------------------------------------- /data/Bingo/bingosync_bingo_hints.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bingosyncURL": "", 4 | "item_hints": [] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /data/Bingo/generic_bingo_hints.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_hints": [ 4 | "Progressive Hookshot", 5 | "Bow", 6 | "Bomb Bag", 7 | "Progressive Strength Upgrade", 8 | "Progressive Strength Upgrade", 9 | "Bottle", 10 | "Magic Meter", 11 | "Boomerang", 12 | "Megaton Hammer", 13 | "Mirror Shield", 14 | "Iron Boots", 15 | "Hover Boots", 16 | "Zeldas Lullaby" 17 | ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /data/Glitched World/Bosses.json: -------------------------------------------------------------------------------- 1 | { 2 | # This is a placeholder until Glitch 2.0 logic happens and boss shuffle is supported by it. 3 | } 4 | -------------------------------------------------------------------------------- /data/Models/Adult/Constants/postconstants.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Models/Adult/Constants/postconstants.zobj -------------------------------------------------------------------------------- /data/Models/Adult/Constants/preconstants.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Models/Adult/Constants/preconstants.zobj -------------------------------------------------------------------------------- /data/Models/Child/Constants/postconstants.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Models/Child/Constants/postconstants.zobj -------------------------------------------------------------------------------- /data/Models/Child/Constants/preconstants.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Models/Child/Constants/preconstants.zobj -------------------------------------------------------------------------------- /data/Music/.gitignore: -------------------------------------------------------------------------------- 1 | **/*.seq 2 | **/*.meta 3 | **/*.ootrs 4 | -------------------------------------------------------------------------------- /data/Presets/.gitignore: -------------------------------------------------------------------------------- 1 | # Custom Presets 2 | *.custom.json 3 | * 4 | -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0000.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0000.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0001.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0001.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0002.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0002.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0003.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0003.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0004.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0004.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0005.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0005.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0006.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0006.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0007.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0007.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0008.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0008.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0009.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0009.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-000A.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-000A.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-000B.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-000B.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-000C.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-000C.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-000D.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-000D.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-000E.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-000E.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-000F.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-000F.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0010.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0010.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0011.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0011.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0012.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0012.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0013.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0013.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0015.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0015.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0016.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0016.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0017.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0017.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0018.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0018.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0019.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0019.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-001A.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-001A.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-001B.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-001B.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0037.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0037.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0038.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0038.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-003C.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-003C.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-003D.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-003D.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-004D.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-004D.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-004E.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-004E.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-004F.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-004F.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0050.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0050.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0051.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0051.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0052.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0052.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0053.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0053.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0054.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0054.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0055.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0055.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0056.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0056.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0057.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0057.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0058.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0058.bin -------------------------------------------------------------------------------- /data/Voices/Adult/Feminine/00-0086.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Adult/Feminine/00-0086.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0014.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0014.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-001C.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-001C.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-001D.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-001D.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-001E.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-001E.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-001F.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-001F.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0020.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0020.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0021.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0021.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0022.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0022.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0023.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0023.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0024.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0024.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0025.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0025.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0026.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0026.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0027.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0027.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0028.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0028.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0029.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0029.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-002A.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-002A.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-002B.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-002B.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-002C.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-002C.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-002D.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-002D.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-002E.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-002E.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-002F.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-002F.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0030.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0030.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0031.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0031.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0032.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0032.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0034.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0034.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0035.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0035.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0036.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0036.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-003E.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-003E.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-003F.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-003F.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0040.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0040.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0041.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0041.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0042.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0042.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0043.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0043.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0045.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0045.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0047.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0047.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0048.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0048.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0049.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0049.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-004A.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-004A.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-004B.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-004B.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-004C.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-004C.bin -------------------------------------------------------------------------------- /data/Voices/Child/Feminine/00-0087.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/Child/Feminine/00-0087.bin -------------------------------------------------------------------------------- /data/Voices/SilentVoiceSFX.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/Voices/SilentVoiceSFX.bin -------------------------------------------------------------------------------- /data/blue_fire_arrow_item_name_eng.ia4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/blue_fire_arrow_item_name_eng.ia4 -------------------------------------------------------------------------------- /data/custom_music_exclusion.txt: -------------------------------------------------------------------------------- 1 | # To omit a track from shuffled music, list the filename of its 2 | # .meta file below. One per line 3 | # Lines that begin with # are comments and not parsed 4 | -------------------------------------------------------------------------------- /data/generated/.gitignore: -------------------------------------------------------------------------------- 1 | settings_list.json -------------------------------------------------------------------------------- /data/icons/belt.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/icons/belt.tiff -------------------------------------------------------------------------------- /data/icons/grey.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/icons/grey.tiff -------------------------------------------------------------------------------- /data/icons/magicLargeExtras.raw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/icons/magicLargeExtras.raw -------------------------------------------------------------------------------- /data/icons/magicSmallExtras.raw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/icons/magicSmallExtras.raw -------------------------------------------------------------------------------- /data/items/A_Button.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/A_Button.zobj -------------------------------------------------------------------------------- /data/items/BossFire.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/BossFire.zobj -------------------------------------------------------------------------------- /data/items/BossForest.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/BossForest.zobj -------------------------------------------------------------------------------- /data/items/BossShadow.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/BossShadow.zobj -------------------------------------------------------------------------------- /data/items/BossSpirit.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/BossSpirit.zobj -------------------------------------------------------------------------------- /data/items/BossWater.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/BossWater.zobj -------------------------------------------------------------------------------- /data/items/C_Button_Horizontal.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/C_Button_Horizontal.zobj -------------------------------------------------------------------------------- /data/items/C_Button_Vertical.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/C_Button_Vertical.zobj -------------------------------------------------------------------------------- /data/items/ChuBag.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/ChuBag.zobj -------------------------------------------------------------------------------- /data/items/KeyRing.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/KeyRing.zobj -------------------------------------------------------------------------------- /data/items/MagicMeter.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/MagicMeter.zobj -------------------------------------------------------------------------------- /data/items/MagicMeter2.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/MagicMeter2.zobj -------------------------------------------------------------------------------- /data/items/Note.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/Note.zobj -------------------------------------------------------------------------------- /data/items/SmallFire.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/SmallFire.zobj -------------------------------------------------------------------------------- /data/items/SmallForest.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/SmallForest.zobj -------------------------------------------------------------------------------- /data/items/SmallGTG.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/SmallGTG.zobj -------------------------------------------------------------------------------- /data/items/SmallGTG_Aks.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/SmallGTG_Aks.zobj -------------------------------------------------------------------------------- /data/items/SmallGanon.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/SmallGanon.zobj -------------------------------------------------------------------------------- /data/items/SmallShadow.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/SmallShadow.zobj -------------------------------------------------------------------------------- /data/items/SmallSpirit.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/SmallSpirit.zobj -------------------------------------------------------------------------------- /data/items/SmallTCG.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/SmallTCG.zobj -------------------------------------------------------------------------------- /data/items/SmallThieves.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/SmallThieves.zobj -------------------------------------------------------------------------------- /data/items/SmallWater.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/SmallWater.zobj -------------------------------------------------------------------------------- /data/items/SmallWell.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/SmallWell.zobj -------------------------------------------------------------------------------- /data/items/Triforce.zobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/items/Triforce.zobj -------------------------------------------------------------------------------- /data/keaton.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/keaton.bin -------------------------------------------------------------------------------- /data/textures/chest/chest_base_gilded_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/chest/chest_base_gilded_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/chest/chest_base_heart_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/chest/chest_base_heart_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/chest/chest_base_silver_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/chest/chest_base_silver_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/chest/chest_base_skull_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/chest/chest_base_skull_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/chest/chest_front_gilded_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/chest/chest_front_gilded_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/chest/chest_front_heart_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/chest/chest_front_heart_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/chest/chest_front_silver_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/chest/chest_front_silver_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/chest/chest_front_skull_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/chest/chest_front_skull_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/crate/crate_bosskey_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/crate/crate_bosskey_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/crate/crate_gold_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/crate/crate_gold_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/crate/crate_heart_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/crate/crate_heart_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/crate/crate_key_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/crate/crate_key_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/crate/crate_skull_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/crate/crate_skull_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/crate/smallcrate_bosskey_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/crate/smallcrate_bosskey_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/crate/smallcrate_gold_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/crate/smallcrate_gold_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/crate/smallcrate_heart_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/crate/smallcrate_heart_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/crate/smallcrate_key_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/crate/smallcrate_key_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/crate/smallcrate_skull_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/crate/smallcrate_skull_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/pot/pot_bosskey_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/pot/pot_bosskey_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/pot/pot_gold_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/pot/pot_gold_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/pot/pot_key_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/pot/pot_key_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/pot/pot_side_heart_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/pot/pot_side_heart_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/pot/pot_skull_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/pot/pot_skull_rgba16_patch.bin -------------------------------------------------------------------------------- /data/textures/pot/pot_top_heart_rgba16_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/textures/pot/pot_top_heart_rgba16_patch.bin -------------------------------------------------------------------------------- /data/title.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fenhl/OoT-Randomizer/a793235b57a79996a096b6cf8451778fd2c15423/data/title.bin -------------------------------------------------------------------------------- /dmaTable.dat: -------------------------------------------------------------------------------- 1 | 0 1 2 3 4 5 6 7 8 9 15 16 17 18 19 20 21 22 23 24 25 26 942 944 946 948 950 952 954 956 958 960 962 964 966 968 970 972 974 976 978 980 982 984 986 988 990 992 994 996 998 1000 1002 1004 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 -------------------------------------------------------------------------------- /tests/README.md: -------------------------------------------------------------------------------- 1 | Files in this directory that end in `.sav` will be used by Unittest.py 2 | as json settings files to run spoiler generation unittests. 3 | -------------------------------------------------------------------------------- /tests/cfairy.dist: -------------------------------------------------------------------------------- 1 | { 2 | "entrances": { 3 | "Desert Colossus -> Colossus Great Fairy Fountain": "LH Lab" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /tests/odd-stones.sav: -------------------------------------------------------------------------------- 1 | { 2 | "create_spoiler": true, 3 | "create_patch_file": false, 4 | "create_compressed_rom": false, 5 | "create_wad_file": false, 6 | "create_uncompressed_rom": false, 7 | "trials": 4, 8 | "hints": "always", 9 | "hint_dist": "tournament" 10 | } 11 | -------------------------------------------------------------------------------- /tests/plando/custom-ice-traps-count.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "junk_ice_traps": "custom_count", 4 | "custom_ice_trap_count": 50 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /tests/plando/custom-ice-traps-percent-triforce-hunt.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "triforce_hunt": true, 4 | "shuffle_pots": "all", 5 | "triforce_count_per_world": 100, 6 | "triforce_goal_per_world": 50, 7 | "junk_ice_traps": "custom_percent", 8 | "custom_ice_trap_percent": 75 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /tests/plando/custom-ice-traps-percent.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "junk_ice_traps": "custom_percent", 4 | "custom_ice_trap_percent": 75 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /tests/plando/disabled-song-location.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "disabled_locations": [ 4 | "Song from Ocarina of Time" 5 | ] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-all-dungeon-er.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "minimal", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "song", 10 | "empty_dungeons_mode": "specific", 11 | "empty_dungeons_specific": [ 12 | "Deku Tree", 13 | "Dodongos Cavern", 14 | "Jabu Jabus Belly", 15 | "Forest Temple", 16 | "Fire Temple", 17 | "Water Temple", 18 | "Shadow Temple", 19 | "Spirit Temple" 20 | ], 21 | "shuffle_dungeon_entrances": "simple" 22 | } 23 | } -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-all-mq-all.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "minimal", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "song", 10 | "mq_dungeons_mode": "mq", 11 | "empty_dungeons_mode": "specific", 12 | "empty_dungeons_specific": [ 13 | "Deku Tree", 14 | "Dodongos Cavern", 15 | "Jabu Jabus Belly", 16 | "Forest Temple", 17 | "Fire Temple", 18 | "Water Temple", 19 | "Shadow Temple", 20 | "Spirit Temple" 21 | ] 22 | } 23 | } -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-all-plentiful.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "plentiful", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "song", 10 | "empty_dungeons_mode": "specific", 11 | "empty_dungeons_specific": [ 12 | "Deku Tree", 13 | "Dodongos Cavern", 14 | "Jabu Jabus Belly", 15 | "Forest Temple", 16 | "Fire Temple", 17 | "Water Temple", 18 | "Shadow Temple", 19 | "Spirit Temple" 20 | ], 21 | "starting_inventory": [ 22 | "zeldas_letter" 23 | ] 24 | } 25 | } -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-all-songs-dungeon.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "minimal", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "dungeon", 10 | "empty_dungeons_mode": "specific", 11 | "empty_dungeons_specific": [ 12 | "Deku Tree", 13 | "Dodongos Cavern", 14 | "Jabu Jabus Belly", 15 | "Forest Temple", 16 | "Fire Temple", 17 | "Water Temple", 18 | "Shadow Temple", 19 | "Spirit Temple" 20 | ], 21 | "starting_inventory": [ 22 | "zeldas_letter" 23 | ] 24 | } 25 | } -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-half-boss-shuffle.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "minimal", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "song", 10 | "empty_dungeons_mode": "count", 11 | "empty_dungeons_count": 4, 12 | "shuffle_bosses": "off" 13 | } 14 | } -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-half-dungeon-er.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "minimal", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "song", 10 | "empty_dungeons_mode": "count", 11 | "empty_dungeons_count": 4, 12 | "shuffle_dungeon_entrances": "simple" 13 | } 14 | } -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-half-dungeon-item-any-dungeon.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "minimal", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "song", 10 | "empty_dungeons_mode": "count", 11 | "empty_dungeons_count": 4, 12 | "shuffle_mapcompass": "any_dungeon", 13 | "shuffle_smallkeys": "any_dungeon", 14 | "shuffle_bosskeys": "any_dungeon" 15 | } 16 | } -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-half-dungeon-item-anywhere.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "minimal", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "song", 10 | "empty_dungeons_mode": "count", 11 | "empty_dungeons_count": 4, 12 | "shuffle_mapcompass": "keysanity", 13 | "shuffle_smallkeys": "keysanity", 14 | "shuffle_bosskeys": "keysanity" 15 | } 16 | } -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-half-dungeon-item-remove.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "minimal", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "song", 10 | "empty_dungeons_mode": "count", 11 | "empty_dungeons_count": 4, 12 | "shuffle_mapcompass": "remove", 13 | "shuffle_smallkeys": "remove", 14 | "shuffle_bosskeys": "remove" 15 | } 16 | } -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-half-mq-all.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "minimal", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "song", 10 | "mq_dungeons_mode": "mq", 11 | "empty_dungeons_mode": "count", 12 | "empty_dungeons_count": 4 13 | } 14 | } -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-half-mq-random.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "minimal", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "song", 10 | "mq_dungeons_mode": "count", 11 | "mq_dungeons_count": 6, 12 | "empty_dungeons_mode": "count", 13 | "empty_dungeons_count": 4 14 | } 15 | } -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-half-plentiful.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "plentiful", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "song", 10 | "empty_dungeons_mode": "count", 11 | "empty_dungeons_count": 4, 12 | "starting_inventory": [ 13 | "zeldas_letter" 14 | ] 15 | } 16 | } -------------------------------------------------------------------------------- /tests/plando/empty-dungeons-half-songs-dungeon.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "bridge": "medallions", 4 | "bridge_medallions": 5, 5 | "shuffle_ganon_bosskey": "medallions", 6 | "ganon_bosskey_medallions": 6, 7 | "item_pool_value": "minimal", 8 | "shuffle_child_trade": [], 9 | "shuffle_song_items": "dungeon", 10 | "empty_dungeons_mode": "count", 11 | "empty_dungeons_count": 4, 12 | "starting_inventory": [ 13 | "zeldas_letter" 14 | ] 15 | } 16 | } -------------------------------------------------------------------------------- /tests/plando/empty.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /tests/plando/light-arrows-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "item_pool": { 3 | "Light Arrows": 3 4 | }, 5 | "locations": { 6 | "Ganons Tower Boss Key Chest": "Light Arrows" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tests/plando/light-arrows-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "create_spoiler": false, 4 | "patch_without_output": true, 5 | "create_patch_file": false, 6 | "create_compressed_rom": false, 7 | "create_wad_file": false, 8 | "create_uncompressed_rom": false 9 | }, 10 | "item_pool": { 11 | "Light Arrows": 3 12 | }, 13 | "locations": { 14 | "Ganons Tower Boss Key Chest": "Light Arrows" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /tests/plando/light-arrows-3.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "create_spoiler": false, 4 | "patch_without_output": true, 5 | "create_patch_file": false, 6 | "create_compressed_rom": false, 7 | "create_wad_file": false, 8 | "create_uncompressed_rom": false, 9 | "hints": "none" 10 | }, 11 | "item_pool": { 12 | "Light Arrows": 3 13 | }, 14 | "locations": { 15 | "Ganons Tower Boss Key Chest": "Light Arrows" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /tests/plando/negative-pattern-test.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shopsanity": "4" 4 | }, 5 | "locations": { 6 | "Kak 10 Gold Skulltula Reward": "!Gold Skulltula Token", 7 | "Kak 20 Gold Skulltula Reward": "!Gold Skulltula Token", 8 | "Kak 30 Gold Skulltula Reward": "!Gold Skulltula Token", 9 | "Kak 40 Gold Skulltula Reward": "!Gold Skulltula Token", 10 | "Kak 50 Gold Skulltula Reward": "!Gold Skulltula Token" 11 | } 12 | } -------------------------------------------------------------------------------- /tests/plando/no-ice-trap-pending-junk.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "triforce_hunt": true, 4 | "triforce_goal_per_world": 5, 5 | "junk_ice_traps": "off" 6 | }, 7 | "item_pool": { 8 | "Triforce Piece": 10 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/non-standard-visible-ice-traps.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_ocarinas": true 4 | }, 5 | "locations": { 6 | "Market Bombchu Bowling First Prize": "Ice Trap", 7 | "Market Bombchu Bowling Second Prize": "Ice Trap", 8 | "Market Treasure Chest Game Reward": "Ice Trap", 9 | "LH Sun": "Ice Trap", 10 | "LH Underwater Item": "Ice Trap", 11 | "HF Ocarina of Time Item": "Ice Trap" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /tests/plando/plando-adult-trade-item-group.json: -------------------------------------------------------------------------------- 1 | { 2 | "locations": { 3 | "KF Midos Top Left Chest": "#AdultTrade" 4 | } 5 | } -------------------------------------------------------------------------------- /tests/plando/plando-ammo-max-out-of-bounds.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "starting_items": { 4 | "Progressive Wallet": 100 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /tests/plando/plando-beehives.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_beehives": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /tests/plando/plando-blue-fire-arrows-hints.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_mapcompass": "startwith", 4 | "blue_fire_arrows": true, 5 | "zora_fountain": "open", 6 | "hint_dist": "tournament" 7 | }, 8 | "locations": { 9 | "Ice Cavern Map Chest": "#Bottle", 10 | "Ice Cavern Compass Chest": "#Bottle", 11 | "Ice Cavern Iron Boots Chest": "#Bottle", 12 | "Ice Cavern Freestanding PoH": "#Bottle", 13 | "Sheik in Ice Cavern": "Song of Storms", 14 | "Bottom of the Well Front Left Fake Wall Chest": "Light Arrows" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /tests/plando/plando-boss-list-adult.json: -------------------------------------------------------------------------------- 1 | { 2 | "locations": { 3 | "Phantom Ganon": ["Light Medallion", "Forest Medallion", "Fire Medallion", "Water Medallion", "Shadow Medallion", "Spirit Medallion"], 4 | "Volvagia": ["Light Medallion", "Forest Medallion", "Fire Medallion", "Water Medallion", "Shadow Medallion", "Spirit Medallion"], 5 | "Morpha": ["Light Medallion", "Forest Medallion", "Fire Medallion", "Water Medallion", "Shadow Medallion", "Spirit Medallion"], 6 | "Bongo Bongo": ["Light Medallion", "Forest Medallion", "Fire Medallion", "Water Medallion", "Shadow Medallion", "Spirit Medallion"], 7 | "Twinrova": ["Light Medallion", "Forest Medallion", "Fire Medallion", "Water Medallion", "Shadow Medallion", "Spirit Medallion"] 8 | } 9 | } -------------------------------------------------------------------------------- /tests/plando/plando-boss-list-child.json: -------------------------------------------------------------------------------- 1 | { 2 | "locations": { 3 | "Queen Gohma": ["Kokiri Emerald", "Goron Ruby", "Zora Sapphire"], 4 | "King Dodongo": ["Kokiri Emerald", "Goron Ruby", "Zora Sapphire"], 5 | "Barinade": ["Kokiri Emerald", "Goron Ruby", "Zora Sapphire"] 6 | } 7 | } -------------------------------------------------------------------------------- /tests/plando/plando-boss-list.json: -------------------------------------------------------------------------------- 1 | { 2 | "locations": { 3 | "Queen Gohma": ["Kokiri Emerald", "Goron Ruby", "Zora Sapphire"], 4 | "King Dodongo": ["Kokiri Emerald", "Goron Ruby", "Zora Sapphire"], 5 | "Barinade": ["Kokiri Emerald", "Goron Ruby", "Zora Sapphire"], 6 | "Phantom Ganon": ["Forest Medallion", "Fire Medallion", "Water Medallion"], 7 | "Volvagia": ["Forest Medallion", "Fire Medallion", "Water Medallion"], 8 | "Morpha": ["Forest Medallion", "Fire Medallion", "Water Medallion"], 9 | "Bongo Bongo": ["Shadow Medallion", "Spirit Medallion"], 10 | "Twinrova": ["Shadow Medallion", "Spirit Medallion"] 11 | } 12 | } -------------------------------------------------------------------------------- /tests/plando/plando-boss-shuffle-allmq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_bosses": "full", 4 | "mq_dungeons_mode": "mq" 5 | } 6 | } -------------------------------------------------------------------------------- /tests/plando/plando-boss-shuffle-limited-dungeon-shuffle.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_bosses": "limited", 4 | "shuffle_dungeon_entrances": "simple" 5 | } 6 | } -------------------------------------------------------------------------------- /tests/plando/plando-boss-shuffle-nomq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_bosses": "full", 4 | "mq_dungeons_mode": "vanilla" 5 | } 6 | } -------------------------------------------------------------------------------- /tests/plando/plando-bottle-item-group.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "zora_fountain": "open" 4 | }, 5 | "locations": { 6 | "KF Midos Top Left Chest": "#Bottle", 7 | "KF Midos Top Right Chest": "#Bottle", 8 | "KF Midos Bottom Left Chest": "#Bottle", 9 | "KF Midos Bottom Right Chest": "#Bottle" 10 | } 11 | } -------------------------------------------------------------------------------- /tests/plando/plando-change-triforce-piece-count.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "balanced", 4 | "triforce_hunt": true, 5 | "triforce_count_per_world": 60, 6 | "triforce_goal_per_world": 60, 7 | "shuffle_scrubs": "low" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tests/plando/plando-egg-not-shuffled-one-pool.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_child_trade": [] 4 | }, 5 | "item_pool": { 6 | "Weird Egg": 1 7 | } 8 | } -------------------------------------------------------------------------------- /tests/plando/plando-egg-not-shuffled-two-pool.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_child_trade": [] 4 | }, 5 | "item_pool": { 6 | "Weird Egg": 2 7 | } 8 | } -------------------------------------------------------------------------------- /tests/plando/plando-egg-shuffled-one-pool.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_child_trade": ["Weird Egg"] 4 | }, 5 | "item_pool": { 6 | "Weird Egg": 1 7 | } 8 | } -------------------------------------------------------------------------------- /tests/plando/plando-egg-shuffled-two-pool.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_child_trade": ["Weird Egg"] 4 | }, 5 | "item_pool": { 6 | "Weird Egg": 2 7 | } 8 | } -------------------------------------------------------------------------------- /tests/plando/plando-er-colossus-spawn-validity.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "logic_rules": "glitchless", 4 | "shuffle_interior_entrances": "off", 5 | "shuffle_overworld_entrances": false, 6 | "warp_songs": "off", 7 | "shuffle_child_spawn": "balanced", 8 | "shuffle_adult_spawn": "balanced", 9 | "starting_inventory": [ 10 | "ocarina" 11 | ], 12 | "starting_age": "adult" 13 | }, 14 | "entrances": { 15 | "Adult Spawn -> Temple of Time": {"region": "Desert Colossus", "from": "Colossus Great Fairy Fountain"} 16 | } 17 | } -------------------------------------------------------------------------------- /tests/plando/plando-excess-starting-items.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "starting_items": { 4 | "Mirror Shield": 100 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/plando/plando-fix-broken-drops-off.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "fix_broken_drops": false 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /tests/plando/plando-freestanding-allmq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_freestanding_items": "all", 4 | "mq_dungeons_mode": "mq" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /tests/plando/plando-freestanding-nomq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_freestanding_items": "all", 4 | "mq_dungeons_mode": "vanilla" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /tests/plando/plando-freestanding-pots-crates-beehives-triforcehunt.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_pots": "all", 4 | "shuffle_crates": "all", 5 | "shuffle_freestanding_items": "all", 6 | "shuffle_beehives": true, 7 | "triforce_hunt": true, 8 | "triforce_count_per_world": 200, 9 | "triforce_goal_per_world": 200 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/plando/plando-item-list-explicit.json: -------------------------------------------------------------------------------- 1 | { 2 | "locations": { 3 | "KF Midos Top Left Chest": {"item": ["Bow", "Light Arrows", "Magic Meter"]}, 4 | "KF Midos Top Right Chest": {"item": ["Bow", "Light Arrows", "Magic Meter"]}, 5 | "KF Midos Bottom Left Chest": {"item": ["Bow", "Light Arrows", "Magic Meter"]}, 6 | "KF Midos Bottom Right Chest": {"item": ["Bow", "Light Arrows", "Magic Meter"]} 7 | } 8 | } -------------------------------------------------------------------------------- /tests/plando/plando-item-list-implicit.json: -------------------------------------------------------------------------------- 1 | { 2 | "locations": { 3 | "KF Midos Top Left Chest": ["Bow", "Light Arrows", "Magic Meter"], 4 | "KF Midos Top Right Chest": ["Bow", "Light Arrows", "Magic Meter"], 5 | "KF Midos Bottom Left Chest": ["Bow", "Light Arrows", "Magic Meter"], 6 | "KF Midos Bottom Right Chest": ["Bow", "Light Arrows", "Magic Meter"] 7 | } 8 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-all-anydungeon-allmq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_smallkeys": "any_dungeon", 4 | "shuffle_hideoutkeys": "any_dungeon", 5 | "shuffle_tcgkeys": "any_dungeon", 6 | "key_rings": [ 7 | "Forest Temple", 8 | "Water Temple", 9 | "Ganons Castle", 10 | "Spirit Temple", 11 | "Thieves Hideout", 12 | "Fire Temple", 13 | "Shadow Temple", 14 | "Gerudo Training Ground", 15 | "Bottom of the Well", 16 | "Treasure Chest Game" 17 | ], 18 | "mq_dungeons_mode": "mq" 19 | } 20 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-all-anydungeon-halfmq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_smallkeys": "any_dungeon", 4 | "shuffle_hideoutkeys": "any_dungeon", 5 | "shuffle_tcgkeys": "any_dungeon", 6 | "key_rings": [ 7 | "Forest Temple", 8 | "Water Temple", 9 | "Ganons Castle", 10 | "Spirit Temple", 11 | "Thieves Hideout", 12 | "Fire Temple", 13 | "Shadow Temple", 14 | "Gerudo Training Ground", 15 | "Bottom of the Well", 16 | "Treasure Chest Game" 17 | ], 18 | "mq_dungeons_mode": "count", 19 | "mq_dungeons_count": 6 20 | } 21 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-all-anydungeon-nomq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_smallkeys": "any_dungeon", 4 | "shuffle_hideoutkeys": "any_dungeon", 5 | "shuffle_tcgkeys": "any_dungeon", 6 | "key_rings": [ 7 | "Forest Temple", 8 | "Water Temple", 9 | "Ganons Castle", 10 | "Spirit Temple", 11 | "Thieves Hideout", 12 | "Fire Temple", 13 | "Shadow Temple", 14 | "Gerudo Training Ground", 15 | "Bottom of the Well", 16 | "Treasure Chest Game" 17 | ], 18 | "mq_dungeons_mode": "vanilla" 19 | } 20 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-all-anywhere-allmq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_smallkeys": "keysanity", 4 | "shuffle_hideoutkeys": "keysanity", 5 | "shuffle_tcgkeys": "keysanity", 6 | "key_rings": [ 7 | "Forest Temple", 8 | "Water Temple", 9 | "Ganons Castle", 10 | "Spirit Temple", 11 | "Thieves Hideout", 12 | "Fire Temple", 13 | "Shadow Temple", 14 | "Gerudo Training Ground", 15 | "Bottom of the Well", 16 | "Treasure Chest Game" 17 | ], 18 | "mq_dungeons_mode": "mq" 19 | } 20 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-all-anywhere-halfmq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_smallkeys": "keysanity", 4 | "shuffle_hideoutkeys": "keysanity", 5 | "shuffle_tcgkeys": "keysanity", 6 | "key_rings": [ 7 | "Forest Temple", 8 | "Water Temple", 9 | "Ganons Castle", 10 | "Spirit Temple", 11 | "Thieves Hideout", 12 | "Fire Temple", 13 | "Shadow Temple", 14 | "Gerudo Training Ground", 15 | "Bottom of the Well", 16 | "Treasure Chest Game" 17 | ], 18 | "mq_dungeons_mode": "count", 19 | "mq_dungeons_count": 6 20 | } 21 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-all-anywhere-nomq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_smallkeys": "keysanity", 4 | "shuffle_hideoutkeys": "keysanity", 5 | "shuffle_tcgkeys": "keysanity", 6 | "key_rings": [ 7 | "Forest Temple", 8 | "Water Temple", 9 | "Ganons Castle", 10 | "Spirit Temple", 11 | "Thieves Hideout", 12 | "Fire Temple", 13 | "Shadow Temple", 14 | "Gerudo Training Ground", 15 | "Bottom of the Well", 16 | "Treasure Chest Game" 17 | ], 18 | "mq_dungeons_mode": "vanilla" 19 | } 20 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-all-dungeon-allmq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_smallkeys": "dungeon", 4 | "shuffle_hideoutkeys": "vanilla", 5 | "shuffle_tcgkeys": "overworld", 6 | "key_rings": [ 7 | "Forest Temple", 8 | "Water Temple", 9 | "Ganons Castle", 10 | "Spirit Temple", 11 | "Thieves Hideout", 12 | "Fire Temple", 13 | "Shadow Temple", 14 | "Gerudo Training Ground", 15 | "Bottom of the Well", 16 | "Treasure Chest Game" 17 | ], 18 | "mq_dungeons_mode": "mq" 19 | } 20 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-all-dungeon-halfmq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_smallkeys": "dungeon", 4 | "shuffle_hideoutkeys": "vanilla", 5 | "shuffle_tcgkeys": "regional", 6 | "key_rings": [ 7 | "Forest Temple", 8 | "Water Temple", 9 | "Ganons Castle", 10 | "Spirit Temple", 11 | "Thieves Hideout", 12 | "Fire Temple", 13 | "Shadow Temple", 14 | "Gerudo Training Ground", 15 | "Bottom of the Well", 16 | "Treasure Chest Game" 17 | ], 18 | "mq_dungeons_mode": "count", 19 | "mq_dungeons_count": 6 20 | } 21 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-all-dungeon-nomq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_smallkeys": "dungeon", 4 | "shuffle_hideoutkeys": "vanilla", 5 | "shuffle_tcgkeys": "overworld", 6 | "key_rings": [ 7 | "Forest Temple", 8 | "Water Temple", 9 | "Ganons Castle", 10 | "Spirit Temple", 11 | "Thieves Hideout", 12 | "Fire Temple", 13 | "Shadow Temple", 14 | "Gerudo Training Ground", 15 | "Bottom of the Well", 16 | "Treasure Chest Game" 17 | ], 18 | "mq_dungeons_mode": "vanilla" 19 | } 20 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-bosskey-forest-anywhere-balanced.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "balanced", 4 | "shuffle_smallkeys": "keysanity", 5 | "key_rings": [ 6 | "Forest Temple" 7 | ], 8 | "keyring_give_bk": true, 9 | "mq_dungeons_mode": "vanilla" 10 | } 11 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-bosskey-forest-anywhere-minimal.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "minimal", 4 | "shuffle_smallkeys": "keysanity", 5 | "key_rings": [ 6 | "Forest Temple" 7 | ], 8 | "keyring_give_bk": true, 9 | "mq_dungeons_mode": "vanilla" 10 | } 11 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-bosskey-forest-vanilla-plentiful.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "plentiful", 4 | "shuffle_smallkeys": "vanilla", 5 | "key_rings": [ 6 | "Forest Temple" 7 | ], 8 | "keyring_give_bk": true, 9 | "mq_dungeons_mode": "vanilla" 10 | } 11 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-bosskey-none-anywhere-ludicrous.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "ludicrous", 4 | "gerudo_fortress": "normal", 5 | "shuffle_smallkeys": "keysanity", 6 | "shuffle_hideoutkeys": "keysanity", 7 | "key_rings": [ 8 | ], 9 | "keyring_give_bk": true, 10 | "mq_dungeons_mode": "vanilla" 11 | } 12 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-bosskey-none-anywhere-plentiful.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "plentiful", 4 | "gerudo_fortress": "normal", 5 | "shuffle_smallkeys": "keysanity", 6 | "shuffle_hideoutkeys": "keysanity", 7 | "key_rings": [ 8 | ], 9 | "keyring_give_bk": true, 10 | "mq_dungeons_mode": "vanilla" 11 | } 12 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-forest-anywhere-balanced.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "balanced", 4 | "shuffle_smallkeys": "keysanity", 5 | "key_rings": [ 6 | "Forest Temple" 7 | ], 8 | "mq_dungeons_mode": "vanilla" 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-forest-anywhere-ludicrous.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "ludicrous", 4 | "shuffle_smallkeys": "keysanity", 5 | "key_rings": [ 6 | "Forest Temple" 7 | ], 8 | "mq_dungeons_mode": "vanilla", 9 | "misc_hints": [] 10 | } 11 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-forest-anywhere-minimal.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "minimal", 4 | "shuffle_smallkeys": "keysanity", 5 | "key_rings": [ 6 | "Forest Temple" 7 | ], 8 | "mq_dungeons_mode": "vanilla" 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-forest-anywhere-plentiful.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "plentiful", 4 | "shuffle_smallkeys": "keysanity", 5 | "key_rings": [ 6 | "Forest Temple" 7 | ], 8 | "mq_dungeons_mode": "vanilla" 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-forest-keysy-plentiful.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "plentiful", 4 | "shuffle_smallkeys": "remove", 5 | "key_rings": [ 6 | "Forest Temple" 7 | ], 8 | "mq_dungeons_mode": "vanilla" 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-forest-vanilla-plentiful.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "plentiful", 4 | "shuffle_smallkeys": "vanilla", 5 | "key_rings": [ 6 | "Forest Temple" 7 | ], 8 | "mq_dungeons_mode": "vanilla" 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-hideout-default-anywhere-balanced.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "balanced", 4 | "gerudo_fortress": "normal", 5 | "shuffle_hideoutkeys": "keysanity", 6 | "key_rings": [ 7 | "Thieves Hideout" 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-hideout-default-anywhere-plentiful.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "plentiful", 4 | "gerudo_fortress": "normal", 5 | "shuffle_hideoutkeys": "keysanity", 6 | "key_rings": [ 7 | "Thieves Hideout" 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-hideout-default-vanilla.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "balanced", 4 | "gerudo_fortress": "normal", 5 | "shuffle_hideoutkeys": "vanilla", 6 | "key_rings": [ 7 | "Thieves Hideout" 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-hideout-fast-anywhere-balanced.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "balanced", 4 | "gerudo_fortress": "fast", 5 | "shuffle_hideoutkeys": "keysanity", 6 | "key_rings": [ 7 | "Thieves Hideout" 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-hideout-fast-anywhere-plentiful.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "plentiful", 4 | "gerudo_fortress": "fast", 5 | "shuffle_hideoutkeys": "keysanity", 6 | "key_rings": [ 7 | "Thieves Hideout" 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-hideout-fast-vanilla.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "balanced", 4 | "gerudo_fortress": "fast", 5 | "shuffle_hideoutkeys": "vanilla", 6 | "key_rings": [ 7 | "Thieves Hideout" 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-hideout-open-plentiful.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "plentiful", 4 | "gerudo_fortress": "open", 5 | "key_rings": [ 6 | "Thieves Hideout" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-none-anywhere-ludicrous.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "ludicrous", 4 | "gerudo_fortress": "normal", 5 | "shuffle_smallkeys": "keysanity", 6 | "shuffle_hideoutkeys": "keysanity", 7 | "shuffle_tcgkeys": "keysanity", 8 | "key_rings": [ 9 | ], 10 | "mq_dungeons_mode": "vanilla" 11 | } 12 | } -------------------------------------------------------------------------------- /tests/plando/plando-keyrings-none-anywhere-plentiful.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "plentiful", 4 | "gerudo_fortress": "normal", 5 | "shuffle_smallkeys": "keysanity", 6 | "shuffle_hideoutkeys": "keysanity", 7 | "shuffle_tcgkeys": "keysanity", 8 | "key_rings": [ 9 | ], 10 | "mq_dungeons_mode": "vanilla" 11 | } 12 | } -------------------------------------------------------------------------------- /tests/plando/plando-list-exhaustion.json: -------------------------------------------------------------------------------- 1 | { 2 | "item_pool": { 3 | "Bow": 3, 4 | "Magic Meter": 2, 5 | "Light Arrows": 1 6 | }, 7 | "locations": { 8 | "HF Tektite Grotto Freestanding PoH": ["Bow", "Magic Meter", "Light Arrows"], 9 | "Kak Redead Grotto Chest": ["Bow", "Magic Meter", "Light Arrows"], 10 | "Kak Open Grotto Chest": ["Bow", "Magic Meter", "Light Arrows"], 11 | "DMT Storms Grotto Chest": ["Bow", "Magic Meter", "Light Arrows"], 12 | "DMC Upper Grotto Chest": ["Bow", "Magic Meter", "Light Arrows"], 13 | "ZR Open Grotto Chest": ["Bow", "Magic Meter", "Light Arrows"] 14 | } 15 | } -------------------------------------------------------------------------------- /tests/plando/plando-ludicrous-default.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "ludicrous" 4 | } 5 | } -------------------------------------------------------------------------------- /tests/plando/plando-ludicrous-junk-locations.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "ludicrous" 4 | }, 5 | "locations": { 6 | "LW Near Shortcuts Grotto Chest": "Rupees (5)" 7 | } 8 | } -------------------------------------------------------------------------------- /tests/plando/plando-ludicrous-skip-child-zelda.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "ludicrous", 4 | "shuffle_child_trade": [], 5 | "starting_inventory": [ 6 | "zeldas_letter" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /tests/plando/plando-ludicrous-starting-bottles.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "ludicrous", 4 | "starting_inventory": [ 5 | "bottle", 6 | "bottle2", 7 | "bottle3", 8 | "letter" 9 | ] 10 | } 11 | } -------------------------------------------------------------------------------- /tests/plando/plando-ludicrous-starting-hearts.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "starting_hearts": 20, 4 | "item_pool_value": "ludicrous" 5 | } 6 | } -------------------------------------------------------------------------------- /tests/plando/plando-new-placed-ice-traps.json: -------------------------------------------------------------------------------- 1 | { 2 | "item_pool": { 3 | "Ice Trap": 1 4 | }, 5 | "locations": { 6 | "GV Crate Freestanding PoH": "Ice Trap", 7 | "GV Chest": "Ice Trap" 8 | } 9 | } -------------------------------------------------------------------------------- /tests/plando/plando-num-adult-trade-item-bad.json: -------------------------------------------------------------------------------- 1 | { 2 | "locations": { 3 | "KF Midos Top Left Chest": "Pocket Egg", 4 | "KF Midos Top Right Chest": "Pocket Egg" 5 | } 6 | } -------------------------------------------------------------------------------- /tests/plando/plando-num-adult-trade-item-good.json: -------------------------------------------------------------------------------- 1 | { 2 | "locations": { 3 | "KF Midos Top Left Chest": "Pocket Egg" 4 | } 5 | } -------------------------------------------------------------------------------- /tests/plando/plando-num-bottles-fountain-closed-bad.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "zora_fountain": "closed" 4 | }, 5 | "locations": { 6 | "KF Midos Top Left Chest": "Bottle with Milk", 7 | "KF Midos Top Right Chest": "Bottle with Milk", 8 | "KF Midos Bottom Left Chest": "Bottle with Milk", 9 | "KF Midos Bottom Right Chest": "Bottle with Milk" 10 | } 11 | } -------------------------------------------------------------------------------- /tests/plando/plando-num-bottles-fountain-closed-good.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "zora_fountain": "closed" 4 | }, 5 | "locations": { 6 | "KF Midos Top Left Chest": "Bottle with Milk", 7 | "KF Midos Top Right Chest": "Bottle with Milk", 8 | "KF Midos Bottom Left Chest": "Bottle with Milk" 9 | } 10 | } -------------------------------------------------------------------------------- /tests/plando/plando-num-bottles-fountain-open-bad.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "zora_fountain": "open" 4 | }, 5 | "locations": { 6 | "KF Midos Top Left Chest": "Bottle with Milk", 7 | "KF Midos Top Right Chest": "Bottle with Milk", 8 | "KF Midos Bottom Left Chest": "Bottle with Milk", 9 | "KF Midos Bottom Right Chest": "Bottle with Milk", 10 | "LW Ocarina Memory Game": "Bottle with Milk" 11 | } 12 | } -------------------------------------------------------------------------------- /tests/plando/plando-num-bottles-fountain-open-good.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "zora_fountain": "open" 4 | }, 5 | "locations": { 6 | "KF Midos Top Left Chest": "Bottle with Milk", 7 | "KF Midos Top Right Chest": "Bottle with Milk", 8 | "KF Midos Bottom Left Chest": "Bottle with Milk", 9 | "KF Midos Bottom Right Chest": "Bottle with Milk" 10 | } 11 | } -------------------------------------------------------------------------------- /tests/plando/plando-num-weird-egg-item-bad.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_child_trade": [] 4 | }, 5 | "locations": { 6 | "KF Midos Top Left Chest": "Weird Egg" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tests/plando/plando-num-weird-egg-item-good.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_child_trade": ["Weird Egg"] 4 | }, 5 | "locations": { 6 | "KF Midos Top Left Chest": "Weird Egg" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /tests/plando/plando-potscrates-allmq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_pots": "all", 4 | "shuffle_crates": "all", 5 | "mq_dungeons_mode": "mq" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/plando/plando-potscrates-nomq.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_pots": "all", 4 | "shuffle_crates": "all", 5 | "mq_dungeons_mode": "vanilla" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tests/plando/plando-use-normal-triforce-piece-count.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "item_pool_value": "balanced", 4 | "triforce_hunt": true, 5 | "triforce_count_per_world": 120, 6 | "triforce_goal_per_world": 100, 7 | "shuffle_scrubs": "low", 8 | "starting_hearts": 20 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /tests/plando/skip-zelda.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "shuffle_child_trade": [], 4 | "tokensanity": "overworld", 5 | "hint_dist": "tournament", 6 | "disabled_locations": [ 7 | "HC Great Fairy Reward", 8 | "HC GS Storms Grotto", 9 | "HC GS Tree" 10 | ], 11 | "starting_inventory": [ 12 | "zeldas_letter" 13 | ] 14 | }, 15 | "locations": { 16 | "Song from Impa": "Requiem of Spirit", 17 | "Spirit Temple Child Bridge Chest": "Light Arrows" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/plando/those_pots_over_there.json: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "create_spoiler": true, 4 | "create_patch_file": false, 5 | "create_compressed_rom": false, 6 | "create_wad_file": false, 7 | "create_uncompressed_rom": false, 8 | "hints": "none", 9 | "shuffle_pots" : "all", 10 | "trials": 0 11 | }, 12 | "locations": { 13 | "Ganons Tower Pot 1": "Light Arrows" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /version.py: -------------------------------------------------------------------------------- 1 | __version__ = '8.3.15' 2 | 3 | # This is a supplemental version number for branches based off of main dev. 4 | supplementary_version = 1 5 | 6 | # Pick a unique identifier byte for your fork if you are intending to have a long-lasting branch. 7 | # This will be 0x00 for main releases and 0x01 for main dev. 8 | branch_identifier = 0xfe 9 | 10 | # URL to your branch on GitHub. 11 | branch_url = 'https://github.com/fenhl/OoT-Randomizer/tree/dev-fenhl' 12 | 13 | # This is named __version__ at the top for compatability with older versions trying to version check. 14 | base_version = __version__ 15 | 16 | # And finally, the completed version string. This is what is displayed and used for salting seeds. 17 | __version__ = f'{base_version} Fenhl-{supplementary_version}' 18 | --------------------------------------------------------------------------------