Updated main.py and added nintendo_switch.py and super_famicom.py, both W.I.P.
This commit is contained in:
parent
b344c6c05a
commit
aa584d5dc4
3 changed files with 58 additions and 0 deletions
14
main.py
14
main.py
|
@ -3,6 +3,8 @@ import sys
|
|||
from logger import Logger
|
||||
from rominfo.nintendo_ds import nds_get_info
|
||||
from rominfo.gameboy_advance import gba_get_info
|
||||
from rominfo.super_famicom import sfc_get_info
|
||||
from rominfo.nintendo_switch import switch_get_info
|
||||
|
||||
logger = Logger('RomInfo')
|
||||
|
||||
|
@ -28,6 +30,18 @@ if __name__ == '__main__':
|
|||
logger.info('Maker code : {}'.format(gba_get_info('makercode', gba)))
|
||||
logger.info('Software version : {}'.format(gba_get_info('softwareversion', gba)))
|
||||
logger.info('Complement check : {}'.format(gba_get_info('complement', gba)))
|
||||
|
||||
if sys.argv[1].endswith('.sfc') or sys.argv[1].endswith('.smc'):
|
||||
with open(sys.argv[1], mode='rb') as sfc:
|
||||
logger.info('Title : {}'.format(sfc_get_info('title', sfc)))
|
||||
|
||||
if sys.argv[1].endswith('.xci'):
|
||||
with open(sys.argv[1], mode='rb') as xci:
|
||||
pass
|
||||
# logger.info('Title : {}'.format(switch_get_info('title', xci)))
|
||||
# logger.info('Capacity : {}'.format(switch_get_info('capacity', xci)))
|
||||
# logger.info('Magic : {}'.format(switch_get_info('magic', xci))) # Always returns b'HEAD'
|
||||
|
||||
else:
|
||||
logger.error('No ROM specified. App requires one argument.')
|
||||
|
||||
|
|
34
rominfo/nintendo_switch.py
Normal file
34
rominfo/nintendo_switch.py
Normal file
|
@ -0,0 +1,34 @@
|
|||
from typing import BinaryIO
|
||||
|
||||
|
||||
# TODO: Implement hactool to fetch more XCI info
|
||||
|
||||
def switch_get_info(opt: str, inf: BinaryIO):
|
||||
match opt.lower():
|
||||
case 'title':
|
||||
inf.seek(0x1000)
|
||||
return inf.read(0x100)
|
||||
case 'capacity':
|
||||
inf.seek(0x10D)
|
||||
return _get_rom_size(inf.read(0x1))
|
||||
case 'magic':
|
||||
inf.seek(0x100)
|
||||
return inf.read(0x4)
|
||||
|
||||
|
||||
def _get_rom_size(size):
|
||||
match size:
|
||||
case b'\xfa':
|
||||
return '1 GB ({})'.format(size)
|
||||
case b'\xf8':
|
||||
return '2 GB ({})'.format(size)
|
||||
case b'\xf0':
|
||||
return '4 GB ({})'.format(size)
|
||||
case b'\xe0':
|
||||
return '8 GB ({})'.format(size)
|
||||
case b'\xe1':
|
||||
return '16 GB ({})'.format(size)
|
||||
case b'\xe2':
|
||||
return '32 GB ({})'.format(size)
|
||||
case _:
|
||||
return size
|
10
rominfo/super_famicom.py
Normal file
10
rominfo/super_famicom.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from typing import BinaryIO
|
||||
|
||||
|
||||
def sfc_get_info(opt: str, inf: BinaryIO):
|
||||
match opt:
|
||||
case 'title':
|
||||
inf.seek(4016)
|
||||
return inf.read(2)
|
||||
case _:
|
||||
return 'Unknown'
|
Loading…
Add table
Reference in a new issue