Advertisement
Guest User

mednfn pal

a guest
Nov 3rd, 2018
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.84 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import binascii
  4. import argparse
  5.  
  6. def invert(x):
  7.     if isinstance(x,str):
  8.         # str
  9.         return(~int(x,16) & 0xff)
  10.    
  11.     else:
  12.         return(~x & 0xff)
  13.    
  14. def create_parser():
  15.     parser = argparse.ArgumentParser()
  16.     parser.add_argument(
  17.         "-o","--out-file",
  18.         help="save to this file",
  19.         default="palette.pal"
  20.         )
  21.     parser.add_argument(
  22.         "--invert",
  23.         help="invert values",
  24.         nargs="?",
  25.         const=True
  26.         )
  27.     parser.add_argument(
  28.         "-s","--show-pal",
  29.         help="show palette values",
  30.         nargs="?",
  31.         const=True
  32.         )
  33.     return(parser.parse_args())
  34.  
  35.  
  36.  
  37. if __name__ == "__main__":
  38.     args = create_parser()
  39.    
  40.     # MEGA DRIVE palette segaretro
  41.     #l = range(0, 0xf, 2)
  42.     #pal = [(r*17,g*17,b*17) for r in l for g in l for b in l ]
  43.    
  44.     """
  45.    8 rgb values from 0-7 * 36
  46.    (0*36,0*36,0*36),(0*36,0*36,1*36),(0,0,2*36)...
  47.    (7*36,7*36,7*36)
  48.    
  49.    """
  50.     l = range(0, 0x8, 1)
  51.     pal = [(r*36,g*36,b*36) for r in l for g in l for b in l ]
  52.    
  53.     if args.show_pal:
  54.         [print(r,g,b) for r,g,b in pal]
  55.         exit(2)
  56.  
  57.     try:
  58.         with open(args.out_file,"wb") as f:
  59.             for r,g,b in pal:
  60.                 if args.invert:
  61.                     f.write(binascii.unhexlify(format(invert(g),"02x")))
  62.                     f.write(binascii.unhexlify(format(invert(r),"02x")))
  63.                     f.write(binascii.unhexlify(format(invert(b),"02x")))
  64.                 else:
  65.                     f.write(binascii.unhexlify(format(g,"02x")))
  66.                     f.write(binascii.unhexlify(format(r,"02x")))
  67.                     f.write(binascii.unhexlify(format(b,"02x")))
  68.     except Exception as e:
  69.         print(str(e))
  70.         exit(1)
  71.  
  72.     exit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement