Browse Source

Add sprites to the build system

Dan ELKOUBY 11 years ago
parent
commit
04d5dcd558
4 changed files with 43 additions and 3 deletions
  1. 1 0
      .gitignore
  2. 6 3
      Makefile
  3. 6 0
      art/Makefile
  4. 30 0
      art/sprite.py

+ 1 - 0
.gitignore

@@ -4,4 +4,5 @@ bin
 *.h
 *.h
 *.elf
 *.elf
 *.gdb
 *.gdb
+art/sprites.c
 
 

+ 6 - 3
Makefile

@@ -14,12 +14,12 @@ GXX = nspire-g++
 LD = nspire-ld-bflt
 LD = nspire-ld-bflt
 LDFLAGS =
 LDFLAGS =
 CPPOBJS = $(patsubst %.cpp,%.o,$(wildcard *.cpp))
 CPPOBJS = $(patsubst %.cpp,%.o,$(wildcard *.cpp))
-OBJS = $(patsubst %.c,%.o,$(wildcard *.c)) $(patsubst %.S,%.o,$(wildcard *.S)) $(CPPOBJS) n2DLib/n2DLib.o
+OBJS = $(patsubst %.c,%.o,$(wildcard *.c)) $(patsubst %.S,%.o,$(wildcard *.S)) $(CPPOBJS) n2DLib/n2DLib.o art/sprites.o
 ifneq ($(strip $(CPPOBJS)),)
 ifneq ($(strip $(CPPOBJS)),)
 	LDFLAGS += --cpp
 	LDFLAGS += --cpp
 endif
 endif
 
 
-SOURCES = $(wildcard *.c) $(wildcard *.S) $(wildcard *.cpp)
+SOURCES = $(wildcard *.c) $(wildcard *.S) $(wildcard *.cpp) art/sprites.c
 
 
 EXE = pokespire.tns
 EXE = pokespire.tns
 DISTDIR = bin
 DISTDIR = bin
@@ -36,9 +36,12 @@ all: $(EXE)
 %.o: %.S headers
 %.o: %.S headers
 	$(AS) -c $< -o $@
 	$(AS) -c $< -o $@
 
 
-headers:
+headers: sprites
 	makeheaders $(SOURCES)
 	makeheaders $(SOURCES)
 
 
+sprites:
+	$(MAKE) -C art/
+
 $(EXE): $(OBJS)
 $(EXE): $(OBJS)
 	mkdir -p $(DISTDIR)
 	mkdir -p $(DISTDIR)
 	$(LD) $^ -o $(DISTDIR)/$@ $(LDFLAGS)
 	$(LD) $^ -o $(DISTDIR)/$@ $(LDFLAGS)

+ 6 - 0
art/Makefile

@@ -0,0 +1,6 @@
+SPRITES = $(wildcard *.png)
+
+all:
+	rm -f sprites.c
+	for FILE in $(SPRITES); do exec ./sprite.py $$FILE >> sprites.c; done
+

+ 30 - 0
art/sprite.py

@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+
+import sys, getopt, os
+from PIL import Image
+
+def getvalue(i, im):
+    r, g, b = im[i]
+    color = (int(r * 31 / 255) << 11) + (int(g * 63 / 255) << 5) + (int(b * 31 / 255))
+    return "0x" + format(color, "04X")
+
+file = sys.argv[1]
+
+im = Image.open(file)
+width, height = im.size
+im = list(im.convert("RGB").getdata())
+sprite = "unsigned short " + os.path.splitext(file)[0] + "[] =\n{\n"
+sprite += "\t" + str(width) + ", " + str(height) + ", "
+sprite += getvalue(0, im)
+sprite += ",\n\t"
+for i in range(width * height):
+    sprite += getvalue(i, im)
+    if i != width * height - 1:
+        if (i + 1) % 10 == 0:
+            sprite += ",\n\t"
+        else:
+            sprite += ", "
+sprite += "\n};"
+
+print(sprite)
+