No Description

sprites.makefile 8.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. AS = arm-none-eabi-as
  2. AR = arm-none-eabi-ar
  3. LD = arm-none-eabi-ld
  4. GFX_BUILD_DIR = gfx_build
  5. TMP_LD = $(GFX_BUILD_DIR)/tmp.ld
  6. LDFLAGS := -z muldefs
  7. ASSET_ROOT = sots-private/assets
  8. SPRITES_BINARY = object/pkmn_sprites.o
  9. PNG_TITLE_BG := $(ASSET_ROOT)/misc/title/title_tileset_background.png
  10. PNG_TITLE_AEON := $(ASSET_ROOT)/misc/title/title_tileset_latias_latios_deoxys.png
  11. PNG_TITLE_LOGO := $(ASSET_ROOT)/misc/title/title_tileset_logo_name.png
  12. PNG_TITLE_START := $(ASSET_ROOT)/misc/title/title_tileset_press_start.png
  13. PNG_TITLE_CLOUD := $(ASSET_ROOT)/misc/title/title_sprite_sky.png
  14. PNG_HERO := $(ASSET_ROOT)/misc/char/hero_backsprite.png
  15. PNG_HEROINE := $(ASSET_ROOT)/misc/char/heroine_backsprite.png
  16. PNG_HERO_B := $(ASSET_ROOT)/misc/char/hero_bag.png
  17. PNG_HEROINE_B := $(ASSET_ROOT)/misc/char/heroine_bag.png
  18. S_HERO := $(GFX_BUILD_DIR)/char/hero_backsprite.S
  19. S_HEROINE := $(GFX_BUILD_DIR)/char/heroine_backsprite.S
  20. S_HERO_B := $(GFX_BUILD_DIR)/char/hero_bag.S
  21. S_HEROINE_B := $(GFX_BUILD_DIR)/char/heroine_bag.S
  22. O_HERO := $(GFX_BUILD_DIR)/char/hero_backsprite.o
  23. O_HEROINE := $(GFX_BUILD_DIR)/char/heroine_backsprite.o
  24. O_HERO_B := $(GFX_BUILD_DIR)/char/hero_bag.o
  25. O_HEROINE_B := $(GFX_BUILD_DIR)/char/heroine_bag.o
  26. PNG_BOOT := $(ASSET_ROOT)/misc/boot/boot_tileset.png
  27. S_BOOT := $(GFX_BUILD_DIR)/boot/boot_tileset.S
  28. O_BOOT := $(GFX_BUILD_DIR)/boot/boot_tileset.o
  29. S_TITLE_BG := $(GFX_BUILD_DIR)/title_screen/title_tileset_background.S
  30. S_TITLE_AEON := $(GFX_BUILD_DIR)/title_screen/title_tileset_latias_latios_deoxys.S
  31. S_TITLE_LOGO := $(GFX_BUILD_DIR)/title_screen/title_tileset_logo_name.S
  32. S_TITLE_START := $(GFX_BUILD_DIR)/title_screen/title_tileset_press_start.S
  33. S_TITLE_CLOUD := $(GFX_BUILD_DIR)/title_screen/title_sprite_sky.S
  34. O_TITLE_BG := $(GFX_BUILD_DIR)/title_screen/title_tileset_background.o
  35. O_TITLE_AEON := $(GFX_BUILD_DIR)/title_screen/title_tileset_latias_latios_deoxys.o
  36. O_TITLE_LOGO := $(GFX_BUILD_DIR)/title_screen/title_tileset_logo_name.o
  37. O_TITLE_START := $(GFX_BUILD_DIR)/title_screen/title_tileset_press_start.o
  38. O_TITLE_CLOUD := $(GFX_BUILD_DIR)/title_screen/title_sprite_sky.o
  39. TITLE_OBJ := $(O_TITLE_BG) $(O_TITLE_AEON) $(O_TITLE_LOGO) $(O_TITLE_START) $(O_TITLE_CLOUD)
  40. HERO_OBJ := $(O_HERO) $(O_HEROINE) $(O_HERO_B) $(O_HEROINE_B)
  41. ITEM_PNG = $(sort $(wildcard $(ASSET_ROOT)/item_icons/*.png))
  42. ITEM_OBJ = $(addprefix $(GFX_BUILD_DIR)/item/,$(notdir $(ITEM_PNG:.png=.o)))
  43. NORMAL_PNG = $(sort $(wildcard $(ASSET_ROOT)/pkmn_sprites/normal_*.png))
  44. NORMAL_PAL_OBJ = $(addprefix $(GFX_BUILD_DIR)/sprites/normal_pal/,$(notdir $(NORMAL_PNG:.png=.o)))
  45. SHINY_PNG = $(sort $(wildcard $(ASSET_ROOT)/pkmn_sprites/shiny_*.png))
  46. SHINY_PAL_OBJ = $(addprefix $(GFX_BUILD_DIR)/sprites/shiny_pal/,$(notdir $(SHINY_PNG:.png=.o)))
  47. SPRITE_FRONT_OBJ = $(addprefix $(GFX_BUILD_DIR)/sprites/front_sprites/,$(notdir $(NORMAL_PNG:.png=.o)))
  48. SPRITE_BACK_OBJ = $(addprefix $(GFX_BUILD_DIR)/sprites/back_sprites/,$(notdir $(NORMAL_PNG:.png=.o)))
  49. OW_PNG = $(sort $(wildcard $(ASSET_ROOT)/overworld/*.png))
  50. OW_OBJ = $(addprefix $(GFX_BUILD_DIR)/overworlds/,$(notdir $(OW_PNG:.png=.o)))
  51. TS_PNG = $(sort $(wildcard $(ASSET_ROOT)/trainer_sprites/*.png))
  52. TS_OBJ = $(addprefix $(GFX_BUILD_DIR)/trainer_sprites/,$(notdir $(TS_PNG:.png=.o)))
  53. CASTFORM_PNG = $(ASSET_ROOT)/pkmn_sprites/castform/castform.png
  54. NORMAL_CASTFORM_PAL_OBJ = $(GFX_BUILD_DIR)/sprites/castform/castform_normal_pal.o
  55. SHINY_CASTFORM_PAL_OBJ = $(GFX_BUILD_DIR)/sprites/castform/castform_shiny_pal.o
  56. CASTFORM_FRONT_OBJ = $(GFX_BUILD_DIR)/sprites/castform/castform_front.o
  57. CASTFORM_BACK_OBJ = $(GFX_BUILD_DIR)/sprites/castform/castform_back.o
  58. all: $(SPRITES_BINARY)
  59. .PHONY: clean
  60. clean:
  61. rm -f $(TMP_FILE) $(GFX_BUILD_DIR)/sprites/castform/*
  62. rm -f $(GFX_BUILD_DIR)/sprites/normal_pal/*
  63. rm -f $(GFX_BUILD_DIR)/sprites/shiny_pal/*
  64. rm -f $(GFX_BUILD_DIR)/sprites/front_sprites/*
  65. rm -f $(GFX_BUILD_DIR)/sprites/back_sprites/*
  66. rm -f $(GFX_BUILD_DIR)/overworlds/*
  67. $(SPRITES_BINARY): $(NORMAL_PAL_OBJ) $(HERO_OBJ) $(SHINY_PAL_OBJ) $(SPRITE_FRONT_OBJ) $(SPRITE_BACK_OBJ) $(NORMAL_CASTFORM_PAL_OBJ) $(SHINY_CASTFORM_PAL_OBJ) $(CASTFORM_FRONT_OBJ) $(CASTFORM_BACK_OBJ) $(OW_OBJ) $(TS_OBJ) $(ITEM_OBJ) $(TITLE_OBJ) $(O_BOOT)
  68. echo "INPUT($^)" > $(TMP_LD)
  69. $(LD) -r -o $@ -T $(TMP_LD)
  70. # Characters
  71. $(GFX_BUILD_DIR)/char/%.o: $(GFX_BUILD_DIR)/char/%.S
  72. $(AS) -o $@ $<
  73. $(S_HERO): $(PNG_HERO)
  74. grit $< -fts -fh! -gt -gB4 -gz! -p -pzl -m! -pu16 -o $@
  75. $(S_HERO_B): $(PNG_HERO_B)
  76. grit $< -fts -fh! -gt -gB4 -gzl -p -pzl -m! -pu16 -o $@
  77. $(S_HEROINE): $(PNG_HEROINE)
  78. grit $< -fts -fh! -gt -gB4 -gz! -p -pzl -m! -pu16 -o $@
  79. $(S_HEROINE_B): $(PNG_HEROINE_B)
  80. grit $< -fts -fh! -gt -gB4 -gzl -p -pzl -m! -pu16 -o $@
  81. # Boot Screen
  82. $(GFX_BUILD_DIR)/boot/%.o: $(GFX_BUILD_DIR)/boot/%.S
  83. $(AS) -o $@ $<
  84. $(S_BOOT): $(PNG_BOOT)
  85. grit $< -fts -fh! -gt -gB4 -gzl -p -pz! -m -mzl -mRtpf -pu16 -o $@
  86. # Special titlescreen targets
  87. $(GFX_BUILD_DIR)/title_screen/%.o: $(GFX_BUILD_DIR)/title_screen/%.S
  88. $(AS) -o $@ $<
  89. $(S_TITLE_BG): $(PNG_TITLE_BG)
  90. grit $< -fts -fh! -gt -gB4 -gzl -p! -pz! -m -mzl -mp 4 -mRtf -pu16 -o $@
  91. $(S_TITLE_AEON): $(PNG_TITLE_AEON)
  92. grit $< -fts -fh! -gt -gB4 -gzl -p! -pz! -m -mzl -mp 2 -mRtf -pu16 -o $@
  93. $(S_TITLE_LOGO): $(PNG_TITLE_LOGO)
  94. grit $< -fts -fh! -gt -gB8 -gzl -p! -pz! -m -mzl -mRtf -pu16 -o $@
  95. $(S_TITLE_START): $(PNG_TITLE_START)
  96. grit $< -fts -fh! -gt -gB4 -gzl -p! -pz! -m -mzl -mp 3 -mRtf -pu16 -o $@
  97. $(S_TITLE_CLOUD): $(PNG_TITLE_CLOUD)
  98. grit $< -fts -fh! -gt -gB4 -gzl -p -pz! -m! -pu16 -o $@
  99. # Item Targets
  100. $(GFX_BUILD_DIR)/item/%.o: $(GFX_BUILD_DIR)/item/%.s
  101. $(AS) -o $@ $<
  102. .PRECIOUS: $(GFX_BUILD_DIR)/item/%.s
  103. $(GFX_BUILD_DIR)/item/%.s: $(ASSET_ROOT)/item_icons/%.png
  104. grit $< -fts -fh! -gt -gB4 -gzl -p -pzl -m! -pu16 -o $@
  105. # OW Targets
  106. $(GFX_BUILD_DIR)/overworlds/%.o: $(GFX_BUILD_DIR)/overworlds/%.s
  107. $(AS) -o $@ $<
  108. .PRECIOUS: $(GFX_BUILD_DIR)/overworlds/%.s
  109. $(GFX_BUILD_DIR)/overworlds/%.s: $(ASSET_ROOT)/overworld/%.png
  110. grit $< -fts -fh! -gt -gB4 -gz! -p -pz! -m! -pu16 -o $@
  111. # Trainer Sprite Targets
  112. $(GFX_BUILD_DIR)/trainer_sprites/%.o: $(GFX_BUILD_DIR)/trainer_sprites/%.s
  113. $(AS) -o $@ $<
  114. .PRECIOUS: $(GFX_BUILD_DIR)/trainer_sprites/%.s
  115. $(GFX_BUILD_DIR)/trainer_sprites/%.s: $(ASSET_ROOT)/trainer_sprites/%.png
  116. grit $< -fts -fh! -gt -gB4 -gzl -p -pzl -m! -o $@
  117. # Normal Palette Targets
  118. $(GFX_BUILD_DIR)/sprites/normal_pal/%.o: $(GFX_BUILD_DIR)/sprites/normal_pal/%.s
  119. $(AS) -o $@ $<
  120. .PRECIOUS: $(GFX_BUILD_DIR)/sprites/normal_pal/%.s
  121. $(GFX_BUILD_DIR)/sprites/normal_pal/%.s: $(ASSET_ROOT)/pkmn_sprites/%.png
  122. grit $< -fts -fh! -g! -gB 4 -gt -m! -p -pzl -pu16 -pn 16 \
  123. -s $(shell echo $(notdir $(basename $<)) | sed "s/normal_/n_p_/g") \
  124. -o $@
  125. # Shiny Palette Targets
  126. $(GFX_BUILD_DIR)/sprites/shiny_pal/%.o: $(GFX_BUILD_DIR)/sprites/shiny_pal/%.s
  127. $(AS) -o $@ $<
  128. .PRECIOUS: $(GFX_BUILD_DIR)/sprites/shiny_pal/%.s
  129. $(GFX_BUILD_DIR)/sprites/shiny_pal/%.s: $(ASSET_ROOT)/pkmn_sprites/%.png
  130. grit $< -fts -fh! -g! -gB 4 -gt -m! -p -pzl -pu16 -pn 16 \
  131. -s $(shell echo $(notdir $(basename $<)) | sed "s/shiny_/s_p_/g") \
  132. -o $@
  133. # Front Sprite Targets
  134. $(GFX_BUILD_DIR)/sprites/front_sprites/%.o: $(GFX_BUILD_DIR)/sprites/front_sprites/%.s
  135. $(AS) -o $@ $<
  136. .PRECIOUS: $(GFX_BUILD_DIR)/sprites/front_sprites/%.s
  137. $(GFX_BUILD_DIR)/sprites/front_sprites/%.s: $(ASSET_ROOT)/pkmn_sprites/%.png
  138. grit $< -fts -fh! -g -gB 4 -gt -gzl -al 0 -aw 64 -m! -p! \
  139. -s $(shell echo $(notdir $(basename $<)) | sed "s/normal_/front_/g") \
  140. -o $@
  141. # Back Sprite Targets
  142. $(GFX_BUILD_DIR)/sprites/back_sprites/%.o: $(GFX_BUILD_DIR)/sprites/bacj_sprites/%.s
  143. $(AS) -o $@ $<
  144. .PRECIOUS: $(GFX_BUILD_DIR)/sprites/back_sprites/%.s
  145. $(GFX_BUILD_DIR)/sprites/back_sprites/%.s: $(ASSET_ROOT)/pkmn_sprites/%.png
  146. grit $< -fts -fh! -g -gB 4 -gt -gzl -al 64 -aw 64 -m! -p! \
  147. -s $(shell echo $(notdir $(basename $<)) | sed "s/normal_/back_/g") \
  148. -o $@
  149. # Misc hardcoded targets
  150. $(NORMAL_CASTFORM_PAL_OBJ): $(NORMAL_CASTFORM_PAL_OBJ:.o=.s)
  151. $(AS) -o $@ $<
  152. $(NORMAL_CASTFORM_PAL_OBJ:.o=.s): $(CASTFORM_PNG)
  153. grit $< -fts -fh! -g! -gB 4 -gt -m! -p -pzl -pu16 -pn 64 \
  154. -s n_p_0385 -o $@
  155. $(SHINY_CASTFORM_PAL_OBJ): $(SHINY_CASTFORM_PAL_OBJ:.o=.s)
  156. $(AS) -o $@ $<
  157. $(SHINY_CASTFORM_PAL_OBJ:.o=.s): $(CASTFORM_PNG)
  158. grit $< -fts -fh! -g! -gB 4 -gt -m! -p -pzl -pu16 -pn 64 \
  159. -s s_p_0385 -o $@
  160. $(CASTFORM_FRONT_OBJ): $(CASTFORM_FRONT_OBJ:.o=.s)
  161. $(AS) -o $@ $<
  162. $(CASTFORM_FRONT_OBJ:.o=.s): $(CASTFORM_PNG)
  163. grit $< -fts -fh! -g -gB 4 -gt -gzl -al 0 -aw 256 -ah 64 -m! -p! \
  164. -s front_0385 -o $@
  165. $(CASTFORM_BACK_OBJ): $(CASTFORM_BACK_OBJ:.o=.s)
  166. $(AS) -o $@ $<
  167. $(CASTFORM_BACK_OBJ:.o=.s): $(CASTFORM_PNG)
  168. grit $< -fts -fh! -g -gB 4 -gt -gzl -al 0 -aw 256 -at 64 -ah 64 -m! -p! \
  169. -s back_0385 -o $@