Encrypt most of the remaining items, and all player IDs

This commit is contained in:
CaitSith2 2020-10-27 01:36:55 -07:00
parent 83db79815a
commit 7cf4ad35a9
3 changed files with 24 additions and 4 deletions

View File

@ -397,6 +397,23 @@ shop_table = {
'Capacity Upgrade': (0x0115, ShopType.UpgradeShop, 0x04, True, True, [('Bomb Upgrade (+5)', 100, 7), ('Arrow Upgrade (+5)', 100, 7)])
}
old_location_address_to_new_location_address = {
0x2eb18: 0x18001b, # Bottle Merchant
0x33d68: 0x18001a, # Purple Chest
0x2df45: 0x18001d, # Link's Uncle
0x2f1fc: 0x180008, # Sahasrahla
0x18002a: 0x18001c, # Black Smith
0x339cf: 0x180009, # Sick Kid
0x33e7d: 0x180019, # Hobo
0x180160: 0x18000b, # Desert Palace - Desert Torch
0x289b0: 0x180018, # Master Sword Pedestal
0xf69fa: 0x180007, # Old Man
0x180162: 0x18000d, # Tower of Hera - Basement Cage
0x330c7: 0x18000a, # Stumpy
0x180161: 0x18000c # Ganons Tower - Bob's Torch
}
key_drop_data = {
'Hyrule Castle - Map Guard Key Drop': [0x140036, 0x140037],
'Hyrule Castle - Boomerang Guard Key Drop': [0x140033, 0x140034],

11
Rom.py
View File

@ -1,7 +1,7 @@
from __future__ import annotations
JAP10HASH = '03a63945398191337e896e5771f77173'
RANDOMIZERBASEHASH = '0fc63d72970ab96ffb18699f4d12a594'
RANDOMIZERBASEHASH = '8021a943f940a0bb5800c013138c02e8'
import io
import json
@ -19,7 +19,7 @@ from typing import Optional
from BaseClasses import CollectionState, ShopType, Region, Location
from Dungeons import dungeon_music_addresses
from Regions import location_table
from Regions import location_table, old_location_address_to_new_location_address
from Text import MultiByteTextMapper, CompressedTextMapper, text_addresses, Credits, TextTable
from Text import Uncle_texts, Ganon1_texts, TavernMan_texts, Sahasrahla2_texts, Triforce_texts, Blind_texts, \
BombShop2_texts, junk_texts
@ -93,8 +93,10 @@ class LocalRom(object):
self.write_bytes(0x186140, [0] * 0x150)
self.write_bytes(0x186140 + 0x150, itemplayertable)
self.encrypt_range(0x186140 + 0x150, 168, key)
self.encrypt_range(0x186338, 56, key)
self.encrypt_range(0x180000, 32, key)
self.encrypt_range(0x180140, 32, key)
self.encrypt_range(0xEDA1, 8, key)
def write_to_file(self, file, hide_enemizer=False):
with open(file, 'wb') as outfile:
@ -661,7 +663,8 @@ def patch_rom(world, rom, player, team, enemized):
rom.write_byte(location.player_address, location.item.player)
else:
itemid = 0x5A
rom.write_byte(location.address, itemid)
location_address = old_location_address_to_new_location_address.get(location.address, location.address)
rom.write_byte(location_address, itemid)
else:
# crystals
for address, value in zip(location.address, itemid):
@ -1476,7 +1479,7 @@ def patch_rom(world, rom, player, team, enemized):
write_strings(rom, world, player, team)
rom.write_byte(0x18636C, 1 if world.remote_items[player] else 0)
rom.write_byte(0x18637C, 1 if world.remote_items[player] else 0)
# set rom name
# 21 bytes

Binary file not shown.