Automate graphics conversion

Makefile:

- Don't set DATA, we're no longer embedding files from there directly

- Add folders from GRAPHICS to VPATH. This is how make finds the source files

- Add PNGFILES variable containing all png files from GRAPHICS folders

- Add png files to OFILES with extension changed to rgb.o

- Add rule to create .rgb.o fromn .rgb using normal bin2o macro

- Add rule to create .rgb from .png using imagemagick

source/main.c

- the extension has changed to .rgb so the header is now <filename>_rgb.h and the variables end in _rgb
This commit is contained in:
Dave Murphy 2014-12-15 12:35:03 +00:00
parent 75d62ef1e3
commit cbb00e413d
2 changed files with 19 additions and 13 deletions

View File

@ -29,8 +29,9 @@ include $(DEVKITARM)/3ds_rules
TARGET := $(notdir $(CURDIR)) TARGET := $(notdir $(CURDIR))
BUILD := build BUILD := build
SOURCES := source SOURCES := source
DATA := data DATA :=
INCLUDES := include INCLUDES := include
GRAPHICS := gfx
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# options for code generation # options for code generation
@ -68,7 +69,8 @@ export OUTPUT := $(CURDIR)/$(TARGET)
export TOPDIR := $(CURDIR) export TOPDIR := $(CURDIR)
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir)) $(foreach dir,$(DATA),$(CURDIR)/$(dir)) \
$(foreach dir,$(GRAPHICS),$(CURDIR)/$(dir))
export DEPSDIR := $(CURDIR)/$(BUILD) export DEPSDIR := $(CURDIR)/$(BUILD)
@ -76,6 +78,7 @@ CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
PNGFILES := $(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.png)))
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C # use CXX for linking C++ projects, CC for standard C
@ -92,7 +95,8 @@ endif
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
export OFILES := $(addsuffix .o,$(BINFILES)) \ export OFILES := $(addsuffix .o,$(BINFILES)) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) $(PNGFILES:.png=.rgb.o) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) \
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \
@ -151,17 +155,19 @@ $(OUTPUT).elf : $(OFILES)
@echo $(notdir $<) @echo $(notdir $<)
@$(bin2o) @$(bin2o)
# WARNING: This is not the right way to do this! TODO: Do it right!
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
%.vsh.o : %.vsh %.rgb.o: %.rgb
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
@echo $(notdir $<) @echo $(notdir $<)
@python $(AEMSTRO)/aemstro_as.py $< ../$(notdir $<).shbin @$(bin2o)
@bin2s ../$(notdir $<).shbin | $(PREFIX)as -o $@
@echo "extern const u8" `(echo $(notdir $<).shbin | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(notdir $<).shbin | tr . _)`.h #---------------------------------------------------------------------------------
@echo "extern const u8" `(echo $(notdir $<).shbin | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(notdir $<).shbin | tr . _)`.h %.rgb: %.png
@echo "extern const u32" `(echo $(notdir $<).shbin | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(notdir $<).shbin | tr . _)`.h #---------------------------------------------------------------------------------
@rm ../$(notdir $<).shbin @echo $(notdir $<)
@convert $< -channel B -separate $< -channel G -separate $< -channel R -separate -channel RGB -combine -rotate 90 $@
-include $(DEPENDS) -include $(DEPENDS)

View File

@ -17,7 +17,7 @@
#include <string.h> #include <string.h>
//This include a header containing definitions of our image //This include a header containing definitions of our image
#include "drunkenlogo_bin.h" #include "drunkenlogo_rgb.h"
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
@ -41,7 +41,7 @@ int main(int argc, char **argv)
u8* fb = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL); u8* fb = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL);
//Copy our image in the bottom screen's frame buffer //Copy our image in the bottom screen's frame buffer
memcpy(fb, drunkenlogo_bin, drunkenlogo_bin_size); memcpy(fb, drunkenlogo_rgb, drunkenlogo_rgb_size);
// Main loop // Main loop
while (aptMainLoop()) while (aptMainLoop())