shithub: pokecrystal

Download patch

ref: c323f9ddd165a5cb9563f500beac71cf424c7e76
parent: 3624d83d4c534d3918af795ab2f9a6258ab73182
parent: 0e30519bd44c88f958c917645052180b32ebfac2
author: luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com>
date: Sun Sep 23 10:14:54 EDT 2018

Merge pull request #566 from luckytyphlosion/master

Refactor .gitattributes and .gitignore

--- a/.gitattributes
+++ b/.gitattributes
@@ -1,11 +1,34 @@
-# No monkey business with line endings
-* -text
+# Auto detect text files and perform LF normalization
+* text eol=lf
 
-# hexdump binary files
-*.png  binary diff=hex
-*.lz   binary diff=hex
-*.2bpp binary diff=hex
-*.1bpp binary diff=hex
-*.bin  binary diff=hex
-*.blk  binary diff=hex
+# Explicitly declare text files you want to always be normalized and converted
+# to native line endings on checkout.
 
+# files part of the build
+*.asm text
+*.pal text
+*.link text
+*.txt text
+
+# extra files
+*.awk text
+*.c text
+*.h text
+*.md text
+*.py text
+*.sh text
+*.sha1 text
+
+# Denote all files that are truly binary and should not be modified.
+*.png binary diff=hex
+*.lz.* binary diff=hex
+*.bin binary diff=hex
+*.blk binary diff=hex
+*.rle binary diff=hex
+*.attrmap binary diff=hex
+*.tilemap binary diff=hex
+
+# these are generated but just in case
+*.lz binary   diff=hex
+*.2bpp binary diff=hex
+*.1bpp binary diff=hex
\ No newline at end of file
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@
 *.sgm
 *.sav
 *.rtc
+*.sn*
 
 # rgbds extras
 *.map
@@ -39,8 +40,8 @@
 *.2bpp
 *.1bpp
 *.lz
-*.pal
 *.animated.tilemap
 gfx/pokemon/*/bitmask.asm
 gfx/pokemon/*/frames.asm
