# Path: extract/unique_postfix.py
# def add_unique_postfix(fn, check_fn = os.path.exists):
#     if not check_fn(fn):
#         return fn
# 
#     path, name = os.path.split(fn)
#     name, ext = os.path.splitext(name)
# 
#     make_fn = lambda i: os.path.join(path, '%s_%d%s' % (name, i, ext))
# 
#     for i in xrange(2, sys.maxint):
#         uni_fn = make_fn(i)
#         if not check_fn(uni_fn):
#             return uni_fn
# 
#     return None


from enum import Enum
from .unique_postfix import add_unique_postfix
    GAMES.full:     {START: 0x00103C5C, COUNT: 0x00103C54, NAME_OFFSET: 0xC0},
    GAMES.best:     {START: 0x000F5200, COUNT: 0x000F5A10, NAME_OFFSET: 0xA0},
    GAMES.hack_v1:  {START: 0x000F5220, COUNT: 0x000F5A30, NAME_OFFSET: 0xC0},
    GAMES.hack_v2:  {START: 0x000F5220, COUNT: 0x000F5A30, NAME_OFFSET: 0xC0},
  }
}

############################################################
### FUNCTIONS
############################################################

##################################################
### 
##################################################
def guess_game(eboot_data):
  len = eboot_data.len / 8
  
  for game in EBOOT_SIZES:
    if EBOOT_SIZES[game] == len:
      return game
  
  return None

##################################################
### 
##################################################
def get_toc(eboot_data, umdimage):
  
  game = guess_game(eboot_data)
  

# Path: extract/unique_postfix.py
# def add_unique_postfix(fn, check_fn = os.path.exists):
#     if not check_fn(fn):
#         return fn
# 
#     path, name = os.path.split(fn)
#     name, ext = os.path.splitext(name)
# 
#     make_fn = lambda i: os.path.join(path, '%s_%d%s' % (name, i, ext))
# 
#     for i in xrange(2, sys.maxint):
#         uni_fn = make_fn(i)
#         if not check_fn(uni_fn):
#             return uni_fn
# 
#     return None


# Path: extract/eboot.py
from enum import Enum
from .unique_postfix import add_unique_postfix

    GAMES.full:     {START: 0x00103C5C, COUNT: 0x00103C54, NAME_OFFSET: 0xC0},
    GAMES.best:     {START: 0x000F5200, COUNT: 0x000F5A10, NAME_OFFSET: 0xA0},
    GAMES.hack_v1:  {START: 0x000F5220, COUNT: 0x000F5A30, NAME_OFFSET: 0xC0},
    GAMES.hack_v2:  {START: 0x000F5220, COUNT: 0x000F5A30, NAME_OFFSET: 0xC0},
  }
}

############################################################
### FUNCTIONS
############################################################

##################################################
### 
##################################################
def guess_game(eboot_data):
  len = eboot_data.len / 8
  
  for game in EBOOT_SIZES:
    if EBOOT_SIZES[game] == len:
      return game
  
  return None

##################################################
### 
##################################################
def get_toc(eboot_data, umdimage):
  
  game = guess_game(eboot_data)
  

  if game == None: