Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add autotracking support #123

Open
wants to merge 34 commits into
base: ootr
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
43aae1e
add autotracker support
coavins Oct 10, 2021
b219b81
expand accessibility for deku theater skull mask
coavins Oct 21, 2021
c58015e
make autotracker more testable
coavins Oct 24, 2021
ce08b5e
add unit tests for autotracker
coavins Oct 24, 2021
c3f63d5
fix child trade sequence to show nothing
coavins Oct 24, 2021
26d2852
fix indentation style
coavins Oct 25, 2021
f11f310
add unit tests for auto_checks.lua
coavins Oct 25, 2021
82f8060
Merge branch 'ootr' into autotracker-pr
coavins Oct 25, 2021
c4d32f3
catch up to branch 'ootr'
coavins Oct 20, 2021
a9535ff
move assert statements back into test bodies
coavins Oct 27, 2021
ba5c6ca
remove magic number
coavins Oct 27, 2021
2459434
autotracker: fix child trade sequence advancement
coavins Oct 27, 2021
88e4348
Merge branch 'autotracker' into autotracker-pr
coavins Oct 27, 2021
26c25ea
Merge branch 'ootr' into autotracker-pr
coavins Nov 20, 2021
f8f7ebb
move racemode setting into item grid
coavins Nov 20, 2021
f18d224
Merge branch 'autotracker' into autotracker-pr
coavins Nov 20, 2021
b2da847
don't allow race mode to be turned on
coavins Nov 21, 2021
beb8d89
update racemode icon
coavins Nov 21, 2021
42d103e
Merge branch 'autotracker' into autotracker-pr
coavins Nov 21, 2021
70e3589
move race mode implementation to master branch
coavins Nov 21, 2021
57f264a
Merge branch 'autotracker' into autotracker-pr
coavins Nov 21, 2021
d47f797
add newline at end of file
coavins Nov 21, 2021
3d53161
add newline at end of file
coavins Nov 21, 2021
0ee0f2d
Merge branch 'autotracker' into autotracker-pr
coavins Nov 21, 2021
cf4e32f
tweak icon
coavins Nov 21, 2021
5d1666c
Merge branch 'autotracker' into autotracker-pr
coavins Nov 21, 2021
51d614f
Merge commit '232ac1f6abb' into autotracker-pr
coavins Nov 28, 2021
a8747b7
use BEAN_PLANTING user setting
coavins Nov 28, 2021
26d4ff6
add big poes option
coavins Nov 28, 2021
2a567a8
Merge branch 'ootr' into autotracker-pr
coavins May 3, 2022
4ad17a7
fix dungeon rewards
coavins May 3, 2022
7d2c38a
revert zip file
coavins May 3, 2022
49147b6
add autotracking free scarecrow enabled
May 6, 2022
88b9cd1
Fix Market Potion Shop addresses
coavins May 7, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
add autotracker support
This commit adds autotracking to Hamsda's ZOOTR map and item tracker.
This work is based on codemann8's LTTP autotracking.lua script and takes
advantage of the Bizhawk connector.lua that is included with Emotracker.

This branch is tested and known to work great with the following:
* EmoTracker 2.3.8.14
* Hamsda commit 9b3285e
* BizHawk 2.3.0 (x64) commit af9d1db
* The bizhawk connector.lua included with aforementioned EmoTracker

Also works simultaneously with Archipelago! (ootMulti.lua 2021-09-11)

To enable autotracking, right-click the robot icon in the lower right
corner and select "SNES", then "Lua". You will also need to find the
connector.lua included with Emotracker and run it in Bizhawk.

It's always best to reset the tracker and ensure all of your settings
are configured correctly prior to activating the autotracker. It can
also be reactivated after you load your save file in EmoTracker.

Things that are currently autotracked:
* Inventory and quest items received
* Locations checked
* Dungeon bosses defeated
* Trade sequences progressed
* Keys received (for keysanity variants)

Things that are NOT autotracked:
* Master Quest dungeon checks
* Which prize is awarded by each dungeon
* Scarecrow's song state
* Captures for spawn and entrance randomizer
* At which song location each song was received

I couldn't have done this without this amazing list of offsets:
* https://github.com/RiptideSage/OoT-CompletedChecks

Thank you RiptideSage!

I also heavily referenced the following resources:
* https://docs.google.com
  /spreadsheets/d/1lh8JcUcuXg7GR4DTWMhmfk42Y0H6nJvUg-zRn8-8bPk
* https://tcrf.net
  /Proto:The_Legend_of_Zelda:_Ocarina_of_Time_Master_Quest/Event_Editor
* https://wiki.cloudmodding.com/oot/Save_Format
* https://wiki.cloudmodding.com/oot/Scene_Table/NTSC_1.0
* https://github.com/aliblong/zootr-autotracker
* https://cloudmodding.com/zelda/oot
* https://wiki.ootrandomizer.com/index.php?title=Editing_RAM

Things that should be reviewed prior to merging:

To enable autotracking within EmoTracker for this pack, the platform was
changed to "snes" in the manifest. I couldn't get the option to show up
without making this change, and I don't know if it has any side effects.

A proof-of-concept "race mode" toggle was added to demonstrate how users
might be encouraged to stay honest and obey community racing rules.
Autotracking is disabled while race mode is enabled.

A proof-of-concept big poe counter was also added to the settings to
allow the user to indicate how many are required. This was necessary in
order to automate the big poe turn-in check.

I renamed the 'Deku Scrubs / Sticks' location to remove the forward
slash because it was preventing lookup.

I also changed HC Malon's visibility rules to make her disappear
when the egg is placed into the inventory. This solved some issues
relating to the advancement of the trade sequence.

Wishlist for things I don't feel like working on:
* fix many location codes for entrance rando variants
* test composer grave song check when Song Locations is used
* figure out how to add MQ dungeon checks and status
* change the interface in an obvious way when not in race mode
* don't allow race mode to be restored after it was turned off
* track dungeon prizes when that information is known to the player
* track scarecrow song without giving away info player doesn't have yet
* rescue epona (no location for this on the tracker?)
* stop reading a scene if all checks in that scene are completed
  • Loading branch information
coavins committed Oct 21, 2021
commit 43aae1e0da1f8237f862fab3a5b6bbf1aae1c0cd
Binary file modified ootrando_overworldmap_hamsda.zip
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 27 additions & 0 deletions ootrando_overworldmap_hamsda/items/options.json
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,16 @@
"max_quantity": 6,
"initial_quantity": 6
},
{
"name": "Big Poes Required",
"type": "consumable",
"img": "images/bottle_bigpoe.png",
"codes": "setting_poes_amount",
"disabled_img_mods": "@enabled",
"max_quantity": 10,
"min_quantity": 1,
"initial_quantity": 10
},
{
"name": "Number of Trials",
"type": "consumable",
Expand Down Expand Up @@ -535,6 +545,23 @@
}
]
},
{
"name": "Race Mode",
"type": "progressive",
"allow_disabled": false,
"loop": true,
"stages": [
{
"img": "images/setting_racemode_on.png",
"codes": "setting_racemode,setting_racemode_on"
},
{
"img": "images/setting_racemode_off.png",
"codes": "setting_racemode,setting_racemode_off",
"inherit_codes": false
}
]
},
{
"name": "Nighttime Skulltulas Expect Sun's Song",
"type": "progressive",
Expand Down
4 changes: 2 additions & 2 deletions ootrando_overworldmap_hamsda/layouts/options.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"",
"",
"setting_merchants",
""
"setting_poes_amount"
],
[
"setting_bridge_amount",
Expand All @@ -62,7 +62,7 @@
"",
"",
"setting_lacs_amount",
""
"setting_racemode"
]
]
}
Expand Down
4 changes: 2 additions & 2 deletions ootrando_overworldmap_hamsda/layouts/options_entrance.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"setting_entrance_owl",
"",
"setting_merchants",
""
"setting_poes_amount"
],
[
"setting_bridge_amount",
Expand All @@ -69,7 +69,7 @@
"",
"",
"",
""
"setting_racemode"
]
]
}
Expand Down
5 changes: 3 additions & 2 deletions ootrando_overworldmap_hamsda/locations/overworld.json
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,7 @@
"short_name": "LW Deku Scrubs",
"sections": [
{
"name": "Deku Nuts / Deku Sticks",
"name": "Deku Nuts and Deku Sticks",
"access_rules": [
"$has_age|child,$can_child_attack",
"$has_age|child,nuts",
Expand Down Expand Up @@ -3777,7 +3777,8 @@
"$has_age|child"
],
"visibility_rules": [
"setting_zelda_off"
"setting_zelda_off,nokidtrade",
"setting_zelda_off,setting_shuffle_egg_yes"
],
"capture_item": true,
"item_count": 1
Expand Down
3 changes: 2 additions & 1 deletion ootrando_overworldmap_hamsda/manifest.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
{
"name": "OoT Randomizer - Map and Item Tracker",
"name": "OoT Randomizer - Map and Item Tracker (Autotracker)",
"game_name": "Ocarina of Time Randomizer",
"package_version": "3.6.0.0",
"package_uid": "ootrando_overworldmap_hamsda",
"platform": "snes",
"author": "Hamsda",
"variants": {
"standard": {
Expand Down
Loading