Skip to content

Commit

Permalink
Sort Pokemon and trainer sprite palettes, with Makefile-specified exc…
Browse files Browse the repository at this point in the history
…eptions (#121)

This avoids the need to define their order via indexed PNG palettes

It also avoids the need to use tools/palfix.py on custom sprites
  • Loading branch information
Rangi42 authored Oct 17, 2024
1 parent d3d1e0c commit a18a8bf
Show file tree
Hide file tree
Showing 12 changed files with 467 additions and 2,717 deletions.
83 changes: 64 additions & 19 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -196,27 +196,71 @@ include gfx/lz.mk
tools/lzcomp $(LZFLAGS) -- $< $@


### Misc file-specific graphics rules
### Pokemon and trainer sprite rules

define PIC
$1/back.2bpp: rgbgfx += --columns
$1/back.2bpp: $1/back.png $1/normal.gbcpal
$$(RGBGFX) $$(rgbgfx) --colors gbc:$$(word 2,$$^) -o $$@ $$<
$1/front.2bpp: rgbgfx += --columns
$1/front.2bpp: $1/front.png $1/normal.gbcpal
$$(RGBGFX) $$(rgbgfx) --colors gbc:$$(word 2,$$^) -o $$@ $$<
$1/normal.gbcpal: $1/front.gbcpal $1/back.gbcpal
tools/gbcpal $$(tools/gbcpal) $$@ $$^
endef
$(foreach pic, $(wildcard gfx/pokemon/*/front.png),\
$(eval $(call PIC,$(pic:/front.png=))))

define PIC_GS
$1/back.2bpp: rgbgfx += --columns
$1/back.2bpp: $1/back.png $1/normal.gbcpal
$$(RGBGFX) $$(rgbgfx) --colors gbc:$$(word 2,$$^) -o $$@ $$<
$1/front_gold.2bpp: rgbgfx += --columns
$1/front_gold.2bpp: $1/front_gold.png $1/normal.gbcpal
$$(RGBGFX) $$(rgbgfx) --colors gbc:$$(word 2,$$^) -o $$@ $$<
$1/front_silver.2bpp: rgbgfx += --columns
$1/front_silver.2bpp: $1/front_silver.png $1/normal.gbcpal
$$(RGBGFX) $$(rgbgfx) --colors gbc:$$(word 2,$$^) -o $$@ $$<
$1/normal.gbcpal: $1/front_gold.gbcpal $1/front_silver.gbcpal $1/back.gbcpal
tools/gbcpal $$(tools/gbcpal) $$@ $$^
endef
$(foreach pic, $(wildcard gfx/pokemon/*/front_gold.png),\
$(eval $(call PIC_GS,$(pic:/front_gold.png=))))

gfx/pokemon/%/front.2bpp: rgbgfx += --columns --colors embedded
gfx/pokemon/%/front_gold.2bpp: rgbgfx += --columns --colors embedded
gfx/pokemon/%/front_silver.2bpp: rgbgfx += --columns --colors embedded
gfx/trainers/%.2bpp: rgbgfx += --columns
gfx/trainers/%.2bpp: gfx/trainers/%.png gfx/trainers/%.gbcpal
$(RGBGFX) $(rgbgfx) --colors gbc:$(word 2,$^) -o $@ $<

gfx/pokemon/%/back.2bpp: rgbgfx += --columns --colors embedded
gfx/pokemon/%/back_gold.2bpp: rgbgfx += --columns --colors embedded
gfx/pokemon/%/back_silver.2bpp: rgbgfx += --columns --colors embedded
# A few back sprites have different compression settings for Gold and Silver
gfx/pokemon/%/back_gold.2bpp: gfx/pokemon/%/back.2bpp ; cp -f $^ $@
gfx/pokemon/%/back_silver.2bpp: gfx/pokemon/%/back.2bpp ; cp -f $^ $@

gfx/pokemon/%/back_gold.2bpp: gfx/pokemon/%/back.png
$(RGBGFX) $(rgbgfx) -o $@ $<
$(if $(tools/gfx),\
tools/gfx $(tools/gfx) -o $@ $@)
# Egg does not have a back sprite, so it only uses egg.gbcpal
gfx/pokemon/egg/egg.2bpp: gfx/pokemon/egg/egg.png gfx/pokemon/egg/egg.gbcpal
gfx/pokemon/egg/egg.2bpp: rgbgfx += --columns --colors gbc:$(word 2,$^)

gfx/pokemon/%/back_silver.2bpp: gfx/pokemon/%/back.png
$(RGBGFX) $(rgbgfx) -o $@ $<
$(if $(tools/gfx),\
tools/gfx $(tools/gfx) -o $@ $@)
# Unown letters share one normal.gbcpal
unown_pngs := $(wildcard gfx/pokemon/unown_*/front.png) $(wildcard gfx/pokemon/unown_*/back.png)
$(foreach png, $(unown_pngs),\
$(eval $(png:.png=.2bpp): $(png) gfx/pokemon/unown/normal.gbcpal))
gfx/pokemon/unown_%/back.2bpp: rgbgfx += --colors gbc:$(word 2,$^)
gfx/pokemon/unown_%/front.2bpp: rgbgfx += --colors gbc:$(word 2,$^)
gfx/pokemon/unown/normal.gbcpal: $(subst .png,.gbcpal,$(unown_pngs))
tools/gbcpal $(tools/gbcpal) $@ $^


### Misc file-specific graphics rules

gfx/pokemon/squirtle/normal.gbcpal: tools/gbcpal += --reverse
gfx/pokemon/wartortle/normal.gbcpal: tools/gbcpal += --reverse
gfx/pokemon/caterpie/normal.gbcpal: tools/gbcpal += --reverse
gfx/pokemon/farfetch_d/normal.gbcpal: tools/gbcpal += --reverse
gfx/pokemon/hitmonlee/normal.gbcpal: tools/gbcpal += --reverse
gfx/pokemon/scyther/normal.gbcpal: tools/gbcpal += --reverse
gfx/pokemon/bellossom/normal.gbcpal: tools/gbcpal += --reverse
gfx/pokemon/porygon2/normal.gbcpal: tools/gbcpal += --reverse

gfx/trainers/%.2bpp: rgbgfx += --columns --colors embedded
gfx/trainers/swimmer_m.gbcpal: tools/gbcpal += --reverse

gfx/intro/fire.2bpp: tools/gfx += --remove-whitespace
gfx/intro/fire1.2bpp: gfx/intro/charizard1.2bpp gfx/intro/charizard2_top.2bpp gfx/intro/space.2bpp ; cat $^ > $@
Expand Down Expand Up @@ -302,15 +346,16 @@ gfx/sgb/silver_border.sgb.tilemap: gfx/sgb/silver_border.bin ; tr < $< -d '\000'
%.2bpp: %.png
$(RGBGFX) $(rgbgfx) -o $@ $<
$(if $(tools/gfx),\
tools/gfx $(tools/gfx) -o $@ $@)
tools/gfx $(tools/gfx) -o $@ $@ || $$($(RM) $@ && false))

%.1bpp: %.png
$(RGBGFX) $(rgbgfx) --depth 1 -o $@ $<
$(if $(tools/gfx),\
tools/gfx $(tools/gfx) --depth 1 -o $@ $@)
tools/gfx $(tools/gfx) --depth 1 -o $@ $@ || $$($(RM) $@ && false))

%.gbcpal: %.png
$(RGBGFX) --colors embedded -p $@ $<
$(RGBGFX) -p $@ $<
tools/gbcpal $(tools/gbcpal) $@ $@ || $$($(RM) $@ && false)

%.dimensions: %.png
tools/png_dimensions $< $@
Loading

0 comments on commit a18a8bf

Please sign in to comment.