LttP: make xxtea only required for race generation

This commit is contained in:
Fabian Dill 2022-11-17 23:44:59 +01:00 committed by Fabian Dill
parent 8aed24151f
commit 67128ece38
2 changed files with 12 additions and 3 deletions

View File

@ -1,7 +1,6 @@
from __future__ import annotations from __future__ import annotations
import Utils import Utils
import worlds.AutoWorld
import worlds.Files import worlds.Files
LTTPJPN10HASH: str = "03a63945398191337e896e5771f77173" LTTPJPN10HASH: str = "03a63945398191337e896e5771f77173"
@ -17,7 +16,6 @@ import random
import struct import struct
import subprocess import subprocess
import threading import threading
import xxtea
import concurrent.futures import concurrent.futures
import bsdiff4 import bsdiff4
from typing import Optional, List from typing import Optional, List
@ -39,7 +37,6 @@ from Utils import local_path, user_path, int16_as_bytes, int32_as_bytes, snes_to
from worlds.alttp.Items import ItemFactory, item_table, item_name_groups, progression_items from worlds.alttp.Items import ItemFactory, item_table, item_name_groups, progression_items
from worlds.alttp.EntranceShuffle import door_addresses from worlds.alttp.EntranceShuffle import door_addresses
from worlds.alttp.Options import smallkey_shuffle from worlds.alttp.Options import smallkey_shuffle
import Patch
try: try:
from maseya import z3pr from maseya import z3pr
@ -47,6 +44,11 @@ try:
except: except:
z3pr = None z3pr = None
try:
import xxtea
except:
xxtea = None
enemizer_logger = logging.getLogger("Enemizer") enemizer_logger = logging.getLogger("Enemizer")
@ -85,6 +87,11 @@ class LocalRom(object):
self.write_bytes(startaddress + i, bytearray(data)) self.write_bytes(startaddress + i, bytearray(data))
def encrypt(self, world, player): def encrypt(self, world, player):
global xxtea
if xxtea is None:
# cause crash to provide traceback
import xxtea
local_random = world.slot_seeds[player] local_random = world.slot_seeds[player]
key = bytes(local_random.getrandbits(8 * 16).to_bytes(16, 'big')) key = bytes(local_random.getrandbits(8 * 16).to_bytes(16, 'big'))
self.write_bytes(0x1800B0, bytearray(key)) self.write_bytes(0x1800B0, bytearray(key))

View File

@ -157,6 +157,8 @@ class ALTTPWorld(World):
rom_file = get_base_rom_path() rom_file = get_base_rom_path()
if not os.path.exists(rom_file): if not os.path.exists(rom_file):
raise FileNotFoundError(rom_file) raise FileNotFoundError(rom_file)
if world.is_race:
import xxtea
def generate_early(self): def generate_early(self):
if self.use_enemizer(): if self.use_enemizer():