Split adjuster into own program
This commit is contained in:
parent
fca64f1177
commit
12222d5a4c
128
Adjuster.py
128
Adjuster.py
|
@ -4,9 +4,11 @@ import os
|
||||||
import logging
|
import logging
|
||||||
import textwrap
|
import textwrap
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
|
|
||||||
|
from Rom import Sprite, LocalRom, apply_rom_settings
|
||||||
|
from Utils import output_path
|
||||||
|
|
||||||
from AdjusterMain import adjust
|
|
||||||
from Rom import Sprite
|
|
||||||
|
|
||||||
class ArgumentDefaultsHelpFormatter(argparse.RawTextHelpFormatter):
|
class ArgumentDefaultsHelpFormatter(argparse.RawTextHelpFormatter):
|
||||||
|
|
||||||
|
@ -51,25 +53,127 @@ def main():
|
||||||
parser.add_argument('--names', default='', type=str)
|
parser.add_argument('--names', default='', type=str)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
# ToDo: Validate files further than mere existance
|
|
||||||
if not os.path.isfile(args.rom):
|
|
||||||
input(
|
|
||||||
'Could not find valid rom for patching at expected path %s. Please run with -h to see help for further information. \nPress Enter to exit.' % args.rom)
|
|
||||||
sys.exit(1)
|
|
||||||
if args.sprite is not None and not os.path.isfile(args.sprite) and not Sprite.get_sprite_from_name(args.sprite):
|
|
||||||
input('Could not find link sprite sheet at given location. \nPress Enter to exit.')
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# set up logger
|
# set up logger
|
||||||
loglevel = {'error': logging.ERROR, 'info': logging.INFO, 'warning': logging.WARNING, 'debug': logging.DEBUG}[
|
loglevel = {'error': logging.ERROR, 'info': logging.INFO, 'warning': logging.WARNING, 'debug': logging.DEBUG}[
|
||||||
args.loglevel]
|
args.loglevel]
|
||||||
logging.basicConfig(format='%(message)s', level=loglevel)
|
logging.basicConfig(format='%(message)s', level=loglevel)
|
||||||
|
|
||||||
|
if not os.path.isfile(args.rom):
|
||||||
|
adjustGUI()
|
||||||
|
else:
|
||||||
|
if args.sprite is not None and not os.path.isfile(args.sprite) and not Sprite.get_sprite_from_name(args.sprite):
|
||||||
|
input('Could not find link sprite sheet at given location. \nPress Enter to exit.')
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
args, path = adjust(args=args)
|
args, path = adjust(args=args)
|
||||||
from Utils import persistent_store
|
from Utils import persistent_store
|
||||||
from Rom import Sprite
|
|
||||||
if isinstance(args.sprite, Sprite):
|
if isinstance(args.sprite, Sprite):
|
||||||
args.sprite = args.sprite.name
|
args.sprite = args.sprite.name
|
||||||
persistent_store("adjuster", "last_settings_3", args)
|
persistent_store("adjuster", "last_settings_3", args)
|
||||||
|
|
||||||
|
|
||||||
|
def adjust(args):
|
||||||
|
start = time.perf_counter()
|
||||||
|
logger = logging.getLogger('Adjuster')
|
||||||
|
logger.info('Patching ROM.')
|
||||||
|
vanillaRom = args.baserom
|
||||||
|
if os.path.splitext(args.rom)[-1].lower() == '.bmbp':
|
||||||
|
import Patch
|
||||||
|
meta, args.rom = Patch.create_rom_file(args.rom)
|
||||||
|
|
||||||
|
if os.stat(args.rom).st_size in (0x200000, 0x400000) and os.path.splitext(args.rom)[-1].lower() == '.sfc':
|
||||||
|
rom = LocalRom(args.rom, patch=False, vanillaRom=vanillaRom)
|
||||||
|
else:
|
||||||
|
raise RuntimeError(
|
||||||
|
'Provided Rom is not a valid Link to the Past Randomizer Rom. Please provide one for adjusting.')
|
||||||
|
palettes_options={}
|
||||||
|
palettes_options['dungeon']=args.uw_palettes
|
||||||
|
|
||||||
|
palettes_options['overworld']=args.ow_palettes
|
||||||
|
palettes_options['hud']=args.hud_palettes
|
||||||
|
palettes_options['sword']=args.sword_palettes
|
||||||
|
palettes_options['shield']=args.shield_palettes
|
||||||
|
# palettes_options['link']=args.link_palettesvera
|
||||||
|
racerom = rom.read_byte(0x180213) > 0
|
||||||
|
|
||||||
|
apply_rom_settings(rom, args.heartbeep, args.heartcolor, args.quickswap, args.fastmenu, args.disablemusic,
|
||||||
|
args.sprite, palettes_options, reduceflashing=args.reduceflashing or racerom)
|
||||||
|
path = output_path(f'{os.path.basename(args.rom)[:-4]}_adjusted.sfc')
|
||||||
|
rom.write_to_file(path)
|
||||||
|
|
||||||
|
logger.info('Done. Enjoy.')
|
||||||
|
logger.debug('Total Time: %s', time.perf_counter() - start)
|
||||||
|
|
||||||
|
return args, path
|
||||||
|
|
||||||
|
def adjustGUI():
|
||||||
|
from tkinter import Checkbutton, OptionMenu, Toplevel, LabelFrame, PhotoImage, Tk, LEFT, RIGHT, BOTTOM, TOP, \
|
||||||
|
StringVar, IntVar, Frame, Label, W, E, X, BOTH, Entry, Spinbox, Button, filedialog, messagebox, ttk
|
||||||
|
from Gui import get_rom_options_frame, get_rom_frame
|
||||||
|
from GuiUtils import set_icon
|
||||||
|
from argparse import Namespace
|
||||||
|
from Main import __version__ as MWVersion
|
||||||
|
adjustWindow = Tk()
|
||||||
|
adjustWindow.wm_title("Berserker's Multiworld %s LttP Adjuster" % MWVersion)
|
||||||
|
set_icon(adjustWindow)
|
||||||
|
|
||||||
|
rom_options_frame, rom_vars, set_sprite = get_rom_options_frame(adjustWindow)
|
||||||
|
|
||||||
|
bottomFrame2 = Frame(adjustWindow)
|
||||||
|
|
||||||
|
romFrame, romVar = get_rom_frame(adjustWindow)
|
||||||
|
|
||||||
|
romDialogFrame = Frame(adjustWindow)
|
||||||
|
baseRomLabel2 = Label(romDialogFrame, text='Rom to adjust')
|
||||||
|
romVar2 = StringVar()
|
||||||
|
romEntry2 = Entry(romDialogFrame, textvariable=romVar2)
|
||||||
|
|
||||||
|
def RomSelect2():
|
||||||
|
rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".sfc", ".smc", ".bmbp")), ("All Files", "*")])
|
||||||
|
romVar2.set(rom)
|
||||||
|
romSelectButton2 = Button(romDialogFrame, text='Select Rom', command=RomSelect2)
|
||||||
|
romDialogFrame.pack(side=TOP, expand=True, fill=X)
|
||||||
|
baseRomLabel2.pack(side=LEFT)
|
||||||
|
romEntry2.pack(side=LEFT, expand=True, fill=X)
|
||||||
|
romSelectButton2.pack(side=LEFT)
|
||||||
|
|
||||||
|
def adjustRom():
|
||||||
|
guiargs = Namespace()
|
||||||
|
guiargs.heartbeep = rom_vars.heartbeepVar.get()
|
||||||
|
guiargs.heartcolor = rom_vars.heartcolorVar.get()
|
||||||
|
guiargs.fastmenu = rom_vars.fastMenuVar.get()
|
||||||
|
guiargs.ow_palettes = rom_vars.owPalettesVar.get()
|
||||||
|
guiargs.uw_palettes = rom_vars.uwPalettesVar.get()
|
||||||
|
guiargs.hud_palettes = rom_vars.hudPalettesVar.get()
|
||||||
|
guiargs.sword_palettes = rom_vars.swordPalettesVar.get()
|
||||||
|
guiargs.shield_palettes = rom_vars.shieldPalettesVar.get()
|
||||||
|
guiargs.quickswap = bool(rom_vars.quickSwapVar.get())
|
||||||
|
guiargs.disablemusic = bool(rom_vars.disableMusicVar.get())
|
||||||
|
guiargs.reduceflashing = bool(rom_vars.disableFlashingVar.get())
|
||||||
|
guiargs.rom = romVar2.get()
|
||||||
|
guiargs.baserom = romVar.get()
|
||||||
|
guiargs.sprite = rom_vars.sprite
|
||||||
|
try:
|
||||||
|
guiargs, path = adjust(args=guiargs)
|
||||||
|
except Exception as e:
|
||||||
|
logging.exception(e)
|
||||||
|
messagebox.showerror(title="Error while adjusting Rom", message=str(e))
|
||||||
|
else:
|
||||||
|
messagebox.showinfo(title="Success", message="Rom patched successfully")
|
||||||
|
from Utils import persistent_store
|
||||||
|
from Rom import Sprite
|
||||||
|
if isinstance(guiargs.sprite, Sprite):
|
||||||
|
guiargs.sprite = guiargs.sprite.name
|
||||||
|
persistent_store("adjuster", "last_settings_3", guiargs)
|
||||||
|
|
||||||
|
adjustButton = Button(bottomFrame2, text='Adjust Rom', command=adjustRom)
|
||||||
|
rom_options_frame.pack(side=TOP)
|
||||||
|
adjustButton.pack(side=BOTTOM, padx=(5, 5))
|
||||||
|
|
||||||
|
bottomFrame2.pack(side=BOTTOM, pady=(5, 5))
|
||||||
|
|
||||||
|
adjustWindow.mainloop()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
|
@ -1,41 +0,0 @@
|
||||||
import os
|
|
||||||
import time
|
|
||||||
import logging
|
|
||||||
|
|
||||||
from Utils import output_path
|
|
||||||
from Rom import LocalRom, apply_rom_settings
|
|
||||||
|
|
||||||
|
|
||||||
def adjust(args):
|
|
||||||
start = time.perf_counter()
|
|
||||||
logger = logging.getLogger('Adjuster')
|
|
||||||
logger.info('Patching ROM.')
|
|
||||||
vanillaRom = args.baserom
|
|
||||||
if os.path.splitext(args.rom)[-1].lower() == '.bmbp':
|
|
||||||
import Patch
|
|
||||||
meta, args.rom = Patch.create_rom_file(args.rom)
|
|
||||||
|
|
||||||
if os.stat(args.rom).st_size in (0x200000, 0x400000) and os.path.splitext(args.rom)[-1].lower() == '.sfc':
|
|
||||||
rom = LocalRom(args.rom, patch=False, vanillaRom=vanillaRom)
|
|
||||||
else:
|
|
||||||
raise RuntimeError(
|
|
||||||
'Provided Rom is not a valid Link to the Past Randomizer Rom. Please provide one for adjusting.')
|
|
||||||
palettes_options={}
|
|
||||||
palettes_options['dungeon']=args.uw_palettes
|
|
||||||
|
|
||||||
palettes_options['overworld']=args.ow_palettes
|
|
||||||
palettes_options['hud']=args.hud_palettes
|
|
||||||
palettes_options['sword']=args.sword_palettes
|
|
||||||
palettes_options['shield']=args.shield_palettes
|
|
||||||
# palettes_options['link']=args.link_palettesvera
|
|
||||||
racerom = rom.read_byte(0x180213) > 0
|
|
||||||
|
|
||||||
apply_rom_settings(rom, args.heartbeep, args.heartcolor, args.quickswap, args.fastmenu, args.disablemusic,
|
|
||||||
args.sprite, palettes_options, reduceflashing=args.reduceflashing if not racerom else True)
|
|
||||||
path = output_path(f'{os.path.basename(args.rom)[:-4]}_adjusted.sfc')
|
|
||||||
rom.write_to_file(path)
|
|
||||||
|
|
||||||
logger.info('Done. Enjoy.')
|
|
||||||
logger.debug('Total Time: %s', time.perf_counter() - start)
|
|
||||||
|
|
||||||
return args, path
|
|
497
Gui.py
497
Gui.py
|
@ -14,12 +14,11 @@ from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||||
import ModuleUpdate
|
import ModuleUpdate
|
||||||
ModuleUpdate.update()
|
ModuleUpdate.update()
|
||||||
|
|
||||||
from AdjusterMain import adjust
|
|
||||||
from EntranceRandomizer import parse_arguments
|
from EntranceRandomizer import parse_arguments
|
||||||
from GuiUtils import ToolTips, set_icon, BackgroundTaskProgress
|
from GuiUtils import ToolTips, set_icon, BackgroundTaskProgress
|
||||||
from Main import main, get_seed, __version__ as MWVersion
|
from Main import main, get_seed, __version__ as MWVersion
|
||||||
from Rom import Sprite
|
from Rom import Sprite
|
||||||
from Utils import is_bundled, local_path, output_path, open_file
|
from Utils import local_path, output_path, open_file
|
||||||
|
|
||||||
|
|
||||||
def guiMain(args=None):
|
def guiMain(args=None):
|
||||||
|
@ -30,10 +29,8 @@ def guiMain(args=None):
|
||||||
|
|
||||||
notebook = ttk.Notebook(mainWindow)
|
notebook = ttk.Notebook(mainWindow)
|
||||||
randomizerWindow = ttk.Frame(notebook)
|
randomizerWindow = ttk.Frame(notebook)
|
||||||
adjustWindow = ttk.Frame(notebook)
|
|
||||||
customWindow = ttk.Frame(notebook)
|
customWindow = ttk.Frame(notebook)
|
||||||
notebook.add(randomizerWindow, text='Randomize')
|
notebook.add(randomizerWindow, text='Randomize')
|
||||||
notebook.add(adjustWindow, text='Adjust')
|
|
||||||
notebook.add(customWindow, text='Custom Items')
|
notebook.add(customWindow, text='Custom Items')
|
||||||
notebook.pack()
|
notebook.pack()
|
||||||
|
|
||||||
|
@ -57,6 +54,8 @@ def guiMain(args=None):
|
||||||
# randomizer controls
|
# randomizer controls
|
||||||
|
|
||||||
topFrame = Frame(randomizerWindow)
|
topFrame = Frame(randomizerWindow)
|
||||||
|
romFrame, romVar = get_rom_frame(topFrame)
|
||||||
|
|
||||||
rightHalfFrame = Frame(topFrame)
|
rightHalfFrame = Frame(topFrame)
|
||||||
checkBoxFrame = Frame(rightHalfFrame)
|
checkBoxFrame = Frame(rightHalfFrame)
|
||||||
|
|
||||||
|
@ -119,158 +118,9 @@ def guiMain(args=None):
|
||||||
hintsCheckbutton.pack(expand=True, anchor=W)
|
hintsCheckbutton.pack(expand=True, anchor=W)
|
||||||
tileShuffleButton.pack(expand=True, anchor=W)
|
tileShuffleButton.pack(expand=True, anchor=W)
|
||||||
|
|
||||||
|
|
||||||
romOptionsFrame = LabelFrame(rightHalfFrame, text="Rom options")
|
|
||||||
romOptionsFrame.columnconfigure(0, weight=1)
|
|
||||||
romOptionsFrame.columnconfigure(1, weight=1)
|
|
||||||
for i in range(5):
|
|
||||||
romOptionsFrame.rowconfigure(i, weight=1)
|
|
||||||
|
|
||||||
disableMusicVar = IntVar()
|
|
||||||
disableMusicCheckbutton = Checkbutton(romOptionsFrame, text="Disable music", variable=disableMusicVar)
|
|
||||||
disableMusicCheckbutton.grid(row=0, column=0, sticky=E)
|
|
||||||
|
|
||||||
disableFlashingVar = IntVar(value=1)
|
|
||||||
disableFlashingCheckbutton = Checkbutton(romOptionsFrame, text="Disable flashing (anti-epilepsy)", variable=disableFlashingVar)
|
|
||||||
disableFlashingCheckbutton.grid(row=6, column=0, sticky=E)
|
|
||||||
|
|
||||||
spriteDialogFrame = Frame(romOptionsFrame)
|
|
||||||
spriteDialogFrame.grid(row=0, column=1)
|
|
||||||
baseSpriteLabel = Label(spriteDialogFrame, text='Sprite:')
|
|
||||||
|
|
||||||
spriteNameVar = StringVar()
|
|
||||||
sprite = None
|
|
||||||
def set_sprite(sprite_param):
|
|
||||||
nonlocal sprite
|
|
||||||
if isinstance(sprite_param, str):
|
|
||||||
sprite = sprite_param
|
|
||||||
spriteNameVar.set(sprite_param)
|
|
||||||
elif sprite_param is None or not sprite_param.valid:
|
|
||||||
sprite = None
|
|
||||||
spriteNameVar.set('(unchanged)')
|
|
||||||
else:
|
|
||||||
sprite = sprite_param
|
|
||||||
spriteNameVar.set(sprite.name)
|
|
||||||
|
|
||||||
set_sprite(None)
|
|
||||||
spriteNameVar.set('(unchanged)')
|
|
||||||
spriteEntry = Label(spriteDialogFrame, textvariable=spriteNameVar)
|
|
||||||
|
|
||||||
def SpriteSelect():
|
|
||||||
SpriteSelector(mainWindow, set_sprite)
|
|
||||||
|
|
||||||
spriteSelectButton = Button(spriteDialogFrame, text='...', command=SpriteSelect)
|
|
||||||
|
|
||||||
baseSpriteLabel.pack(side=LEFT)
|
|
||||||
spriteEntry.pack(side=LEFT)
|
|
||||||
spriteSelectButton.pack(side=LEFT)
|
|
||||||
|
|
||||||
quickSwapVar = IntVar(value=1)
|
|
||||||
quickSwapCheckbutton = Checkbutton(romOptionsFrame, text="L/R Quickswapping", variable=quickSwapVar)
|
|
||||||
quickSwapCheckbutton.grid(row=1, column=0, sticky=E)
|
|
||||||
|
|
||||||
fastMenuFrame = Frame(romOptionsFrame)
|
|
||||||
fastMenuFrame.grid(row=1, column=1, sticky=E)
|
|
||||||
fastMenuLabel = Label(fastMenuFrame, text='Menu speed')
|
|
||||||
fastMenuLabel.pack(side=LEFT)
|
|
||||||
fastMenuVar = StringVar()
|
|
||||||
fastMenuVar.set('normal')
|
|
||||||
fastMenuOptionMenu = OptionMenu(fastMenuFrame, fastMenuVar, 'normal', 'instant', 'double', 'triple', 'quadruple', 'half')
|
|
||||||
fastMenuOptionMenu.pack(side=LEFT)
|
|
||||||
|
|
||||||
heartcolorFrame = Frame(romOptionsFrame)
|
|
||||||
heartcolorFrame.grid(row=2, column=0, sticky=E)
|
|
||||||
heartcolorLabel = Label(heartcolorFrame, text='Heart color')
|
|
||||||
heartcolorLabel.pack(side=LEFT)
|
|
||||||
heartcolorVar = StringVar()
|
|
||||||
heartcolorVar.set('red')
|
|
||||||
heartcolorOptionMenu = OptionMenu(heartcolorFrame, heartcolorVar, 'red', 'blue', 'green', 'yellow', 'random')
|
|
||||||
heartcolorOptionMenu.pack(side=LEFT)
|
|
||||||
|
|
||||||
heartbeepFrame = Frame(romOptionsFrame)
|
|
||||||
heartbeepFrame.grid(row=2, column=1, sticky=E)
|
|
||||||
heartbeepLabel = Label(heartbeepFrame, text='Heartbeep')
|
|
||||||
heartbeepLabel.pack(side=LEFT)
|
|
||||||
heartbeepVar = StringVar()
|
|
||||||
heartbeepVar.set('normal')
|
|
||||||
heartbeepOptionMenu = OptionMenu(heartbeepFrame, heartbeepVar, 'double', 'normal', 'half', 'quarter', 'off')
|
|
||||||
heartbeepOptionMenu.pack(side=LEFT)
|
|
||||||
|
|
||||||
owPalettesFrame = Frame(romOptionsFrame)
|
|
||||||
owPalettesFrame.grid(row=3, column=0, sticky=E)
|
|
||||||
owPalettesLabel = Label(owPalettesFrame, text='Overworld palettes')
|
|
||||||
owPalettesLabel.pack(side=LEFT)
|
|
||||||
owPalettesVar = StringVar()
|
|
||||||
owPalettesVar.set('default')
|
|
||||||
owPalettesOptionMenu = OptionMenu(owPalettesFrame, owPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
|
||||||
owPalettesOptionMenu.pack(side=LEFT)
|
|
||||||
|
|
||||||
uwPalettesFrame = Frame(romOptionsFrame)
|
|
||||||
uwPalettesFrame.grid(row=3, column=1, sticky=E)
|
|
||||||
uwPalettesLabel = Label(uwPalettesFrame, text='Dungeon palettes')
|
|
||||||
uwPalettesLabel.pack(side=LEFT)
|
|
||||||
uwPalettesVar = StringVar()
|
|
||||||
uwPalettesVar.set('default')
|
|
||||||
uwPalettesOptionMenu = OptionMenu(uwPalettesFrame, uwPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
|
||||||
uwPalettesOptionMenu.pack(side=LEFT)
|
|
||||||
|
|
||||||
hudPalettesFrame = Frame(romOptionsFrame)
|
|
||||||
hudPalettesFrame.grid(row=4, column=0, sticky=E)
|
|
||||||
hudPalettesLabel = Label(hudPalettesFrame, text='HUD palettes')
|
|
||||||
hudPalettesLabel.pack(side=LEFT)
|
|
||||||
hudPalettesVar = StringVar()
|
|
||||||
hudPalettesVar.set('default')
|
|
||||||
hudPalettesOptionMenu = OptionMenu(hudPalettesFrame, hudPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
|
||||||
hudPalettesOptionMenu.pack(side=LEFT)
|
|
||||||
|
|
||||||
swordPalettesFrame = Frame(romOptionsFrame)
|
|
||||||
swordPalettesFrame.grid(row=4, column=1, sticky=E)
|
|
||||||
swordPalettesLabel = Label(swordPalettesFrame, text='Sword palettes')
|
|
||||||
swordPalettesLabel.pack(side=LEFT)
|
|
||||||
swordPalettesVar = StringVar()
|
|
||||||
swordPalettesVar.set('default')
|
|
||||||
swordPalettesOptionMenu = OptionMenu(swordPalettesFrame, swordPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
|
||||||
swordPalettesOptionMenu.pack(side=LEFT)
|
|
||||||
|
|
||||||
shieldPalettesFrame = Frame(romOptionsFrame)
|
|
||||||
shieldPalettesFrame.grid(row=5, column=0, sticky=E)
|
|
||||||
shieldPalettesLabel = Label(shieldPalettesFrame, text='Shield palettes')
|
|
||||||
shieldPalettesLabel.pack(side=LEFT)
|
|
||||||
shieldPalettesVar = StringVar()
|
|
||||||
shieldPalettesVar.set('default')
|
|
||||||
shieldPalettesOptionMenu = OptionMenu(shieldPalettesFrame, shieldPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
|
||||||
shieldPalettesOptionMenu.pack(side=LEFT)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
romDialogFrame = Frame(romOptionsFrame)
|
|
||||||
romDialogFrame.grid(row=7, column=0, columnspan=2, sticky=W+E)
|
|
||||||
|
|
||||||
baseRomLabel = Label(romDialogFrame, text='Base Rom: ')
|
|
||||||
romVar = StringVar(value="Zelda no Densetsu - Kamigami no Triforce (Japan).sfc")
|
|
||||||
romEntry = Entry(romDialogFrame, textvariable=romVar)
|
|
||||||
|
|
||||||
def RomSelect():
|
|
||||||
rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".sfc", ".smc")), ("All Files", "*")])
|
|
||||||
import Patch
|
|
||||||
try:
|
|
||||||
Patch.get_base_rom_bytes(rom) # throws error on checksum fail
|
|
||||||
except Exception as e:
|
|
||||||
logging.exception(e)
|
|
||||||
messagebox.showerror(title="Error while reading ROM", message=str(e))
|
|
||||||
else:
|
|
||||||
romVar.set(rom)
|
|
||||||
romSelectButton['state'] = "disabled"
|
|
||||||
romSelectButton["text"] = "ROM verified"
|
|
||||||
romSelectButton = Button(romDialogFrame, text='Select Rom', command=RomSelect)
|
|
||||||
|
|
||||||
baseRomLabel.pack(side=LEFT)
|
|
||||||
romEntry.pack(side=LEFT, expand=True, fill=X)
|
|
||||||
romSelectButton.pack(side=LEFT)
|
|
||||||
|
|
||||||
checkBoxFrame.pack(side=TOP, anchor=W, padx=5, pady=10)
|
checkBoxFrame.pack(side=TOP, anchor=W, padx=5, pady=10)
|
||||||
|
|
||||||
|
romOptionsFrame, rom_vars, set_sprite = get_rom_options_frame(rightHalfFrame)
|
||||||
romOptionsFrame.pack(expand=True, fill=BOTH, padx=3)
|
romOptionsFrame.pack(expand=True, fill=BOTH, padx=3)
|
||||||
|
|
||||||
drowDownFrame = Frame(topFrame)
|
drowDownFrame = Frame(topFrame)
|
||||||
|
@ -567,9 +417,9 @@ def guiMain(args=None):
|
||||||
guiargs.accessibility = accessibilityVar.get()
|
guiargs.accessibility = accessibilityVar.get()
|
||||||
guiargs.algorithm = algorithmVar.get()
|
guiargs.algorithm = algorithmVar.get()
|
||||||
guiargs.shuffle = shuffleVar.get()
|
guiargs.shuffle = shuffleVar.get()
|
||||||
guiargs.heartbeep = heartbeepVar.get()
|
guiargs.heartbeep = rom_vars.heartbeepVar.get()
|
||||||
guiargs.heartcolor = heartcolorVar.get()
|
guiargs.heartcolor = rom_vars.heartcolorVar.get()
|
||||||
guiargs.fastmenu = fastMenuVar.get()
|
guiargs.fastmenu = rom_vars.fastMenuVar.get()
|
||||||
guiargs.create_spoiler = bool(createSpoilerVar.get())
|
guiargs.create_spoiler = bool(createSpoilerVar.get())
|
||||||
guiargs.skip_playthrough = not bool(createSpoilerVar.get())
|
guiargs.skip_playthrough = not bool(createSpoilerVar.get())
|
||||||
guiargs.suppress_rom = bool(suppressRomVar.get())
|
guiargs.suppress_rom = bool(suppressRomVar.get())
|
||||||
|
@ -579,14 +429,14 @@ def guiMain(args=None):
|
||||||
guiargs.keyshuffle = {"on": True, "universal": "universal", "off": False}[keyshuffleVar.get()]
|
guiargs.keyshuffle = {"on": True, "universal": "universal", "off": False}[keyshuffleVar.get()]
|
||||||
guiargs.bigkeyshuffle = bool(bigkeyshuffleVar.get())
|
guiargs.bigkeyshuffle = bool(bigkeyshuffleVar.get())
|
||||||
guiargs.retro = bool(retroVar.get())
|
guiargs.retro = bool(retroVar.get())
|
||||||
guiargs.quickswap = bool(quickSwapVar.get())
|
guiargs.quickswap = bool(rom_vars.quickSwapVar.get())
|
||||||
guiargs.disablemusic = bool(disableMusicVar.get())
|
guiargs.disablemusic = bool(rom_vars.disableMusicVar.get())
|
||||||
guiargs.reduceflashing = bool(disableFlashingVar.get())
|
guiargs.reduceflashing = bool(rom_vars.disableFlashingVar.get())
|
||||||
guiargs.ow_palettes = owPalettesVar.get()
|
guiargs.ow_palettes = rom_vars.owPalettesVar.get()
|
||||||
guiargs.uw_palettes = uwPalettesVar.get()
|
guiargs.uw_palettes = rom_vars.uwPalettesVar.get()
|
||||||
guiargs.hud_palettes = hudPalettesVar.get()
|
guiargs.hud_palettes = rom_vars.hudPalettesVar.get()
|
||||||
guiargs.sword_palettes = swordPalettesVar.get()
|
guiargs.sword_palettes = rom_vars.swordPalettesVar.get()
|
||||||
guiargs.shield_palettes = shieldPalettesVar.get()
|
guiargs.shield_palettes = rom_vars.shieldPalettesVar.get()
|
||||||
guiargs.shuffleganon = bool(shuffleGanonVar.get())
|
guiargs.shuffleganon = bool(shuffleGanonVar.get())
|
||||||
guiargs.hints = bool(hintsVar.get())
|
guiargs.hints = bool(hintsVar.get())
|
||||||
guiargs.enemizercli = enemizerCLIpathVar.get()
|
guiargs.enemizercli = enemizerCLIpathVar.get()
|
||||||
|
@ -646,7 +496,7 @@ def guiMain(args=None):
|
||||||
int(rupoorcostVar.get()), int(triforceVar.get())]
|
int(rupoorcostVar.get()), int(triforceVar.get())]
|
||||||
guiargs.rom = romVar.get()
|
guiargs.rom = romVar.get()
|
||||||
guiargs.create_diff = patchesVar.get()
|
guiargs.create_diff = patchesVar.get()
|
||||||
guiargs.sprite = sprite
|
guiargs.sprite = rom_vars.sprite
|
||||||
# get default values for missing parameters
|
# get default values for missing parameters
|
||||||
for k,v in vars(parse_arguments(['--multi', str(guiargs.multi)])).items():
|
for k,v in vars(parse_arguments(['--multi', str(guiargs.multi)])).items():
|
||||||
if k not in vars(guiargs):
|
if k not in vars(guiargs):
|
||||||
|
@ -694,153 +544,6 @@ def guiMain(args=None):
|
||||||
enemizerFrame.pack(side=BOTTOM, fill=BOTH)
|
enemizerFrame.pack(side=BOTTOM, fill=BOTH)
|
||||||
shopframe.pack(side=BOTTOM, expand=True, fill=X)
|
shopframe.pack(side=BOTTOM, expand=True, fill=X)
|
||||||
|
|
||||||
# Adjuster Controls
|
|
||||||
|
|
||||||
topFrame2 = Frame(adjustWindow)
|
|
||||||
rightHalfFrame2 = Frame(topFrame2)
|
|
||||||
checkBoxFrame2 = Frame(rightHalfFrame2)
|
|
||||||
|
|
||||||
quickSwapCheckbutton2 = Checkbutton(checkBoxFrame2, text="L/R Item quickswapping", variable=quickSwapVar)
|
|
||||||
disableMusicCheckbutton2 = Checkbutton(checkBoxFrame2, text="Disable game music", variable=disableMusicVar)
|
|
||||||
disableFlashingCheckbutton2 = Checkbutton(checkBoxFrame2, text="Disable flashing (anti-epilepsy)", variable=disableFlashingVar)
|
|
||||||
|
|
||||||
quickSwapCheckbutton2.pack(expand=True, anchor=W)
|
|
||||||
disableMusicCheckbutton2.pack(expand=True, anchor=W)
|
|
||||||
disableFlashingCheckbutton2.pack(expand=True, anchor=W)
|
|
||||||
|
|
||||||
fileDialogFrame2 = Frame(rightHalfFrame2)
|
|
||||||
|
|
||||||
romDialogFrame2 = Frame(fileDialogFrame2)
|
|
||||||
baseRomLabel2 = Label(romDialogFrame2, text='Rom to adjust')
|
|
||||||
romVar2 = StringVar()
|
|
||||||
romEntry2 = Entry(romDialogFrame2, textvariable=romVar2)
|
|
||||||
|
|
||||||
def RomSelect2():
|
|
||||||
rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".sfc", ".smc", ".bmbp")), ("All Files", "*")])
|
|
||||||
romVar2.set(rom)
|
|
||||||
romSelectButton2 = Button(romDialogFrame2, text='Select Rom', command=RomSelect2)
|
|
||||||
|
|
||||||
baseRomLabel2.pack(side=LEFT)
|
|
||||||
romEntry2.pack(side=LEFT)
|
|
||||||
romSelectButton2.pack(side=LEFT)
|
|
||||||
|
|
||||||
spriteDialogFrame2 = Frame(fileDialogFrame2)
|
|
||||||
baseSpriteLabel2 = Label(spriteDialogFrame2, text='Link Sprite')
|
|
||||||
spriteEntry2 = Label(spriteDialogFrame2, textvariable=spriteNameVar)
|
|
||||||
|
|
||||||
def SpriteSelectAdjuster():
|
|
||||||
SpriteSelector(mainWindow, set_sprite, adjuster=True)
|
|
||||||
|
|
||||||
spriteSelectButton2 = Button(spriteDialogFrame2, text='Select Sprite', command=SpriteSelectAdjuster)
|
|
||||||
|
|
||||||
baseSpriteLabel2.pack(side=LEFT)
|
|
||||||
spriteEntry2.pack(side=LEFT)
|
|
||||||
spriteSelectButton2.pack(side=LEFT)
|
|
||||||
|
|
||||||
romDialogFrame2.pack()
|
|
||||||
spriteDialogFrame2.pack()
|
|
||||||
|
|
||||||
checkBoxFrame2.pack()
|
|
||||||
fileDialogFrame2.pack()
|
|
||||||
|
|
||||||
drowDownFrame2 = Frame(topFrame2)
|
|
||||||
heartbeepFrame2 = Frame(drowDownFrame2)
|
|
||||||
heartbeepOptionMenu2 = OptionMenu(heartbeepFrame2, heartbeepVar, 'double', 'normal', 'half', 'quarter', 'off')
|
|
||||||
heartbeepOptionMenu2.pack(side=RIGHT)
|
|
||||||
heartbeepLabel2 = Label(heartbeepFrame2, text='Heartbeep sound rate')
|
|
||||||
heartbeepLabel2.pack(side=LEFT)
|
|
||||||
|
|
||||||
heartcolorFrame2 = Frame(drowDownFrame2)
|
|
||||||
heartcolorOptionMenu2 = OptionMenu(heartcolorFrame2, heartcolorVar, 'red', 'blue', 'green', 'yellow', 'random')
|
|
||||||
heartcolorOptionMenu2.pack(side=RIGHT)
|
|
||||||
heartcolorLabel2 = Label(heartcolorFrame2, text='Heart color')
|
|
||||||
heartcolorLabel2.pack(side=LEFT)
|
|
||||||
|
|
||||||
fastMenuFrame2 = Frame(drowDownFrame2)
|
|
||||||
fastMenuOptionMenu2 = OptionMenu(fastMenuFrame2, fastMenuVar, 'normal', 'instant', 'double', 'triple', 'quadruple', 'half')
|
|
||||||
fastMenuOptionMenu2.pack(side=RIGHT)
|
|
||||||
fastMenuLabel2 = Label(fastMenuFrame2, text='Menu speed')
|
|
||||||
fastMenuLabel2.pack(side=LEFT)
|
|
||||||
|
|
||||||
owPalettesFrame2 = Frame(drowDownFrame2)
|
|
||||||
owPalettesOptionMenu2 = OptionMenu(owPalettesFrame2, owPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
|
||||||
owPalettesOptionMenu2.pack(side=RIGHT)
|
|
||||||
owPalettesLabel2 = Label(owPalettesFrame2, text='Overworld palettes')
|
|
||||||
owPalettesLabel2.pack(side=LEFT)
|
|
||||||
|
|
||||||
uwPalettesFrame2 = Frame(drowDownFrame2)
|
|
||||||
uwPalettesOptionMenu2 = OptionMenu(uwPalettesFrame2, uwPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
|
||||||
uwPalettesOptionMenu2.pack(side=RIGHT)
|
|
||||||
uwPalettesLabel2 = Label(uwPalettesFrame2, text='Dungeon palettes')
|
|
||||||
uwPalettesLabel2.pack(side=LEFT)
|
|
||||||
|
|
||||||
hudPalettesFrame2 = Frame(drowDownFrame2)
|
|
||||||
hudPalettesOptionMenu2 = OptionMenu(hudPalettesFrame2, hudPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
|
||||||
hudPalettesOptionMenu2.pack(side=RIGHT)
|
|
||||||
hudPalettesLabel2 = Label(hudPalettesFrame2, text='HUD palettes')
|
|
||||||
hudPalettesLabel2.pack(side=LEFT)
|
|
||||||
|
|
||||||
swordPalettesFrame2 = Frame(drowDownFrame2)
|
|
||||||
swordPalettesOptionMenu2 = OptionMenu(swordPalettesFrame2, swordPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
|
||||||
swordPalettesOptionMenu2.pack(side=RIGHT)
|
|
||||||
swordPalettesLabel2 = Label(swordPalettesFrame2, text='Sword palettes')
|
|
||||||
swordPalettesLabel2.pack(side=LEFT)
|
|
||||||
|
|
||||||
shieldPalettesFrame2 = Frame(drowDownFrame2)
|
|
||||||
shieldPalettesOptionMenu2 = OptionMenu(shieldPalettesFrame2, shieldPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
|
||||||
shieldPalettesOptionMenu2.pack(side=RIGHT)
|
|
||||||
shieldPalettesLabel2 = Label(shieldPalettesFrame2, text='Shield palettes')
|
|
||||||
shieldPalettesLabel2.pack(side=LEFT)
|
|
||||||
|
|
||||||
heartbeepFrame2.pack(expand=True, anchor=E)
|
|
||||||
heartcolorFrame2.pack(expand=True, anchor=E)
|
|
||||||
fastMenuFrame2.pack(expand=True, anchor=E)
|
|
||||||
owPalettesFrame2.pack(expand=True, anchor=E)
|
|
||||||
uwPalettesFrame2.pack(expand=True, anchor=E)
|
|
||||||
hudPalettesFrame2.pack(expand=True, anchor=E)
|
|
||||||
swordPalettesFrame2.pack(expand=True, anchor=E)
|
|
||||||
shieldPalettesFrame2.pack(expand=True, anchor=E)
|
|
||||||
|
|
||||||
bottomFrame2 = Frame(topFrame2)
|
|
||||||
|
|
||||||
def adjustRom():
|
|
||||||
guiargs = Namespace()
|
|
||||||
guiargs.heartbeep = heartbeepVar.get()
|
|
||||||
guiargs.heartcolor = heartcolorVar.get()
|
|
||||||
guiargs.fastmenu = fastMenuVar.get()
|
|
||||||
guiargs.ow_palettes = owPalettesVar.get()
|
|
||||||
guiargs.uw_palettes = uwPalettesVar.get()
|
|
||||||
guiargs.hud_palettes = hudPalettesVar.get()
|
|
||||||
guiargs.sword_palettes = swordPalettesVar.get()
|
|
||||||
guiargs.shield_palettes = shieldPalettesVar.get()
|
|
||||||
guiargs.quickswap = bool(quickSwapVar.get())
|
|
||||||
guiargs.disablemusic = bool(disableMusicVar.get())
|
|
||||||
guiargs.reduceflashing = bool(disableFlashingVar.get())
|
|
||||||
guiargs.rom = romVar2.get()
|
|
||||||
guiargs.baserom = romVar.get()
|
|
||||||
guiargs.sprite = sprite
|
|
||||||
try:
|
|
||||||
guiargs, path = adjust(args=guiargs)
|
|
||||||
except Exception as e:
|
|
||||||
logging.exception(e)
|
|
||||||
messagebox.showerror(title="Error while adjusting Rom", message=str(e))
|
|
||||||
else:
|
|
||||||
messagebox.showinfo(title="Success", message="Rom patched successfully")
|
|
||||||
from Utils import persistent_store
|
|
||||||
from Rom import Sprite
|
|
||||||
if isinstance(guiargs.sprite, Sprite):
|
|
||||||
guiargs.sprite = guiargs.sprite.name
|
|
||||||
persistent_store("adjuster", "last_settings_3", guiargs)
|
|
||||||
|
|
||||||
adjustButton = Button(bottomFrame2, text='Adjust Rom', command=adjustRom)
|
|
||||||
|
|
||||||
adjustButton.pack(side=LEFT, padx=(5, 0))
|
|
||||||
|
|
||||||
drowDownFrame2.pack(side=LEFT, pady=(0, 40))
|
|
||||||
rightHalfFrame2.pack(side=RIGHT)
|
|
||||||
topFrame2.pack(side=TOP, pady=70)
|
|
||||||
bottomFrame2.pack(side=BOTTOM, pady=(180, 0))
|
|
||||||
|
|
||||||
# Custom Controls
|
# Custom Controls
|
||||||
|
|
||||||
topFrame3 = Frame(customWindow)
|
topFrame3 = Frame(customWindow)
|
||||||
|
@ -1498,9 +1201,9 @@ def guiMain(args=None):
|
||||||
keyshuffleVar.set(args.keyshuffle)
|
keyshuffleVar.set(args.keyshuffle)
|
||||||
bigkeyshuffleVar.set(args.bigkeyshuffle)
|
bigkeyshuffleVar.set(args.bigkeyshuffle)
|
||||||
retroVar.set(args.retro)
|
retroVar.set(args.retro)
|
||||||
quickSwapVar.set(int(args.quickswap))
|
rom_vars.quickSwapVar.set(int(args.quickswap))
|
||||||
disableMusicVar.set(int(args.disablemusic))
|
rom_vars.disableMusicVar.set(int(args.disablemusic))
|
||||||
disableFlashingVar.set(int(args.reduceflashing))
|
rom_vars.disableFlashingVar.set(int(args.reduceflashing))
|
||||||
if args.count:
|
if args.count:
|
||||||
countVar.set(str(args.count))
|
countVar.set(str(args.count))
|
||||||
if args.seed:
|
if args.seed:
|
||||||
|
@ -1521,10 +1224,10 @@ def guiMain(args=None):
|
||||||
crystalsGanonVar.set(args.crystals_ganon)
|
crystalsGanonVar.set(args.crystals_ganon)
|
||||||
algorithmVar.set(args.algorithm)
|
algorithmVar.set(args.algorithm)
|
||||||
shuffleVar.set(args.shuffle)
|
shuffleVar.set(args.shuffle)
|
||||||
heartbeepVar.set(args.heartbeep)
|
rom_vars.heartbeepVar.set(args.heartbeep)
|
||||||
fastMenuVar.set(args.fastmenu)
|
rom_vars.fastMenuVar.set(args.fastmenu)
|
||||||
logicVar.set(args.logic)
|
logicVar.set(args.logic)
|
||||||
romVar.set(args.rom)
|
rom_vars.romVar.set(args.rom)
|
||||||
shuffleGanonVar.set(args.shuffleganon)
|
shuffleGanonVar.set(args.shuffleganon)
|
||||||
hintsVar.set(args.hints)
|
hintsVar.set(args.hints)
|
||||||
if args.sprite is not None:
|
if args.sprite is not None:
|
||||||
|
@ -1532,10 +1235,164 @@ def guiMain(args=None):
|
||||||
|
|
||||||
mainWindow.mainloop()
|
mainWindow.mainloop()
|
||||||
|
|
||||||
|
def get_rom_frame(parent=None):
|
||||||
|
romFrame = Frame(parent)
|
||||||
|
baseRomLabel = Label(romFrame, text='LttP Base Rom: ')
|
||||||
|
romVar = StringVar(value="Zelda no Densetsu - Kamigami no Triforce (Japan).sfc")
|
||||||
|
romEntry = Entry(romFrame, textvariable=romVar)
|
||||||
|
|
||||||
|
def RomSelect():
|
||||||
|
rom = filedialog.askopenfilename(filetypes=[("Rom Files", (".sfc", ".smc")), ("All Files", "*")])
|
||||||
|
import Patch
|
||||||
|
try:
|
||||||
|
Patch.get_base_rom_bytes(rom) # throws error on checksum fail
|
||||||
|
except Exception as e:
|
||||||
|
logging.exception(e)
|
||||||
|
messagebox.showerror(title="Error while reading ROM", message=str(e))
|
||||||
|
else:
|
||||||
|
romVar.set(rom)
|
||||||
|
romSelectButton['state'] = "disabled"
|
||||||
|
romSelectButton["text"] = "ROM verified"
|
||||||
|
romSelectButton = Button(romFrame, text='Select Rom', command=RomSelect)
|
||||||
|
|
||||||
|
baseRomLabel.pack(side=LEFT)
|
||||||
|
romEntry.pack(side=LEFT, expand=True, fill=X)
|
||||||
|
romSelectButton.pack(side=LEFT)
|
||||||
|
romFrame.pack(side=TOP, expand=True, fill=X)
|
||||||
|
|
||||||
|
return romFrame, romVar
|
||||||
|
|
||||||
|
|
||||||
|
def get_rom_options_frame(parent=None):
|
||||||
|
romOptionsFrame = LabelFrame(parent, text="Rom options")
|
||||||
|
romOptionsFrame.columnconfigure(0, weight=1)
|
||||||
|
romOptionsFrame.columnconfigure(1, weight=1)
|
||||||
|
for i in range(5):
|
||||||
|
romOptionsFrame.rowconfigure(i, weight=1)
|
||||||
|
vars = Namespace()
|
||||||
|
|
||||||
|
vars.disableMusicVar = IntVar()
|
||||||
|
disableMusicCheckbutton = Checkbutton(romOptionsFrame, text="Disable music", variable=vars.disableMusicVar)
|
||||||
|
disableMusicCheckbutton.grid(row=0, column=0, sticky=E)
|
||||||
|
|
||||||
|
vars.disableFlashingVar = IntVar(value=1)
|
||||||
|
disableFlashingCheckbutton = Checkbutton(romOptionsFrame, text="Disable flashing (anti-epilepsy)", variable=vars.disableFlashingVar)
|
||||||
|
disableFlashingCheckbutton.grid(row=6, column=0, sticky=E)
|
||||||
|
|
||||||
|
spriteDialogFrame = Frame(romOptionsFrame)
|
||||||
|
spriteDialogFrame.grid(row=0, column=1)
|
||||||
|
baseSpriteLabel = Label(spriteDialogFrame, text='Sprite:')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
vars.spriteNameVar = StringVar()
|
||||||
|
vars.sprite = None
|
||||||
|
def set_sprite(sprite_param):
|
||||||
|
nonlocal vars
|
||||||
|
if isinstance(sprite_param, str):
|
||||||
|
vars.sprite = sprite_param
|
||||||
|
vars.spriteNameVar.set(sprite_param)
|
||||||
|
elif sprite_param is None or not sprite_param.valid:
|
||||||
|
vars.sprite = None
|
||||||
|
vars.spriteNameVar.set('(unchanged)')
|
||||||
|
else:
|
||||||
|
vars.sprite = sprite_param
|
||||||
|
vars.spriteNameVar.set(vars.sprite.name)
|
||||||
|
|
||||||
|
set_sprite(None)
|
||||||
|
vars.spriteNameVar.set('(unchanged)')
|
||||||
|
spriteEntry = Label(spriteDialogFrame, textvariable=vars.spriteNameVar)
|
||||||
|
|
||||||
|
def SpriteSelect():
|
||||||
|
SpriteSelector(parent, set_sprite)
|
||||||
|
|
||||||
|
spriteSelectButton = Button(spriteDialogFrame, text='...', command=SpriteSelect)
|
||||||
|
|
||||||
|
baseSpriteLabel.pack(side=LEFT)
|
||||||
|
spriteEntry.pack(side=LEFT)
|
||||||
|
spriteSelectButton.pack(side=LEFT)
|
||||||
|
|
||||||
|
vars.quickSwapVar = IntVar(value=1)
|
||||||
|
quickSwapCheckbutton = Checkbutton(romOptionsFrame, text="L/R Quickswapping", variable=vars.quickSwapVar)
|
||||||
|
quickSwapCheckbutton.grid(row=1, column=0, sticky=E)
|
||||||
|
|
||||||
|
fastMenuFrame = Frame(romOptionsFrame)
|
||||||
|
fastMenuFrame.grid(row=1, column=1, sticky=E)
|
||||||
|
fastMenuLabel = Label(fastMenuFrame, text='Menu speed')
|
||||||
|
fastMenuLabel.pack(side=LEFT)
|
||||||
|
vars.fastMenuVar = StringVar()
|
||||||
|
vars.fastMenuVar.set('normal')
|
||||||
|
fastMenuOptionMenu = OptionMenu(fastMenuFrame, vars.fastMenuVar, 'normal', 'instant', 'double', 'triple', 'quadruple', 'half')
|
||||||
|
fastMenuOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
|
heartcolorFrame = Frame(romOptionsFrame)
|
||||||
|
heartcolorFrame.grid(row=2, column=0, sticky=E)
|
||||||
|
heartcolorLabel = Label(heartcolorFrame, text='Heart color')
|
||||||
|
heartcolorLabel.pack(side=LEFT)
|
||||||
|
vars.heartcolorVar = StringVar()
|
||||||
|
vars.heartcolorVar.set('red')
|
||||||
|
heartcolorOptionMenu = OptionMenu(heartcolorFrame, vars.heartcolorVar, 'red', 'blue', 'green', 'yellow', 'random')
|
||||||
|
heartcolorOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
|
heartbeepFrame = Frame(romOptionsFrame)
|
||||||
|
heartbeepFrame.grid(row=2, column=1, sticky=E)
|
||||||
|
heartbeepLabel = Label(heartbeepFrame, text='Heartbeep')
|
||||||
|
heartbeepLabel.pack(side=LEFT)
|
||||||
|
vars.heartbeepVar = StringVar()
|
||||||
|
vars.heartbeepVar.set('normal')
|
||||||
|
heartbeepOptionMenu = OptionMenu(heartbeepFrame, vars.heartbeepVar, 'double', 'normal', 'half', 'quarter', 'off')
|
||||||
|
heartbeepOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
|
owPalettesFrame = Frame(romOptionsFrame)
|
||||||
|
owPalettesFrame.grid(row=3, column=0, sticky=E)
|
||||||
|
owPalettesLabel = Label(owPalettesFrame, text='Overworld palettes')
|
||||||
|
owPalettesLabel.pack(side=LEFT)
|
||||||
|
vars.owPalettesVar = StringVar()
|
||||||
|
vars.owPalettesVar.set('default')
|
||||||
|
owPalettesOptionMenu = OptionMenu(owPalettesFrame, vars.owPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
|
owPalettesOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
|
uwPalettesFrame = Frame(romOptionsFrame)
|
||||||
|
uwPalettesFrame.grid(row=3, column=1, sticky=E)
|
||||||
|
uwPalettesLabel = Label(uwPalettesFrame, text='Dungeon palettes')
|
||||||
|
uwPalettesLabel.pack(side=LEFT)
|
||||||
|
vars.uwPalettesVar = StringVar()
|
||||||
|
vars.uwPalettesVar.set('default')
|
||||||
|
uwPalettesOptionMenu = OptionMenu(uwPalettesFrame, vars.uwPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
|
uwPalettesOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
|
hudPalettesFrame = Frame(romOptionsFrame)
|
||||||
|
hudPalettesFrame.grid(row=4, column=0, sticky=E)
|
||||||
|
hudPalettesLabel = Label(hudPalettesFrame, text='HUD palettes')
|
||||||
|
hudPalettesLabel.pack(side=LEFT)
|
||||||
|
vars.hudPalettesVar = StringVar()
|
||||||
|
vars.hudPalettesVar.set('default')
|
||||||
|
hudPalettesOptionMenu = OptionMenu(hudPalettesFrame, vars.hudPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
|
hudPalettesOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
|
swordPalettesFrame = Frame(romOptionsFrame)
|
||||||
|
swordPalettesFrame.grid(row=4, column=1, sticky=E)
|
||||||
|
swordPalettesLabel = Label(swordPalettesFrame, text='Sword palettes')
|
||||||
|
swordPalettesLabel.pack(side=LEFT)
|
||||||
|
vars.swordPalettesVar = StringVar()
|
||||||
|
vars.swordPalettesVar.set('default')
|
||||||
|
swordPalettesOptionMenu = OptionMenu(swordPalettesFrame, vars.swordPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
|
swordPalettesOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
|
shieldPalettesFrame = Frame(romOptionsFrame)
|
||||||
|
shieldPalettesFrame.grid(row=5, column=0, sticky=E)
|
||||||
|
shieldPalettesLabel = Label(shieldPalettesFrame, text='Shield palettes')
|
||||||
|
shieldPalettesLabel.pack(side=LEFT)
|
||||||
|
vars.shieldPalettesVar = StringVar()
|
||||||
|
vars.shieldPalettesVar.set('default')
|
||||||
|
shieldPalettesOptionMenu = OptionMenu(shieldPalettesFrame, vars.shieldPalettesVar, 'default', 'random', 'blackout', 'grayscale', 'negative', 'classic', 'dizzy', 'sick', 'puke')
|
||||||
|
shieldPalettesOptionMenu.pack(side=LEFT)
|
||||||
|
|
||||||
|
return romOptionsFrame, vars, set_sprite
|
||||||
|
|
||||||
|
|
||||||
class SpriteSelector():
|
class SpriteSelector():
|
||||||
def __init__(self, parent, callback, adjuster=False):
|
def __init__(self, parent, callback, adjuster=False):
|
||||||
if is_bundled():
|
|
||||||
self.deploy_icons()
|
self.deploy_icons()
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.window = Toplevel(parent)
|
self.window = Toplevel(parent)
|
||||||
|
|
4
Utils.py
4
Utils.py
|
@ -343,8 +343,8 @@ def get_adjuster_settings(romfile: str) -> typing.Tuple[str, bool]:
|
||||||
f"Enter yes, no or never: ")
|
f"Enter yes, no or never: ")
|
||||||
if adjust_wanted and adjust_wanted.startswith("y"):
|
if adjust_wanted and adjust_wanted.startswith("y"):
|
||||||
adjusted = True
|
adjusted = True
|
||||||
import AdjusterMain
|
import Adjuster
|
||||||
_, romfile = AdjusterMain.adjust(adjuster_settings)
|
_, romfile = Adjuster.adjust(adjuster_settings)
|
||||||
elif adjust_wanted and "never" in adjust_wanted:
|
elif adjust_wanted and "never" in adjust_wanted:
|
||||||
persistent_store("adjuster", "never_adjust", True)
|
persistent_store("adjuster", "never_adjust", True)
|
||||||
return romfile, False
|
return romfile, False
|
||||||
|
|
7
setup.py
7
setup.py
|
@ -48,8 +48,8 @@ def manifest_creation():
|
||||||
path = os.path.join(dirpath, filename)
|
path = os.path.join(dirpath, filename)
|
||||||
hashes[os.path.relpath(path, start=buildfolder)] = pool.submit(_threaded_hash, path)
|
hashes[os.path.relpath(path, start=buildfolder)] = pool.submit(_threaded_hash, path)
|
||||||
import json
|
import json
|
||||||
manifest = {"buildtime": buildtime.isoformat(sep=" ", timespec="seconds")}
|
manifest = {"buildtime": buildtime.isoformat(sep=" ", timespec="seconds"),
|
||||||
manifest["hashes"] = {path: hash.result() for path, hash in hashes.items()}
|
"hashes": {path: hash.result() for path, hash in hashes.items()}}
|
||||||
json.dump(manifest, open(manifestpath, "wt"), indent=4)
|
json.dump(manifest, open(manifestpath, "wt"), indent=4)
|
||||||
print("Created Manifest")
|
print("Created Manifest")
|
||||||
|
|
||||||
|
@ -58,7 +58,8 @@ scripts = {"MultiClient.py": "BerserkerMultiClient",
|
||||||
"MultiMystery.py": "BerserkerMultiMystery",
|
"MultiMystery.py": "BerserkerMultiMystery",
|
||||||
"MultiServer.py": "BerserkerMultiServer",
|
"MultiServer.py": "BerserkerMultiServer",
|
||||||
"gui.py": "BerserkerMultiCreator",
|
"gui.py": "BerserkerMultiCreator",
|
||||||
"Mystery.py": "BerserkerMystery"}
|
"Mystery.py": "BerserkerMystery",
|
||||||
|
"Adjuster.py": "BerserkerLttPAdjuster"}
|
||||||
|
|
||||||
exes = []
|
exes = []
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue