OoT: write data into autotracking context

useful for the client and autotrackers to gather data easily
This commit is contained in:
espeon65536 2022-05-25 22:39:54 -05:00 committed by Fabian Dill
parent 1c231b703a
commit ac87629550
4 changed files with 11803 additions and 11763 deletions

View File

@ -1781,6 +1781,35 @@ def patch_rom(world, rom):
save_context.equip_current_items(world.starting_age)
save_context.write_save_table(rom)
# Write data into AP autotracking context
rom.write_int32(rom.sym('DUNGEON_IS_MQ_ADDRESS'), rom.sym('cfg_dungeon_is_mq'))
rom.write_int32(rom.sym('DUNGEON_REWARDS_ADDRESS'), rom.sym('cfg_dungeon_rewards'))
rom.write_byte(rom.sym('BIG_POE_COUNT'), world.big_poe_count)
if world.enhance_map_compass:
rom.write_byte(rom.sym('ENHANCE_MAP_COMPASS'), 0x01)
if world.enhance_map_compass or world.misc_hints:
rom.write_byte(rom.sym('SHOW_DUNGEON_REWARDS'), 0x01)
if world.shuffle_smallkeys == 'remove':
rom.write_byte(rom.sym('SMALL_KEY_SHUFFLE'), 0x01)
elif world.shuffle_smallkeys in ['overworld', 'any_dungeon', 'keysanity']:
rom.write_byte(rom.sym('SMALL_KEY_SHUFFLE'), 0x02)
if world.shuffle_scrubs != 'off':
rom.write_byte(rom.sym('SHUFFLE_SCRUBS'), 0x01)
if world.open_forest == 'closed_deku':
rom.write_byte(rom.sym('OPEN_FOREST'), 0x01)
elif world.open_forest == 'closed':
rom.write_byte(rom.sym('OPEN_FOREST'), 0x02)
if world.zora_fountain == 'adult':
rom.write_byte(rom.sym('OPEN_FOUNTAIN'), 0x01)
elif world.zora_fountain == 'closed':
rom.write_byte(rom.sym('OPEN_FOUNTAIN'), 0x02)
rom.write_bytes(rom.sym('SHOP_SLOTS'), [
sum(f'{shop} Item {idx}' in world.shop_prices for idx in ('7', '5', '8', '6'))
for shop in ('KF Shop', 'Market Bazaar', 'Market Potion Shop', 'Market Bombchu Shop',
'Kak Bazaar', 'Kak Potion Shop', 'GC Shop', 'ZD Shop')
])
return rom

View File