-!gfx/pokemon/*/shiny.pal
+!gfx/pokemon/unown/bitmask.asm
+!gfx/pokemon/unown/frames.asm
\ No newline at end of file
--- a/Makefile
+++ b/Makefile
@@ -33,7 +33,7 @@
 ### Build targets
 
 .SUFFIXES:
-.PHONY: all crystal crystal11 clean compare tools
+.PHONY: all crystal crystal11 clean compare tools tidy
 .SECONDEXPANSION:
 .PRECIOUS:
 .SECONDARY:
@@ -43,6 +43,12 @@
 crystal11: pokecrystal11.gbc
 
 clean:
+	rm -f $(roms) $(crystal_obj) $(crystal11_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym)
+	find gfx \( -name "*.[12]bpp" -o -name "*.lz" -o -name "*.gbcpal" \) -delete
+	find gfx/pokemon -mindepth 1 ! -path "gfx/pokemon/unown/*" \( -name "bitmask.asm" -o -name "frames.asm" -o -name "front.animated.tilemap" -o -name "front.dimensions" \) -delete
+	$(MAKE) clean -C tools/
+
+tidy:
 	rm -f $(roms) $(crystal_obj) $(crystal11_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym)
 	$(MAKE) clean -C tools/
 
--- a/tools/toc.py
+++ b/tools/toc.py
@@ -1,89 +1,89 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-"""
-Usage: python3 toc.py [-n] files.md...
-Replace a "## TOC" heading in a Markdown file with a table of contents,
-generated from the other headings in the file. Supports multiple files.
-Headings must start with "##" signs to be detected.
-"""
-
-import sys
-import re
-from collections import namedtuple
-
-toc_name = 'Contents'
-valid_toc_headings = {'## TOC', '##TOC'}
-
-TocItem = namedtuple('TocItem', ['name', 'anchor', 'level'])
-punctuation_regexp = re.compile(r'[^\w\- ]+')
-
-def name_to_anchor(name):
-	# GitHub's algorithm for generating anchors from headings
-	# https://github.com/jch/html-pipeline/blob/master/lib/html/pipeline/toc_filter.rb
-	anchor = name.strip().lower()                   # lowercase
-	anchor = re.sub(punctuation_regexp, '', anchor) # remove punctuation
-	anchor = anchor.replace(' ', '-')               # replace spaces with dash
-	return anchor
-
-def get_toc_index(lines):
-	toc_index = None
-	for i, line in enumerate(lines):
-		if line.rstrip() in valid_toc_headings:
-			toc_index = i
-			break
-	return toc_index
-
-def get_toc_items(lines, toc_index):
-	for i, line in enumerate(lines):
-		if i <= toc_index:
-			continue
-		if line.startswith('##'):
-			name = line.lstrip('#')
-			level = len(line) - len(name) - len('##')
-			name = name.strip()
-			anchor = name_to_anchor(name)
-			yield TocItem(name, anchor, level)
-
-def toc_string(toc_items):
-	lines = ['## %s' % toc_name, '']
-	for name, anchor, level in toc_items:
-		padding = '  ' * level
-		line = '%s- [%s](#%s)' % (padding, name, anchor)
-		lines.append(line)
-	return '\n'.join(lines) + '\n'
-
-def add_toc(filename):
-	with open(filename, 'r', encoding='utf-8') as f:
-		lines = f.readlines()
-	toc_index = get_toc_index(lines)
-	if toc_index is None:
-		return None # no TOC heading
-	toc_items = list(get_toc_items(lines, toc_index))
-	if not toc_items:
-		return False # no content headings
-	with open(filename, 'w', encoding='utf-8') as f:
-		for i, line in enumerate(lines):
-			if i == toc_index:
-				f.write(toc_string(toc_items))
-			else:
-				f.write(line)
-	return True # OK
-
-def main():
-	if len(sys.argv) < 2:
-		print('*** ERROR: No filenames specified')
-		print(__doc__)
-		exit(1)
-	for filename in sys.argv[1:]:
-		print(filename)
-		result = add_toc(filename)
-		if result is None:
-			print('*** WARNING: No "## TOC" heading found')
-		elif result is False:
-			print('*** WARNING: No content headings found')
-		else:
-			print('OK')
-
-if __name__ == '__main__':
-	main()
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+"""
+Usage: python3 toc.py [-n] files.md...
+Replace a "## TOC" heading in a Markdown file with a table of contents,
+generated from the other headings in the file. Supports multiple files.
+Headings must start with "##" signs to be detected.
+"""
+
+import sys
+import re
+from collections import namedtuple
+
+toc_name = 'Contents'
+valid_toc_headings = {'## TOC', '##TOC'}
+
+TocItem = namedtuple('TocItem', ['name', 'anchor', 'level'])
+punctuation_regexp = re.compile(r'[^\w\- ]+')
+
+def name_to_anchor(name):
+	# GitHub's algorithm for generating anchors from headings
+	# https://github.com/jch/html-pipeline/blob/master/lib/html/pipeline/toc_filter.rb
+	anchor = name.strip().lower()                   # lowercase
+	anchor = re.sub(punctuation_regexp, '', anchor) # remove punctuation
+	anchor = anchor.replace(' ', '-')               # replace spaces with dash
+	return anchor
+
+def get_toc_index(lines):
+	toc_index = None
+	for i, line in enumerate(lines):
+		if line.rstrip() in valid_toc_headings:
+			toc_index = i
+			break
+	return toc_index
+
+def get_toc_items(lines, toc_index):
+	for i, line in enumerate(lines):
+		if i <= toc_index:
+			continue
+		if line.startswith('##'):
+			name = line.lstrip('#')
+			level = len(line) - len(name) - len('##')
+			name = name.strip()
+			anchor = name_to_anchor(name)
+			yield TocItem(name, anchor, level)
+
+def toc_string(toc_items):
+	lines = ['## %s' % toc_name, '']
+	for name, anchor, level in toc_items:
+		padding = '  ' * level
+		line = '%s- [%s](#%s)' % (padding, name, anchor)
+		lines.append(line)
+	return '\n'.join(lines) + '\n'
+
+def add_toc(filename):
+	with open(filename, 'r', encoding='utf-8') as f:
+		lines = f.readlines()
+	toc_index = get_toc_index(lines)
+	if toc_index is None:
+		return None # no TOC heading
+	toc_items = list(get_toc_items(lines, toc_index))
+	if not toc_items:
+		return False # no content headings
+	with open(filename, 'w', encoding='utf-8') as f:
+		for i, line in enumerate(lines):
+			if i == toc_index:
+				f.write(toc_string(toc_items))
+			else:
+				f.write(line)
+	return True # OK
+
+def main():
+	if len(sys.argv) < 2:
+		print('*** ERROR: No filenames specified')
+		print(__doc__)
+		exit(1)
+	for filename in sys.argv[1:]:
+		print(filename)
+		result = add_toc(filename)
+		if result is None:
+			print('*** WARNING: No "## TOC" heading found')
+		elif result is False:
+			print('*** WARNING: No content headings found')
+		else:
+			print('OK')
+
+if __name__ == '__main__':
+	main()