Skip to content

Commit

Permalink
Add dupeframes.py tool to find duplicate animated Pokémon frames
Browse files Browse the repository at this point in the history
Fixes #1067
  • Loading branch information
Rangi42 committed Aug 15, 2023
1 parent a5c36a7 commit df05357
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions tools/dupeframes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Usage: python dupeframes.py
Check for duplicate frames in Pokemon sprites (gfx/pokemon/*/front.png).
"""

import sys
import glob

import png

def check_duplicate_frames(filename):
with open(filename, 'rb') as file:
width, height, rows = png.Reader(file).asRGBA8()[:3]
rows = list(rows)
if height % width:
print(f'{filename} is not a vertical strip of square frames!', file=sys.stderr)
return
num_frames = height // width
frames = [rows[i*width:(i+1)*width] for i in range(num_frames)]
for i in range(num_frames):
for j in range(i + 1, num_frames):
if frames[i] == frames[j]:
print(f'{filename}: frame {j} is a duplicate of frame {i}', file=sys.stderr)

def main():
for filename in sorted(glob.glob('gfx/pokemon/*/front.png')):
check_duplicate_frames(filename)

if __name__ == '__main__':
main()

0 comments on commit df05357

Please sign in to comment.