Files
gbdk-2020/gbdk-support/png2asset/testing/Makefile
2025-12-01 15:35:13 -08:00

163 lines
13 KiB
Makefile

ifndef OUTDIR
OUTDIR = out
endif
RES = res
REF = ref
# PNG2ASSET = ~/gbdev/GBDK_releases/GBDK-2020_4.2.0/gbdk/bin/png2asset
ifndef PNG2ASSET
PNG2ASSET = ../png2asset
endif
all: test
test: generate-assets compare-output
update:
${MAKE} generate-assets OUTDIR=ref
compare-output:
diff --report-identical-files --recursive --suppress-common-lines --side-by-side $(REF) $(OUTDIR)
clean:
rm -rf $(OUTDIR)
clean-ref:
rm -rf $(REF)
reset-ref:
rm -rf $(REF)
git checkout $(REF)/*
generate-assets:
rm -rf $(OUTDIR)
mkdir -p $(OUTDIR)
# ZGB:
# Metasprite
# - CGB
$(PNG2ASSET) $(RES)/sprite_slon.png -c $(OUTDIR)/zgb_sprite_1.c -use_structs -b 255 -spr8x16 -px 0 -py 0 -pw 32 -ph 24 -sw 64 -sh 48
# - SMS/GG
$(PNG2ASSET) $(RES)/sprite_slon.png -c $(OUTDIR)/zgb_sprite_2.c -use_structs -b 255 -spr8x16 -px 0 -py 0 -pw 32 -ph 24 -sw 64 -sh 48 -noflip -pack_mode sms -bpp 4 -keep_palette_order
# SGB
$(PNG2ASSET) $(RES)/SGB/sgb_border.png -c $(OUTDIR)/zgb_sgb_border_1.c -b 255 -map -bpp 4 -max_palettes 4 -use_map_attributes -use_structs -pack_mode sgb
# Map
# - GB
$(PNG2ASSET) $(RES)/largemap.png -c $(OUTDIR)/zgb_largemap_1.c -b 255 -map -use_structs -noflip
# - SMS/GG
$(PNG2ASSET) $(RES)/largemap.png -c $(OUTDIR)/zgb_largemap_2.c -b 255 -map -use_structs -pack_mode sms -bpp 4 -keep_palette_order
$(PNG2ASSET) $(RES)/largemap.png -c $(OUTDIR)/zgb_largemap_3_attribs_smsgg.c -b 255 -map -use_structs -pack_mode sms -bpp 4 -keep_palette_order -use_map_attributes
# - GBC
$(PNG2ASSET) $(RES)/largemap.png -c $(OUTDIR)/zgb_largemap_4_attribs_gbc.c -b 255 -map -use_structs -keep_palette_order -use_map_attributes
# gb/duck = -noflip
# gg/sms = -noflip -pack_mode sms -bpp 4 -keep_palette_order
$(PNG2ASSET) $(RES)/SMS/sushi_level07.png -c $(OUTDIR)/zgb_sushi_level07.c -b 255 -map -noflip -pack_mode sms -bpp 4 -keep_palette_order -use_structs -keep_palette_order -rel_paths -keep_duplicate_tiles -source_tileset sushi_tiles.png -entity_tileset sushi_objects.png
$(PNG2ASSET) $(RES)/SMS/sushi_tiles.png -c $(OUTDIR)/zgb_sushi_tiles.c -b 255 -map -noflip -pack_mode sms -bpp 4 -keep_palette_order -use_structs -keep_palette_order -keep_duplicate_tiles -tiles_only
$(PNG2ASSET) $(RES)/SMS/sushi_tiles.png -c $(OUTDIR)/zgb_sushi_tiles_lit.c -b 255 -area LIT -map -noflip -pack_mode sms -bpp 4 -keep_palette_order -use_structs -keep_palette_order -keep_duplicate_tiles -tiles_only
# Entity and Source tileset interaction
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/nums_map_1.c -map
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/nums_map_2.c -map -source_tileset $(RES)/nums8x8_9_to_0.png
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/nums_map_3.c -map -entity_tileset $(RES)/nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/nums_map_4.c -map -source_tileset $(RES)/nums8x8_9_to_0.png -entity_tileset $(RES)/nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/nums_map_5.c -map
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/nums_map_6.c -map -keep_duplicate_tiles -source_tileset $(RES)/nums8x8_9_to_0.png
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/nums_map_7.c -map -keep_duplicate_tiles -entity_tileset $(RES)/nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/nums_map_8.c -map -keep_duplicate_tiles -source_tileset $(RES)/nums8x8_9_to_0.png -entity_tileset $(RES)/nums8x8_30_to_39.png
# above + color
$(PNG2ASSET) $(RES)/color_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_nums_map_1.c -map -use_map_attributes
$(PNG2ASSET) $(RES)/color_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_nums_map_2.c -map -use_map_attributes -source_tileset $(RES)/color_nums8x8_9_to_0.png
$(PNG2ASSET) $(RES)/color_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_nums_map_3.c -map -use_map_attributes -entity_tileset $(RES)/color_nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/color_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_nums_map_4.c -map -use_map_attributes -source_tileset $(RES)/color_nums8x8_9_to_0.png -entity_tileset $(RES)/color_nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/color_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_nums_map_5.c -map -use_map_attributes
$(PNG2ASSET) $(RES)/color_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_nums_map_6.c -map -use_map_attributes -keep_duplicate_tiles -source_tileset $(RES)/color_nums8x8_9_to_0.png
$(PNG2ASSET) $(RES)/color_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_nums_map_7.c -map -use_map_attributes -keep_duplicate_tiles -entity_tileset $(RES)/color_nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/color_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_nums_map_8.c -map -use_map_attributes -keep_duplicate_tiles -source_tileset $(RES)/color_nums8x8_9_to_0.png -entity_tileset $(RES)/nums8x8_30_to_39.png
# above + color + indexed
$(PNG2ASSET) $(RES)/color_indexed_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_indexed_nums_map_1.c -map -use_map_attributes -keep_palette_order
$(PNG2ASSET) $(RES)/color_indexed_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_indexed_nums_map_2.c -map -use_map_attributes -keep_palette_order -source_tileset $(RES)/color_indexed_nums8x8_9_to_0.png
$(PNG2ASSET) $(RES)/color_indexed_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_indexed_nums_map_3.c -map -use_map_attributes -keep_palette_order -entity_tileset $(RES)/color_indexed_nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/color_indexed_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_indexed_nums_map_4.c -map -use_map_attributes -keep_palette_order -source_tileset $(RES)/color_indexed_nums8x8_9_to_0.png -entity_tileset $(RES)/color_indexed_nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/color_indexed_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_indexed_nums_map_5.c -map -use_map_attributes -keep_palette_order
$(PNG2ASSET) $(RES)/color_indexed_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_indexed_nums_map_6.c -map -use_map_attributes -keep_palette_order -keep_duplicate_tiles -source_tileset $(RES)/color_indexed_nums8x8_9_to_0.png
$(PNG2ASSET) $(RES)/color_indexed_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_indexed_nums_map_7.c -map -use_map_attributes -keep_palette_order -keep_duplicate_tiles -entity_tileset $(RES)/color_indexed_nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/color_indexed_nums8x8_map_0_to_39.png -o $(OUTDIR)/color_indexed_nums_map_8.c -map -use_map_attributes -keep_palette_order -keep_duplicate_tiles -source_tileset $(RES)/color_indexed_nums8x8_9_to_0.png -entity_tileset $(RES)/nums8x8_30_to_39.png
# ZGB flavor of above
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_nums_map_1.c -map -use_structs
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_nums_map_2.c -map -use_structs -source_tileset $(RES)/nums8x8_9_to_0.png
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_nums_map_3.c -map -use_structs -entity_tileset $(RES)/nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_nums_map_4.c -map -use_structs -source_tileset $(RES)/nums8x8_9_to_0.png -entity_tileset $(RES)/nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_nums_map_5.c -map -use_structs
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_nums_map_6.c -map -use_structs -keep_duplicate_tiles -source_tileset $(RES)/nums8x8_9_to_0.png
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_nums_map_7.c -map -use_structs -keep_duplicate_tiles -entity_tileset $(RES)/nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_nums_map_8.c -map -use_structs -keep_duplicate_tiles -source_tileset $(RES)/nums8x8_9_to_0.png -entity_tileset $(RES)/nums8x8_30_to_39.png
# ZGB flavor of above + color
$(PNG2ASSET) $(RES)/color_nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_color_nums_map_1.c -map -use_map_attributes -use_structs
$(PNG2ASSET) $(RES)/color_nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_color_nums_map_2.c -map -use_map_attributes -use_structs -source_tileset $(RES)/color_nums8x8_9_to_0.png
$(PNG2ASSET) $(RES)/color_nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_color_nums_map_3.c -map -use_map_attributes -use_structs -entity_tileset $(RES)/color_nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/color_nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_color_nums_map_4.c -map -use_map_attributes -use_structs -source_tileset $(RES)/color_nums8x8_9_to_0.png -entity_tileset $(RES)/color_nums8x8_30_to_39.png
# above + color + indexed
$(PNG2ASSET) $(RES)/color_indexed_nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_color_indexed_nums_map_1.c -map -use_map_attributes -keep_palette_order -use_structs
$(PNG2ASSET) $(RES)/color_indexed_nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_color_indexed_nums_map_2.c -map -use_map_attributes -keep_palette_order -use_structs -source_tileset $(RES)/color_indexed_nums8x8_9_to_0.png
$(PNG2ASSET) $(RES)/color_indexed_nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_color_indexed_nums_map_3.c -map -use_map_attributes -keep_palette_order -use_structs -entity_tileset $(RES)/color_indexed_nums8x8_30_to_39.png
$(PNG2ASSET) $(RES)/color_indexed_nums8x8_map_0_to_39.png -o $(OUTDIR)/zgb_color_indexed_nums_map_4.c -map -use_map_attributes -keep_palette_order -use_structs -source_tileset $(RES)/color_indexed_nums8x8_9_to_0.png -entity_tileset $(RES)/color_indexed_nums8x8_30_to_39.png
# keep_palette_order + source_tileset + noflip + map (gbphoto)
$(PNG2ASSET) $(RES)/remote.png -c $(OUTDIR)/remote.c -keep_palette_order -map -noflip
$(PNG2ASSET) $(RES)/remote_down.png -c $(OUTDIR)/remote_down.c -keep_palette_order -map -noflip -source_tileset $(RES)/remote.png
# Logo example: attributes, various platforms, different images for each
$(PNG2ASSET) $(RES)/DMG/GBDK_2020_logo.png -o $(OUTDIR)/gbdklogo_1.c -map -bpp 2 -max_palettes 1 -pack_mode gb -noflip
$(PNG2ASSET) $(RES)/CGB/GBDK_2020_logo.png -o $(OUTDIR)/gbdklogo_2.c -map -use_map_attributes -bpp 2 -max_palettes 8 -pack_mode gb
$(PNG2ASSET) $(RES)/NES/GBDK_2020_logo.png -o $(OUTDIR)/gbdklogo_3.c -map -use_nes_attributes -bpp 2 -max_palettes 4 -pack_mode nes -noflip -use_nes_colors
$(PNG2ASSET) $(RES)/SEGA/GBDK_2020_logo.png -o $(OUTDIR)/gbdklogo_4.c -map -use_map_attributes -bpp 4 -max_palettes 2 -pack_mode sms
# Large Map: attributes, various platforms, noflip
$(PNG2ASSET) $(RES)/largemap.png -c $(OUTDIR)/largemap_1.c -map -bpp 2 -max_palettes 4 -pack_mode gb -noflip
$(PNG2ASSET) $(RES)/largemap.png -c $(OUTDIR)/largemap_2.c -map -bpp 2 -max_palettes 8 -use_map_attributes -pack_mode gb
$(PNG2ASSET) $(RES)/largemap.png -c $(OUTDIR)/largemap_3.c -map -bpp 2 -max_palettes 4 -pack_mode gb -noflip
$(PNG2ASSET) $(RES)/largemap.png -c $(OUTDIR)/largemap_4.c -map -bpp 2 -max_palettes 4 -pack_mode gb -noflip
$(PNG2ASSET) $(RES)/largemap.png -c $(OUTDIR)/largemap_5.c -map -bpp 4 -max_palettes 2 -use_map_attributes -pack_mode sms
$(PNG2ASSET) $(RES)/largemap.png -c $(OUTDIR)/largemap_6.c -map -bpp 4 -max_palettes 2 -use_map_attributes -pack_mode sms
$(PNG2ASSET) $(RES)/largemap.png -c $(OUTDIR)/largemap_7.c -map -bpp 2 -max_palettes 4 -use_nes_attributes -pack_mode nes -noflip -b 0
# Metasprites, various sprite sizing, output options
$(PNG2ASSET) $(RES)/sprite_slon.png -c $(OUTDIR)/sprite_slon_1.c -sh 48 -spr8x8 -noflip
$(PNG2ASSET) $(RES)/sprite_slon.png -c $(OUTDIR)/sprite_slon_2.c -sh 48 -spr8x16 -noflip
$(PNG2ASSET) $(RES)/sprite_slon.png -c $(OUTDIR)/sprite_slon_3.c -sh 48 -spr8x16 -noflip -metasprites_only
$(PNG2ASSET) $(RES)/sprite_slon.png -c $(OUTDIR)/sprite_slon_4.c -sh 48 -spr8x16 -noflip -tiles_only
# hblank copy: noflip
$(PNG2ASSET) $(RES)/hblank_copy.png -o $(OUTDIR)/hblankcopy_1.c -map -noflip -tiles_only -keep_duplicate_tiles -b 255
# apa image style
$(PNG2ASSET) $(RES)/apa_image.png -c $(OUTDIR)/apaimage_1.c -map -keep_duplicate_tiles -bpp 2 -tiles_only
# SGB Border
$(PNG2ASSET) $(RES)/SGB/sgb_border.png -c $(OUTDIR)/sgb_border_1.c -map -bpp 4 -max_palettes 4 -pack_mode sgb -use_map_attributes
$(PNG2ASSET) $(RES)/SGB/sgb_border.png -c $(OUTDIR)/sgb_border_2.c -map -bpp 4 -max_palettes 4 -pack_mode sgb -use_map_attributes -no_palettes
$(PNG2ASSET) $(RES)/SGB/sgb_border_multi_pal.png -c $(OUTDIR)/sgb_border_multi_pal.c -map -bpp 4 -max_palettes 4 -pack_mode sgb -use_map_attributes
# -bin output
$(PNG2ASSET) $(RES)/gameboy.png -o $(OUTDIR)/binout_basic.bin -map -bin
$(PNG2ASSET) $(RES)/gameboy.png -o $(OUTDIR)/binout_tileonly.bin -map -bin -tiles_only
$(PNG2ASSET) $(RES)/gameboy.png -o $(OUTDIR)/binout_maponly.bin -map -bin -maps_only
$(PNG2ASSET) $(RES)/gameboy.png -o $(OUTDIR)/binout_maponly-nopal.bin -map -bin -maps_only -no_palettes
# -no_palettes
$(PNG2ASSET) $(RES)/no_pal_map_test.png -c $(OUTDIR)/no_pal_map_test_keep_pal_order.c -noflip -map -keep_palette_order -no_palettes
$(PNG2ASSET) $(RES)/no_pal_map_test.png -c $(OUTDIR)/no_pal_map_test.c -noflip -map -no_palettes
# -use_metafile
$(PNG2ASSET) $(RES)/no_pal_map_test.png -c $(OUTDIR)/no_pal_map_test_keep_pal_order_usemetafile.c -use_metafile