mirror of
				https://github.com/Atmosphere-NX/Atmosphere.git
				synced 2025-10-31 03:05:48 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from PIL import Image
 | |
| import sys, os
 | |
| from struct import pack as pk
 | |
| 
 | |
| SPLASH_SCREEN_WIDTH  = 1280
 | |
| SPLASH_SCREEN_HEIGHT = 720
 | |
| 
 | |
| SPLASH_SCREEN_STRIDE = 768
 | |
| 
 | |
| def convert_image(image_fn):
 | |
|     splash = Image.open(image_fn, 'r')
 | |
|     w, h = splash.size
 | |
|     if w == 1280 and h == 720:
 | |
|         splash = splash.transpose(Image.ROTATE_90)
 | |
|         w, h = splash.size
 | |
|     assert w == 720
 | |
|     assert h == 1280
 | |
|     splash = splash.convert('RGBA')
 | |
|     splash_bin = b''
 | |
|     for row in range(SPLASH_SCREEN_WIDTH):
 | |
|         for col in range(SPLASH_SCREEN_HEIGHT):
 | |
|             r, g, b, a = splash.getpixel((col, row))
 | |
|             splash_bin += pk('<BBBB', b, g, r, a)
 | |
|         splash_bin += b'\x00' * ((SPLASH_SCREEN_STRIDE - SPLASH_SCREEN_HEIGHT) * 4)
 | |
|     return splash_bin
 | |
| 
 | |
| def main(argc, argv):
 | |
|     if argc != 3:
 | |
|         print('Usage: %s image package3' % argv[0])
 | |
|         return 1
 | |
|     with open(argv[2], 'rb') as f:
 | |
|         package3 = f.read()
 | |
|     assert package3[:4] == b'PK31'
 | |
|     assert len(package3) == 0x800000
 | |
|     splash_bin = convert_image(argv[1])
 | |
|     assert len(splash_bin) == 0x3C0000
 | |
|     with open(argv[2], 'wb') as f:
 | |
|         f.write(package3[:0x400000])
 | |
|         f.write(splash_bin)
 | |
|         f.write(package3[0x7C0000:])
 | |
|     return 0
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     sys.exit(main(len(sys.argv), sys.argv)) |