@ -567,7 +567,7 @@ class OOTWorld(World):
self.fake_items.extend(item for item in self.itempool if item.index and self.is_major_item(item))
if self.ice_trap_appearance in ['junk_only', 'anything']:
self.fake_items.extend(item for item in self.itempool if
item.index and not self.type == 'Shop' and not self.is_major_item(item) and item.name != 'Ice Trap')
item.index and not item.type == 'Shop' and not self.is_major_item(item) and item.name != 'Ice Trap')
# Kill unreachable events that can't be gotten even with all items
# Make sure to only kill actual internal events, not in-game "events"

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,12 @@
{
"ADULT_INIT_ITEMS": "03481D3C",
"ADULT_VALID_ITEMS": "03481D44",
"ADULT_INIT_ITEMS": "03481D54",
"ADULT_VALID_ITEMS": "03481D5C",
"AP_PLAYER_NAME": "03480834",
"AUDIO_THREAD_INFO": "03482F98",
"AUDIO_THREAD_INFO_MEM_SIZE": "03482FB4",
"AUDIO_THREAD_INFO_MEM_START": "03482FB0",
"AUDIO_THREAD_MEM_START": "0348F310",
"AUDIO_THREAD_INFO": "03482FB0",
"AUDIO_THREAD_INFO_MEM_SIZE": "03482FCC",
"AUDIO_THREAD_INFO_MEM_START": "03482FC8",
"AUDIO_THREAD_MEM_START": "0348F330",
"BIG_POE_COUNT": "03480CEE",
"BOMBCHUS_IN_LOGIC": "03480CBC",
"CFG_A_BUTTON_COLOR": "03480854",
"CFG_A_NOTE_COLOR": "03480872",
@ -16,7 +17,7 @@
"CFG_B_BUTTON_COLOR": "0348085A",
"CFG_C_BUTTON_COLOR": "03480860",
"CFG_C_NOTE_COLOR": "03480878",
"CFG_DAMAGE_MULTIPLYER": "03482C88",
"CFG_DAMAGE_MULTIPLYER": "03482CA0",
"CFG_DISPLAY_DPAD": "0348088A",
"CFG_HEART_COLOR": "0348084E",
"CFG_MAGIC_COLOR": "03480848",
@ -36,151 +37,160 @@
"CFG_RAINBOW_SWORD_OUTER_ENABLED": "0348088C",
"CFG_SHOP_CURSOR_COLOR": "0348086C",
"CFG_TEXT_CURSOR_COLOR": "03480866",
"CHAIN_HBA_REWARDS": "03483928",
"CHEST_SIZE_MATCH_CONTENTS": "034826EC",
"COMPLETE_MASK_QUEST": "0348B585",
"CHAIN_HBA_REWARDS": "03483940",
"CHEST_SIZE_MATCH_CONTENTS": "03482704",
"COMPLETE_MASK_QUEST": "0348B5A5",
"COOP_CONTEXT": "03480020",
"COOP_VERSION": "03480020",
"COSMETIC_CONTEXT": "03480844",
"COSMETIC_FORMAT_VERSION": "03480844",
"CURRENT_GROTTO_ID": "03482E5A",
"CURRENT_GROTTO_ID": "03482E72",
"DEATH_LINK": "0348002A",
"DEBUG_OFFSET": "03482878",
"DEBUG_OFFSET": "03482890",
"DISABLE_TIMERS": "03480CDC",
"DPAD_TEXTURE": "0348DB08",
"DPAD_TEXTURE": "0348DB28",
"DUNGEONS_SHUFFLED": "03480CDD",
"DUNGEON_IS_MQ_ADDRESS": "03480CE0",
"DUNGEON_REWARDS_ADDRESS": "03480CE4",
"ENHANCE_MAP_COMPASS": "03480CE8",
"EXTENDED_OBJECT_TABLE": "03480C9C",
"EXTERN_DAMAGE_MULTIPLYER": "03482C89",
"EXTERN_DAMAGE_MULTIPLYER": "03482CA1",
"FAST_BUNNY_HOOD_ENABLED": "03480CDF",
"FAST_CHESTS": "03480CD6",
"FONT_TEXTURE": "0348C640",
"FONT_TEXTURE": "0348C660",
"FREE_SCARECROW_ENABLED": "03480CCC",
"GANON_BOSS_KEY_CONDITION": "0348B550",
"GANON_BOSS_KEY_CONDITION_COUNT": "0348B54E",
"GET_CHEST_OVERRIDE_WRAPPER": "034826F0",
"GET_ITEM_TRIGGERED": "03481408",
"GANON_BOSS_KEY_CONDITION": "0348B570",
"GANON_BOSS_KEY_CONDITION_COUNT": "0348B56E",
"GET_CHEST_OVERRIDE_WRAPPER": "03482708",
"GET_ITEM_TRIGGERED": "03481420",
"GOSSIP_HINT_CONDITION": "03480CC8",
"GROTTO_EXIT_LIST": "03482E18",
"GROTTO_LOAD_TABLE": "03482D94",
"GROTTO_EXIT_LIST": "03482E30",
"GROTTO_LOAD_TABLE": "03482DAC",
"INCOMING_ITEM": "03480028",
"INCOMING_PLAYER": "03480026",
"INITIAL_SAVE_DATA": "0348089C",
"JABU_ELEVATOR_ENABLE": "03480CD4",
"KAKARIKO_WEATHER_FORECAST": "0348B5A4",
"KAKARIKO_WEATHER_FORECAST": "0348B5C4",
"LACS_CONDITION": "03480CC4",
"LACS_CONDITION_COUNT": "03480CD2",
"MALON_GAVE_ICETRAP": "03483664",
"MALON_GAVE_ICETRAP": "0348367C",
"MALON_TEXT_ID": "03480CDB",
"MAX_RUPEES": "0348B587",
"MOVED_ADULT_KING_ZORA": "03482FD4",
"NO_ESCAPE_SEQUENCE": "0348B54C",
"MAX_RUPEES": "0348B5A7",
"MOVED_ADULT_KING_ZORA": "03482FEC",
"NO_ESCAPE_SEQUENCE": "0348B56C",
"OCARINAS_SHUFFLED": "03480CD5",
"OPEN_KAKARIKO": "0348B586",
"OPEN_FOREST": "03480CEC",
"OPEN_FOUNTAIN": "03480CED",
"OPEN_KAKARIKO": "0348B5A6",
"OUTGOING_ITEM": "03480030",
"OUTGOING_KEY": "0348002C",
"OUTGOING_PLAYER": "03480032",
"OVERWORLD_SHUFFLED": "03480CDE",
"PAYLOAD_END": "0348F310",
"PAYLOAD_END": "0348F330",
"PAYLOAD_START": "03480000",
"PLAYED_WARP_SONG": "0348120C",
"PLAYED_WARP_SONG": "03481224",
"PLAYER_ID": "03480024",
"PLAYER_NAMES": "03480034",
"PLAYER_NAME_ID": "03480025",
"RAINBOW_BRIDGE_CONDITION": "03480CC0",
"RAINBOW_BRIDGE_COUNT": "03480CD0",
"RANDO_CONTEXT": "03480000",
"SHUFFLE_BEANS": "03482CF0",
"SHUFFLE_CARPET_SALESMAN": "034839E0",
"SHOP_SLOTS": "03480CEF",
"SHOW_DUNGEON_REWARDS": "03480CE9",
"SHUFFLE_BEANS": "03482D08",
"SHUFFLE_CARPET_SALESMAN": "034839F8",
"SHUFFLE_COWS": "03480CD7",
"SHUFFLE_MEDIGORON": "03483A3C",
"SHUFFLE_MEDIGORON": "03483A54",
"SHUFFLE_SCRUBS": "03480CEB",
"SMALL_KEY_SHUFFLE": "03480CEA",
"SONGS_AS_ITEMS": "03480CD8",
"SOS_ITEM_GIVEN": "034814D4",
"SPEED_MULTIPLIER": "03482738",
"START_TWINROVA_FIGHT": "03483054",
"TIME_TRAVEL_SAVED_EQUIPS": "03481A60",
"TRIFORCE_ICON_TEXTURE": "0348E308",
"TWINROVA_ACTION_TIMER": "03483058",
"SOS_ITEM_GIVEN": "034814EC",
"SPEED_MULTIPLIER": "03482750",
"START_TWINROVA_FIGHT": "0348306C",
"TIME_TRAVEL_SAVED_EQUIPS": "03481A78",
"TRIFORCE_ICON_TEXTURE": "0348E328",
"TWINROVA_ACTION_TIMER": "03483070",
"WINDMILL_SONG_ID": "03480CD9",
"WINDMILL_TEXT_ID": "03480CDA",
"a_button": "0348B510",
"a_note_b": "0348B4FC",
"a_note_font_glow_base": "0348B4E4",
"a_note_font_glow_max": "0348B4E0",
"a_note_g": "0348B500",
"a_note_glow_base": "0348B4EC",
"a_note_glow_max": "0348B4E8",
"a_note_r": "0348B504",
"active_item_action_id": "0348B568",
"active_item_fast_chest": "0348B558",
"active_item_graphic_id": "0348B55C",
"active_item_object_id": "0348B560",
"active_item_row": "0348B56C",
"active_item_text_id": "0348B564",
"active_override": "0348B574",
"active_override_is_outgoing": "0348B570",
"b_button": "0348B50C",
"beating_dd": "0348B518",
"beating_no_dd": "0348B520",
"c_button": "0348B508",
"c_note_b": "0348B4F0",
"c_note_font_glow_base": "0348B4D4",
"c_note_font_glow_max": "0348B4D0",
"c_note_g": "0348B4F4",
"c_note_glow_base": "0348B4DC",
"c_note_glow_max": "0348B4D8",
"c_note_r": "0348B4F8",
"cfg_dungeon_info_enable": "0348B49C",
"cfg_dungeon_info_mq_enable": "0348B540",
"cfg_dungeon_info_mq_need_map": "0348B53C",
"cfg_dungeon_info_reward_enable": "0348B498",
"cfg_dungeon_info_reward_need_altar": "0348B534",
"cfg_dungeon_info_reward_need_compass": "0348B538",
"cfg_dungeon_is_mq": "0348B5A8",
"cfg_dungeon_rewards": "0348A254",
"cfg_file_select_hash": "0348B548",
"cfg_item_overrides": "0348B5FC",
"defaultDDHeart": "0348B524",
"defaultHeart": "0348B52C",
"dpad_sprite": "0348A408",
"dummy_actor": "0348B57C",
"dungeon_count": "0348B4A0",
"dungeons": "0348A278",
"empty_dlist": "0348B4B8",
"extern_ctxt": "0348A314",
"font_sprite": "0348A418",
"freecam_modes": "03489FD0",
"hash_sprites": "0348B4AC",
"hash_symbols": "0348A328",
"heap_next": "0348B5A0",
"heart_sprite": "0348A3A8",
"icon_sprites": "0348A194",
"item_digit_sprite": "0348A3C8",
"item_overrides_count": "0348B580",
"item_table": "0348A490",
"items_sprite": "0348A438",
"key_rupee_clock_sprite": "0348A3D8",
"last_fog_distance": "0348B4A4",
"linkhead_skull_sprite": "0348A3B8",
"medal_colors": "0348A264",
"medals_sprite": "0348A448",
"normal_dd": "0348B514",
"normal_no_dd": "0348B51C",
"num_to_bits": "0348A368",
"object_slots": "0348C5FC",
"pending_freezes": "0348B584",
"pending_item_queue": "0348B5E4",
"quest_items_sprite": "0348A428",
"rupee_colors": "0348A1A0",
"satisified_pending_frames": "0348B554",
"scene_fog_distance": "0348B4A8",
"setup_db": "0348A468",
"song_note_sprite": "0348A3E8",
"stones_sprite": "0348A458",
"text_cursor_border_base": "0348B4C4",
"text_cursor_border_max": "0348B4C0",
"text_cursor_inner_base": "0348B4CC",
"text_cursor_inner_max": "0348B4C8",
"triforce_hunt_enabled": "0348B594",
"triforce_pieces_requied": "0348B532",
"triforce_sprite": "0348A3F8"
"a_button": "0348B530",
"a_note_b": "0348B51C",
"a_note_font_glow_base": "0348B504",
"a_note_font_glow_max": "0348B500",
"a_note_g": "0348B520",
"a_note_glow_base": "0348B50C",
"a_note_glow_max": "0348B508",
"a_note_r": "0348B524",
"active_item_action_id": "0348B588",
"active_item_fast_chest": "0348B578",
"active_item_graphic_id": "0348B57C",
"active_item_object_id": "0348B580",
"active_item_row": "0348B58C",
"active_item_text_id": "0348B584",
"active_override": "0348B594",
"active_override_is_outgoing": "0348B590",
"b_button": "0348B52C",
"beating_dd": "0348B538",
"beating_no_dd": "0348B540",
"c_button": "0348B528",
"c_note_b": "0348B510",
"c_note_font_glow_base": "0348B4F4",
"c_note_font_glow_max": "0348B4F0",
"c_note_g": "0348B514",
"c_note_glow_base": "0348B4FC",
"c_note_glow_max": "0348B4F8",
"c_note_r": "0348B518",
"cfg_dungeon_info_enable": "0348B4BC",
"cfg_dungeon_info_mq_enable": "0348B560",
"cfg_dungeon_info_mq_need_map": "0348B55C",
"cfg_dungeon_info_reward_enable": "0348B4B8",
"cfg_dungeon_info_reward_need_altar": "0348B554",
"cfg_dungeon_info_reward_need_compass": "0348B558",
"cfg_dungeon_is_mq": "0348B5C8",
"cfg_dungeon_rewards": "0348A274",
"cfg_file_select_hash": "0348B568",
"cfg_item_overrides": "0348B61C",
"defaultDDHeart": "0348B544",
"defaultHeart": "0348B54C",
"dpad_sprite": "0348A428",
"dummy_actor": "0348B59C",
"dungeon_count": "0348B4C0",
"dungeons": "0348A298",
"empty_dlist": "0348B4D8",
"extern_ctxt": "0348A334",
"font_sprite": "0348A438",
"freecam_modes": "03489FF0",
"hash_sprites": "0348B4CC",
"hash_symbols": "0348A348",
"heap_next": "0348B5C0",
"heart_sprite": "0348A3C8",
"icon_sprites": "0348A1B4",
"item_digit_sprite": "0348A3E8",
"item_overrides_count": "0348B5A0",
"item_table": "0348A4B0",
"items_sprite": "0348A458",
"key_rupee_clock_sprite": "0348A3F8",
"last_fog_distance": "0348B4C4",
"linkhead_skull_sprite": "0348A3D8",
"medal_colors": "0348A284",
"medals_sprite": "0348A468",
"normal_dd": "0348B534",
"normal_no_dd": "0348B53C",
"num_to_bits": "0348A388",
"object_slots": "0348C61C",
"pending_freezes": "0348B5A4",
"pending_item_queue": "0348B604",
"quest_items_sprite": "0348A448",
"rupee_colors": "0348A1C0",
"satisified_pending_frames": "0348B574",
"scene_fog_distance": "0348B4C8",
"setup_db": "0348A488",
"song_note_sprite": "0348A408",
"stones_sprite": "0348A478",
"text_cursor_border_base": "0348B4E4",
"text_cursor_border_max": "0348B4E0",
"text_cursor_inner_base": "0348B4EC",
"text_cursor_inner_max": "0348B4E8",
"triforce_hunt_enabled": "0348B5B4",
"triforce_pieces_requied": "0348B552",
"triforce_sprite": "0348A418"
}