Fastmenu update
Fastmenu is now a variable menu speed setting instead of an on/off toggle. This update reflects that and gives the player a lot of options for the particular setting (normal, instant, double, triple, quadruple, half). A smaller change in this update is removing quickswap and fastmenu from the output file name of the randomizer (reflective of how the adjuster allows them to be shifted freely anyway) and shortening the verbiage for when progressive settings are changed (quality of life change there).
This commit is contained in:
parent
971c7b9365
commit
398de826f8
|
@ -17,7 +17,11 @@ def main():
|
|||
|
||||
parser.add_argument('--rom', default='ER_base.sfc', help='Path to an ALttP JAP(1.0) rom to use as a base.')
|
||||
parser.add_argument('--loglevel', default='info', const='info', nargs='?', choices=['error', 'info', 'warning', 'debug'], help='Select level of logging for output.')
|
||||
parser.add_argument('--fastmenu', help='Enable instant menu', action='store_true')
|
||||
parser.add_argument('--fastmenu', default='normal', const='normal', nargs='?', choices=['normal', 'instant', 'double', 'triple', 'quadruple', 'half'],
|
||||
help='''\
|
||||
Select the rate at which the menu opens and closes.
|
||||
(default: %(default)s)
|
||||
''')
|
||||
parser.add_argument('--quickswap', help='Enable quick item swapping with L and R.', action='store_true')
|
||||
parser.add_argument('--disablemusic', help='Disables game music.', action='store_true')
|
||||
parser.add_argument('--heartbeep', default='normal', const='normal', nargs='?', choices=['normal', 'half', 'quarter', 'off'],
|
||||
|
|
|
@ -741,7 +741,7 @@ class Spoiler(object):
|
|||
outfile.write('All Locations Accessible: %s\n' % ('Yes' if self.metadata['completeable'] else 'No, some locations may be unreachable'))
|
||||
outfile.write('Maps and Compasses in Dungeons: %s\n' % ('Yes' if self.metadata['dungeonitems'] else 'No'))
|
||||
outfile.write('L\\R Quickswap enabled: %s\n' % ('Yes' if self.metadata['quickswap'] else 'No'))
|
||||
outfile.write('Fastmenu enabled: %s\n' % ('Yes' if self.metadata['fastmenu'] else 'No'))
|
||||
outfile.write('Menu speed: %s\n' % self.metadata['fastmenu'])
|
||||
outfile.write('Keysanity enabled: %s' % ('Yes' if self.metadata['keysanity'] else 'No'))
|
||||
if self.entrances:
|
||||
outfile.write('\n\nEntrances:\n\n')
|
||||
|
|
|
@ -152,7 +152,11 @@ def start():
|
|||
--seed given will produce the same 10 (different) roms each
|
||||
time).
|
||||
''', type=int)
|
||||
parser.add_argument('--fastmenu', help='Enable instant menu', action='store_true')
|
||||
parser.add_argument('--fastmenu', default='normal', const='normal', nargs='?', choices=['normal', 'instant', 'double', 'triple', 'quadruple', 'half'],
|
||||
help='''\
|
||||
Select the rate at which the menu opens and closes.
|
||||
(default: %(default)s)
|
||||
''')
|
||||
parser.add_argument('--quickswap', help='Enable quick item swapping with L and R.', action='store_true')
|
||||
parser.add_argument('--disablemusic', help='Disables game music.', action='store_true')
|
||||
parser.add_argument('--keysanity', help='''\
|
||||
|
|
26
Gui.py
26
Gui.py
|
@ -58,8 +58,6 @@ def guiMain(args=None):
|
|||
suppressRomCheckbutton = Checkbutton(checkBoxFrame, text="Do not create patched Rom", variable=suppressRomVar)
|
||||
quickSwapVar = IntVar()
|
||||
quickSwapCheckbutton = Checkbutton(checkBoxFrame, text="Enabled L/R Item quickswapping", variable=quickSwapVar)
|
||||
fastMenuVar = IntVar()
|
||||
fastMenuCheckbutton = Checkbutton(checkBoxFrame, text="Enable instant menu", variable=fastMenuVar)
|
||||
keysanityVar = IntVar()
|
||||
keysanityCheckbutton = Checkbutton(checkBoxFrame, text="Keysanity (keys anywhere)", variable=keysanityVar)
|
||||
dungeonItemsVar = IntVar()
|
||||
|
@ -74,7 +72,6 @@ def guiMain(args=None):
|
|||
createSpoilerCheckbutton.pack(expand=True, anchor=W)
|
||||
suppressRomCheckbutton.pack(expand=True, anchor=W)
|
||||
quickSwapCheckbutton.pack(expand=True, anchor=W)
|
||||
fastMenuCheckbutton.pack(expand=True, anchor=W)
|
||||
keysanityCheckbutton.pack(expand=True, anchor=W)
|
||||
dungeonItemsCheckbutton.pack(expand=True, anchor=W)
|
||||
beatableOnlyCheckbutton.pack(expand=True, anchor=W)
|
||||
|
@ -204,6 +201,15 @@ def guiMain(args=None):
|
|||
heartbeepLabel = Label(heartbeepFrame, text='Heartbeep sound rate')
|
||||
heartbeepLabel.pack(side=LEFT)
|
||||
|
||||
|
||||
fastMenuFrame = Frame(drowDownFrame)
|
||||
fastMenuVar = StringVar()
|
||||
fastMenuVar.set('normal')
|
||||
fastMenuOptionMenu = OptionMenu(fastMenuFrame, fastMenuVar, 'normal', 'instant', 'double', 'triple', 'quadruple', 'half')
|
||||
fastMenuOptionMenu.pack(side=RIGHT)
|
||||
fastMenuLabel = Label(fastMenuFrame, text='Menu speed')
|
||||
fastMenuLabel.pack(side=LEFT)
|
||||
|
||||
modeFrame.pack(expand=True, anchor=E)
|
||||
logicFrame.pack(expand=True, anchor=E)
|
||||
goalFrame.pack(expand=True, anchor=E)
|
||||
|
@ -213,6 +219,7 @@ def guiMain(args=None):
|
|||
algorithmFrame.pack(expand=True, anchor=E)
|
||||
shuffleFrame.pack(expand=True, anchor=E)
|
||||
heartbeepFrame.pack(expand=True, anchor=E)
|
||||
fastMenuFrame.pack(expand=True, anchor=E)
|
||||
|
||||
bottomFrame = Frame(randomizerWindow)
|
||||
|
||||
|
@ -236,12 +243,12 @@ def guiMain(args=None):
|
|||
guiargs.algorithm = algorithmVar.get()
|
||||
guiargs.shuffle = shuffleVar.get()
|
||||
guiargs.heartbeep = heartbeepVar.get()
|
||||
guiargs.fastmenu = fastMenuVar.get()
|
||||
guiargs.create_spoiler = bool(createSpoilerVar.get())
|
||||
guiargs.suppress_rom = bool(suppressRomVar.get())
|
||||
guiargs.keysanity = bool(keysanityVar.get())
|
||||
guiargs.nodungeonitems = bool(dungeonItemsVar.get())
|
||||
guiargs.beatableonly = bool(beatableOnlyVar.get())
|
||||
guiargs.fastmenu = bool(fastMenuVar.get())
|
||||
guiargs.quickswap = bool(quickSwapVar.get())
|
||||
guiargs.disablemusic = bool(disableMusicVar.get())
|
||||
guiargs.shuffleganon = bool(shuffleGanonVar.get())
|
||||
|
@ -283,11 +290,9 @@ def guiMain(args=None):
|
|||
checkBoxFrame2 = Frame(rightHalfFrame2)
|
||||
|
||||
quickSwapCheckbutton2 = Checkbutton(checkBoxFrame2, text="Enabled L/R Item quickswapping", variable=quickSwapVar)
|
||||
fastMenuCheckbutton2 = Checkbutton(checkBoxFrame2, text="Enable instant menu", variable=fastMenuVar)
|
||||
disableMusicCheckbutton2 = Checkbutton(checkBoxFrame2, text="Disable game music", variable=disableMusicVar)
|
||||
|
||||
quickSwapCheckbutton2.pack(expand=True, anchor=W)
|
||||
fastMenuCheckbutton2.pack(expand=True, anchor=W)
|
||||
disableMusicCheckbutton2.pack(expand=True, anchor=W)
|
||||
|
||||
fileDialogFrame2 = Frame(rightHalfFrame2)
|
||||
|
@ -332,7 +337,14 @@ def guiMain(args=None):
|
|||
heartbeepLabel2 = Label(heartbeepFrame2, text='Heartbeep sound rate')
|
||||
heartbeepLabel2.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)
|
||||
|
||||
heartbeepFrame2.pack(expand=True, anchor=E)
|
||||
fastMenuFrame2.pack(expand=True, anchor=E)
|
||||
|
||||
bottomFrame2 = Frame(topFrame2)
|
||||
|
||||
|
@ -368,7 +380,6 @@ def guiMain(args=None):
|
|||
if args.nodungeonitems:
|
||||
dungeonItemsVar.set(int(not args.nodungeonitems))
|
||||
beatableOnlyVar.set(int(args.beatableonly))
|
||||
fastMenuVar.set(int(args.fastmenu))
|
||||
quickSwapVar.set(int(args.quickswap))
|
||||
disableMusicVar.set(int(args.disablemusic))
|
||||
if args.count:
|
||||
|
@ -383,6 +394,7 @@ def guiMain(args=None):
|
|||
algorithmVar.set(args.algorithm)
|
||||
shuffleVar.set(args.shuffle)
|
||||
heartbeepVar.set(args.heartbeep)
|
||||
fastMenuVar.set(args.fastmenu)
|
||||
logicVar.set(args.logic)
|
||||
romVar.set(args.rom)
|
||||
shuffleGanonVar.set(args.shuffleganon)
|
||||
|
|
2
Main.py
2
Main.py
|
@ -101,7 +101,7 @@ def main(args, seed=None):
|
|||
else:
|
||||
sprite = None
|
||||
|
||||
outfilebase = 'ER_%s_%s-%s-%s%s_%s-%s%s%s%s%s%s_%s' % (world.logic, world.difficulty, world.mode, world.goal, "" if world.timer in ['none', 'display'] else "-" + world.timer, world.shuffle, world.algorithm, "-keysanity" if world.keysanity else "", "-progressives_" + world.progressive if world.progressive in ['off', 'random'] else "", "-fastmenu" if world.fastmenu else "", "-quickswap" if world.quickswap else "", "-shuffleganon" if world.shuffle_ganon else "", world.seed)
|
||||
outfilebase = 'ER_%s_%s-%s-%s%s_%s-%s%s%s%s_%s' % (world.logic, world.difficulty, world.mode, world.goal, "" if world.timer in ['none', 'display'] else "-" + world.timer, world.shuffle, world.algorithm, "-keysanity" if world.keysanity else "", "-prog_" + world.progressive if world.progressive in ['off', 'random'] else "", "-shuffleganon" if world.shuffle_ganon else "", world.seed)
|
||||
|
||||
if not args.suppress_rom:
|
||||
if args.jsonout:
|
||||
|
|
|
@ -210,7 +210,11 @@ def start():
|
|||
parser.add_argument('--rom', default='Zelda no Densetsu - Kamigami no Triforce (Japan).sfc', help='Path to an ALttP JAP(1.0) rom to use as a base.')
|
||||
parser.add_argument('--loglevel', default='info', const='info', nargs='?', choices=['error', 'info', 'warning', 'debug'], help='Select level of logging for output.')
|
||||
parser.add_argument('--seed', help='Define seed number to generate.', type=int)
|
||||
parser.add_argument('--fastmenu', help='Enable instant menu', action='store_true')
|
||||
parser.add_argument('--fastmenu', default='normal', const='normal', nargs='?', choices=['normal', 'instant', 'double', 'triple', 'quadruple', 'half'],
|
||||
help='''\
|
||||
Select the rate at which the menu opens and closes.
|
||||
(default: %(default)s)
|
||||
''')
|
||||
parser.add_argument('--quickswap', help='Enable quick item swapping with L and R.', action='store_true')
|
||||
parser.add_argument('--disablemusic', help='Disables game music.', action='store_true')
|
||||
parser.add_argument('--heartbeep', default='normal', const='normal', nargs='?', choices=['normal', 'half', 'quarter', 'off'],
|
||||
|
|
12
README.md
12
README.md
|
@ -239,6 +239,10 @@ The dungeon variants only mix up dungeons and keep the rest of the overworld van
|
|||
|
||||
Select frequency of beeps when on low health. Can completely disable them.
|
||||
|
||||
## Menu Speed
|
||||
|
||||
A setting that lets the player set the rate at which the menu opens and closes.
|
||||
|
||||
## Create Spoiler Log
|
||||
|
||||
Output a Spoiler File.
|
||||
|
@ -252,10 +256,6 @@ generate spoilers for statistical analysis.
|
|||
|
||||
Use to enable quick item swap with L/R buttons
|
||||
|
||||
## Instant Menu
|
||||
|
||||
As an alternative to quickswap, opens menu instantly.
|
||||
|
||||
## Keysanity
|
||||
|
||||
This setting allows dungeon specific items (Small Key, Big Key, Map, Compass) to be distributed anywhere in the world and not just
|
||||
|
@ -378,10 +378,10 @@ Set the count option (default: None)
|
|||
Use to enable quick item swap with L/R buttons. (default: False)
|
||||
|
||||
```
|
||||
--fastmenu
|
||||
--fastmenu [{normal,instant,double,triple,quadruple,half}]
|
||||
```
|
||||
|
||||
As an alternative to quickswap, opens menu instantly. (default: False)
|
||||
Alters the rate at which the menu opens and closes. (default: normal)
|
||||
|
||||
|
||||
```
|
||||
|
|
17
Rom.py
17
Rom.py
|
@ -744,17 +744,26 @@ def patch_rom(world, rom, hashtable, beep='normal', sprite=None):
|
|||
def apply_rom_settings(rom, beep, quickswap, fastmenu, disable_music, sprite):
|
||||
|
||||
# enable instant item menu
|
||||
if fastmenu:
|
||||
rom.write_byte(0x180048, 0x01)
|
||||
# Sound tweaks for fastmenu:
|
||||
if fastmenu == 'instant':
|
||||
rom.write_byte(0x6DD9A, 0x20)
|
||||
rom.write_byte(0x6DF2A, 0x20)
|
||||
rom.write_byte(0x6E0E9, 0x20)
|
||||
else:
|
||||
rom.write_byte(0x180048, 0x00)
|
||||
rom.write_byte(0x6DD9A, 0x11)
|
||||
rom.write_byte(0x6DF2A, 0x12)
|
||||
rom.write_byte(0x6E0E9, 0x12)
|
||||
if fastmenu == 'instant':
|
||||
rom.write_byte(0x180048, 0xE8)
|
||||
elif fastmenu == 'double':
|
||||
rom.write_byte(0x180048, 0x10)
|
||||
elif fastmenu == 'triple':
|
||||
rom.write_byte(0x180048, 0x18)
|
||||
elif fastmenu == 'quadruple':
|
||||
rom.write_byte(0x180048, 0x20)
|
||||
elif fastmenu == 'half':
|
||||
rom.write_byte(0x180048, 0x04)
|
||||
else:
|
||||
rom.write_byte(0x180048, 0x08)
|
||||
|
||||
# enable quick item swapping with L and R (ported by Amazing Ampharos)
|
||||
if quickswap:
|
||||
|
|
Loading…
Reference in New Issue