mirror of https://github.com/zeldaret/oot.git
				
				
				
			
		
			
				
	
	
		
			33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/env python3
 | |
| 
 | |
| import argparse
 | |
| 
 | |
| def decode_rgba5551(short, max=False):
 | |
|     red = (short & 0xF800) >> 8
 | |
|     green = (short & 0x07C0) >> 3
 | |
|     blue = (short & 0x003E) << 2
 | |
|     alpha = 1 if (short % 2) else 0
 | |
|     if max:
 | |
|         red |= red >> 5
 | |
|         green |= green >> 5
 | |
|         blue |= blue >> 5
 | |
|     return (red, green, blue, alpha)
 | |
| 
 | |
| def u16(x):
 | |
|     x = int(x, 16)
 | |
|     if x > 0xFFFF:
 | |
|         raise argparse.ArgumentTypeError("expecting a short (u16) representing a single color.")
 | |
|     return x
 | |
| 
 | |
| def main():
 | |
|     parser = argparse.ArgumentParser(description="Decodes a color encoded in rgba5551.")
 | |
|     parser.add_argument("short", type=u16, help="u16 raw value of the color to decode")
 | |
|     args = parser.parse_args()
 | |
|     print("Min: GPACK_RGBA5551(%d, %d, %d, %d)" % decode_rgba5551(args.short, max=False))
 | |
|     print("Max: GPACK_RGBA5551(%d, %d, %d, %d)" % decode_rgba5551(args.short, max=True))
 | |
|     print("Note: All RGB values between these encode to the given value.")
 | |
|     print("      Use the representation that makes the most sense.\n")
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main()
 |