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

View File

@ -17,7 +17,7 @@
#include <string.h>
//This include a header containing definitions of our image
#include "drunkenlogo_bin.h"
#include "drunkenlogo_rgb.h"
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);
//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
while (aptMainLoop())