mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-05-28 21:54:10 -04:00
ams: support building unit test programs on windows/linux/macos
This commit is contained in:
parent
9a38be201a
commit
64a97576d0
756 changed files with 33359 additions and 9372 deletions
|
@ -22,15 +22,15 @@ def get_overlay(program, i):
|
|||
|
||||
KIP_NAMES = [b'Loader', b'NCM', b'ProcessManager', b'sm', b'boot', b'spl', b'ams_mitm']
|
||||
|
||||
def get_kips(ams_dir):
|
||||
def get_kips(ams_dir, build_out_dir):
|
||||
emummc = read_file(os.path.join(ams_dir, 'emummc/emummc_unpacked.kip'))
|
||||
loader = read_file(os.path.join(ams_dir, 'stratosphere/loader/loader.kip'))
|
||||
ncm = read_file(os.path.join(ams_dir, 'stratosphere/ncm/ncm.kip'))
|
||||
pm = read_file(os.path.join(ams_dir, 'stratosphere/pm/pm.kip'))
|
||||
sm = read_file(os.path.join(ams_dir, 'stratosphere/sm/sm.kip'))
|
||||
boot = read_file(os.path.join(ams_dir, 'stratosphere/boot/boot.kip'))
|
||||
spl = read_file(os.path.join(ams_dir, 'stratosphere/spl/spl.kip'))
|
||||
ams_mitm = read_file(os.path.join(ams_dir, 'stratosphere/ams_mitm/ams_mitm.kip'))
|
||||
loader = read_file(os.path.join(ams_dir, 'stratosphere/loader/%s/loader.kip' % build_out_dir))
|
||||
ncm = read_file(os.path.join(ams_dir, 'stratosphere/ncm/%s/ncm.kip' % build_out_dir))
|
||||
pm = read_file(os.path.join(ams_dir, 'stratosphere/pm/%s/pm.kip' % build_out_dir))
|
||||
sm = read_file(os.path.join(ams_dir, 'stratosphere/sm/%s/sm.kip' % build_out_dir))
|
||||
boot = read_file(os.path.join(ams_dir, 'stratosphere/boot/%s/boot.kip' % build_out_dir))
|
||||
spl = read_file(os.path.join(ams_dir, 'stratosphere/spl/%s/spl.kip' % build_out_dir))
|
||||
ams_mitm = read_file(os.path.join(ams_dir, 'stratosphere/ams_mitm/%s/ams_mitm.kip' % build_out_dir))
|
||||
return (emummc, {
|
||||
b'Loader' : loader,
|
||||
b'NCM' : ncm,
|
||||
|
@ -134,39 +134,40 @@ def write_kips(f, all_kips):
|
|||
f.write(b'\xCC' * (0x300000 - tot))
|
||||
|
||||
def main(argc, argv):
|
||||
if argc != 12:
|
||||
print('Usage: %s ams_dir target revision major minor micro relstep s_major s_minor s_micro s_relstep' % argv[0])
|
||||
if argc != 13:
|
||||
print('Usage: %s ams_dir build_out_dir build_boot_out_dir revision major minor micro relstep s_major s_minor s_micro s_relstep' % argv[0])
|
||||
return 1
|
||||
# Parse arguments
|
||||
ams_dir = argv[1]
|
||||
target = '' if argv[2] == 'release' else ('_%s' % argv[2])
|
||||
revision = int(argv[3][:8], 16)
|
||||
major = int(argv[4])
|
||||
minor = int(argv[5])
|
||||
micro = int(argv[6])
|
||||
relstep = int(argv[7])
|
||||
s_major = int(argv[8])
|
||||
s_minor = int(argv[9])
|
||||
s_micro = int(argv[10])
|
||||
s_relstep = int(argv[11])
|
||||
ams_dir = argv[1]
|
||||
build_out_dir = argv[2]
|
||||
build_boot_out_dir = argv[3]
|
||||
revision = int(argv[4][:8], 16)
|
||||
major = int(argv[5])
|
||||
minor = int(argv[6])
|
||||
micro = int(argv[7])
|
||||
relstep = int(argv[8])
|
||||
s_major = int(argv[9])
|
||||
s_minor = int(argv[10])
|
||||
s_micro = int(argv[11])
|
||||
s_relstep = int(argv[12])
|
||||
# Read/parse fusee
|
||||
fusee_program = read_file(os.path.join(ams_dir, 'fusee/program/program%s.bin' % target))
|
||||
fusee_bin = read_file(os.path.join(ams_dir, 'fusee/fusee%s.bin' % target))
|
||||
fusee_program = read_file(os.path.join(ams_dir, 'fusee/program/%s/program.bin' % build_boot_out_dir))
|
||||
fusee_bin = read_file(os.path.join(ams_dir, 'fusee/%s/fusee.bin' % build_boot_out_dir))
|
||||
erista_mtc = get_overlay(fusee_program, 1)
|
||||
mariko_mtc = get_overlay(fusee_program, 2)
|
||||
erista_hsh = hashlib.sha256(erista_mtc[:-4]).digest()[:4]
|
||||
mariko_hsh = hashlib.sha256(mariko_mtc[:-4]).digest()[:4]
|
||||
# Read other files
|
||||
exosphere = read_file(os.path.join(ams_dir, 'exosphere/exosphere%s.bin' % target))
|
||||
warmboot = read_file(os.path.join(ams_dir, 'exosphere/warmboot%s.bin' % target))
|
||||
mariko_fatal = read_file(os.path.join(ams_dir, 'exosphere/mariko_fatal%s.bin' % target))
|
||||
rebootstub = read_file(os.path.join(ams_dir, 'exosphere/program/rebootstub/rebootstub%s.bin' % target))
|
||||
mesosphere = read_file(os.path.join(ams_dir, 'mesosphere/mesosphere%s.bin' % target))
|
||||
all_kips = get_kips(ams_dir)
|
||||
exosphere = read_file(os.path.join(ams_dir, 'exosphere/%s/exosphere.bin' % build_out_dir))
|
||||
warmboot = read_file(os.path.join(ams_dir, 'exosphere/warmboot/%s/warmboot.bin' % build_boot_out_dir))
|
||||
mariko_fatal = read_file(os.path.join(ams_dir, 'exosphere/mariko_fatal/%s/mariko_fatal.bin' % build_out_dir))
|
||||
rebootstub = read_file(os.path.join(ams_dir, 'exosphere/program/rebootstub/%s/rebootstub.bin' % build_boot_out_dir))
|
||||
mesosphere = read_file(os.path.join(ams_dir, 'mesosphere/%s/mesosphere.bin' % build_out_dir))
|
||||
all_kips = get_kips(ams_dir, build_out_dir)
|
||||
tsec_keygen = read_file(os.path.join(ams_dir, 'fusee/program/tsec_keygen/tsec_keygen.bin'))
|
||||
splash_bin = read_file(os.path.join(ams_dir, 'img/splash.bin'))
|
||||
assert len(splash_bin) == 0x3C0000
|
||||
with open(os.path.join(ams_dir, 'fusee/package3%s' % target), 'wb') as f:
|
||||
with open(os.path.join(ams_dir, 'fusee/%s/package3' % build_boot_out_dir), 'wb') as f:
|
||||
# Write header
|
||||
write_header(f, all_kips, len(warmboot), len(tsec_keygen), len(mariko_fatal), len(exosphere), len(mesosphere), len(fusee_bin), len(rebootstub), revision, major, minor, micro, relstep, s_major, s_minor, s_micro, s_relstep)
|
||||
# Write warmboot
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue