38 lines
No EOL
2.1 KiB
Python
38 lines
No EOL
2.1 KiB
Python
import sys
|
|
|
|
from logger import Logger
|
|
from rominfo.nintendo_ds import nds_get_info
|
|
from rominfo.gameboy_advance import gba_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)))
|
|
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 |