52 lines
No EOL
2.8 KiB
Python
52 lines
No EOL
2.8 KiB
Python
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')
|
|
|
|
if __name__ == '__main__':
|
|
if len(sys.argv) == 2:
|
|
if sys.argv[1].endswith('.nds') or sys.argv[1].endswith('.ids'):
|
|
with open(sys.argv[1], mode='rb') as nds:
|
|
logger.info('Title : {}'.format(nds_get_info('title', nds)))
|
|
logger.info('Game code : {}'.format(nds_get_info('gamecode', nds)))
|
|
logger.info('Maker code : {}'.format(nds_get_info('makercode', nds)))
|
|
logger.info('Unit code : {}'.format(nds_get_info('unitcode', nds)))
|
|
logger.info('Encryption seed : {}'.format(nds_get_info('encryptionseed', nds)))
|
|
logger.info('Device capacity : {}'.format(nds_get_info('devicecapacity', nds)))
|
|
if 'DSi ' in nds_get_info('unitcode', nds):
|
|
logger.info('Game revision : {} (DSi only)'.format(nds_get_info('gamerevision', nds)))
|
|
logger.info('Game region : {}'.format(nds_get_info('region', nds)))
|
|
|
|
if sys.argv[1].endswith('.gba'):
|
|
with open(sys.argv[1], mode='rb') as gba:
|
|
logger.info('Logo : {}'.format(gba_get_info('nintendologo', gba)))
|
|
logger.info('Title : {}'.format(gba_get_info('title', gba)))
|
|
logger.info('Game code : {}'.format(gba_get_info('gamecode', gba)))
|
|
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.')
|
|
|
|
# Info taken from:
|
|
# https://dsibrew.org/wiki/DSi_cartridge_header
|
|
# https://scenegate.github.io/Ekona/specs/cartridge/header.html
|
|
# https://problemkaputt.de/gbatek-ds-cartridge-header.htm
|
|
# https://gist.github.com/pleonex/6265017 |