2018-01-01 18:11:11 +00:00
#!/usr/bin/env python3
2017-12-12 14:17:52 +00:00
import argparse
import os
import logging
import textwrap
import sys
from AdjusterMain import adjust
2020-01-09 01:30:00 +00:00
from Rom import get_sprite_from_name
2017-12-12 14:17:52 +00:00
class ArgumentDefaultsHelpFormatter ( argparse . RawTextHelpFormatter ) :
def _get_help_string ( self , action ) :
return textwrap . dedent ( action . help )
2017-12-17 05:25:46 +00:00
def main ( ) :
2017-12-12 14:17:52 +00:00
parser = argparse . ArgumentParser ( formatter_class = ArgumentDefaultsHelpFormatter )
2020-01-08 02:43:48 +00:00
parser . add_argument ( ' --rom ' , default = ' ER_base.sfc ' , help = ' Path to an ALttPR rom to adjust. ' )
parser . add_argument ( ' --baserom ' , default = ' Zelda no Densetsu - Kamigami no Triforce (Japan).sfc ' , help = ' Path to an ALttP JAP(1.0) rom to use as a base. ' )
2017-12-12 14:17:52 +00:00
parser . add_argument ( ' --loglevel ' , default = ' info ' , const = ' info ' , nargs = ' ? ' , choices = [ ' error ' , ' info ' , ' warning ' , ' debug ' ] , help = ' Select level of logging for output. ' )
2018-01-05 22:53:29 +00:00
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 )
''' )
2017-12-12 14:17:52 +00:00
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 ' )
2018-09-26 21:34:15 +00:00
parser . add_argument ( ' --heartbeep ' , default = ' normal ' , const = ' normal ' , nargs = ' ? ' , choices = [ ' double ' , ' normal ' , ' half ' , ' quarter ' , ' off ' ] ,
2017-12-12 14:17:52 +00:00
help = ''' \
Select the rate at which the heart beep sound is played at
low health . ( default : % ( default ) s )
''' )
2019-04-15 19:28:14 +00:00
parser . add_argument ( ' --heartcolor ' , default = ' red ' , const = ' red ' , nargs = ' ? ' , choices = [ ' red ' , ' blue ' , ' green ' , ' yellow ' , ' random ' ] ,
2018-02-28 02:26:33 +00:00
help = ' Select the color of Link \' s heart meter. (default: %(default)s ) ' )
2020-01-08 02:43:48 +00:00
parser . add_argument ( ' --ow_palettes ' , default = ' default ' , choices = [ ' default ' , ' random ' , ' blackout ' ] )
parser . add_argument ( ' --uw_palettes ' , default = ' default ' , choices = [ ' default ' , ' random ' , ' blackout ' ] )
2017-12-12 14:17:52 +00:00
parser . add_argument ( ' --sprite ' , help = ''' \
Path to a sprite sheet to use for Link . Needs to be in
binary format and have a length of 0x7000 ( 28672 ) bytes ,
or 0x7078 ( 28792 ) bytes including palette data .
Alternatively , can be a ALttP Rom patched with a Link
sprite that will be extracted .
''' )
2019-12-09 18:27:56 +00:00
parser . add_argument ( ' --names ' , default = ' ' , type = str )
2017-12-12 14:17:52 +00:00
args = parser . parse_args ( )
# ToDo: Validate files further than mere existance
if not os . path . isfile ( args . rom ) :
2020-01-08 02:43:48 +00:00
input ( ' Could not find valid rom for patching at expected path %s . Please run with -h to see help for further information. \n Press Enter to exit. ' % args . rom )
2017-12-12 14:17:52 +00:00
sys . exit ( 1 )
2020-01-09 01:30:00 +00:00
if args . sprite is not None and not os . path . isfile ( args . sprite ) and not get_sprite_from_name ( args . sprite ) :
input ( ' Could not find link sprite sheet at given location. \n Press Enter to exit. ' )
2017-12-12 14:17:52 +00:00
sys . exit ( 1 )
# set up logger
loglevel = { ' error ' : logging . ERROR , ' info ' : logging . INFO , ' warning ' : logging . WARNING , ' debug ' : logging . DEBUG } [ args . loglevel ]
logging . basicConfig ( format = ' %(message)s ' , level = loglevel )
2017-12-17 05:25:46 +00:00
adjust ( args = args )
if __name__ == ' __main__ ' :
main ( )