Import project.
This commit is contained in:
parent
2b0ba1a362
commit
2e9467c693
3 changed files with 107 additions and 0 deletions
55
rominfo/nintendo_ds.py
Normal file
55
rominfo/nintendo_ds.py
Normal file
|
@ -0,0 +1,55 @@
|
|||
from math import pow
|
||||
from typing import BinaryIO
|
||||
|
||||
|
||||
def nds_get_info(opt: str, inf: BinaryIO):
|
||||
match opt.lower():
|
||||
case 'title':
|
||||
inf.seek(0x000)
|
||||
return inf.read(12).decode()
|
||||
case 'gamecode':
|
||||
inf.seek(0x00C)
|
||||
return inf.read(4).decode()
|
||||
case 'makercode':
|
||||
inf.seek(0x010)
|
||||
return _maker_lookup(inf.read(2).decode())
|
||||
case 'unitcode':
|
||||
inf.seek(0x012)
|
||||
return _unit_lookup(inf.read(1))
|
||||
case 'encryptionseed':
|
||||
inf.seek(0x013)
|
||||
return str(int.from_bytes(inf.read(1), 'little'))
|
||||
case 'devicecapacity':
|
||||
inf.seek(0x014)
|
||||
return _capacity_lookup(int.from_bytes(inf.read(1), 'little'))
|
||||
case _:
|
||||
return 'Unknown'
|
||||
|
||||
|
||||
def _maker_lookup(code: str) -> str:
|
||||
match code:
|
||||
case '01':
|
||||
return 'Nintendo ({})'.format(code)
|
||||
case 'GD':
|
||||
return 'Square-Enix ({})'.format(code)
|
||||
case _:
|
||||
return 'Unknown ({})'.format(code)
|
||||
|
||||
|
||||
def _unit_lookup(code: bytes) -> str:
|
||||
if code == b'\x00':
|
||||
return 'NDS (00h)'
|
||||
elif code == b'\x02':
|
||||
return 'DSi Enhanced (02h)'
|
||||
elif code == b'\x03':
|
||||
return 'DSi Exclusive (03h)'
|
||||
else:
|
||||
return 'Unknown ({})'.format(code)
|
||||
|
||||
|
||||
def _capacity_lookup(code: int) -> str: # 512Mbit (67108864 bytes) (09h)
|
||||
match code:
|
||||
case 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12:
|
||||
return '{} MB ({})'.format(round(128 * pow(2, code) / 1024), '{}h'.format(str(code).zfill(2)))
|
||||
case _:
|
||||
return 'Unknown ({})'.format(code)
|
Loading…
Add table
Add a link
Reference in a new issue