From f92442e8662fd01fc7d36fa497b06f976fd77661 Mon Sep 17 00:00:00 2001 From: Rangi42 Date: Mon, 7 Oct 2024 17:20:50 -0400 Subject: [PATCH] Add revpals.py and fix dupeframes.py --- tools/dupeframes.py | 4 ++-- tools/revpals.py | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) create mode 100755 tools/revpals.py diff --git a/tools/dupeframes.py b/tools/dupeframes.py index 5214794..24a3f44 100755 --- a/tools/dupeframes.py +++ b/tools/dupeframes.py @@ -27,8 +27,8 @@ def main(): if len(sys.argv) != 2: print(f'Usage: {sys.argv[0]} path/to/gfx/pokemon/', file=sys.stderr) sys.exit(1) - for filename in sorted(glob.glob(f'{sys.argv[1]}/**/*.png')): - name = filename.removeprefix(sys.argv[1] + '/') + for filename in sorted(glob.glob(f'{sys.argv[1]}/**/*.png', recursive=True)): + name = filename.removeprefix(sys.argv[1]).removeprefix('/') for (i, j) in duplicate_frames(filename): print(f'{name}: frame {j} is a duplicate of frame {i}', file=sys.stderr) diff --git a/tools/revpals.py b/tools/revpals.py new file mode 100755 index 0000000..ddce16a --- /dev/null +++ b/tools/revpals.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" +Usage: python3 revpals.py path/to/gfx/ + +List Pokemon and trainer sprites with reversed palettes (darker color first). +""" + +import sys +import glob + +import png + +def luminance(c): + r, g, b = c + return 0.299 * r**2 + 0.587 * g**2 + 0.114 * b**2 + +def is_reversed(filename): + with open(filename, 'rb') as file: + reader = png.Reader(file) + reader.preamble() + try: + palette = [c[:3] for c in reader.palette()] + except: + return False + if len(palette) != 4 or palette[0] != (255, 255, 255) or palette[3] != (0, 0, 0): + return False + return luminance(palette[1]) < luminance(palette[2]) + +def main(): + if len(sys.argv) != 2: + print(f'Usage: {sys.argv[0]} path/to/gfx/', file=sys.stderr) + sys.exit(1) + for filename in sorted(glob.glob(f'{sys.argv[1]}/**/*.png', recursive=True)): + name = filename.removeprefix(sys.argv[1]).removeprefix('/') + if is_reversed(filename): + print(name, file=sys.stderr) + +if __name__ == '__main__': + main()