ref: b852fe5b421fecd2b75c85bf5da926dd878434c0
parent: 8c5bf5746447ebb51fbf3aa2d688f410558e2a4c
author: yenatch <yenatch@gmail.com>
date: Wed Feb 17 10:33:01 EST 2016
Use rgbasm -D in the makefile.
--- a/Makefile
+++ b/Makefile
@@ -1,48 +1,37 @@
-# python 2.7
PYTHON := python
-
-# md5sum -c is used to compare rom hashes. The options may vary across platforms.
MD5 := md5sum -c --quiet
+2bpp := $(PYTHON) extras/pokemontools/gfx.py 2bpp
+1bpp := $(PYTHON) extras/pokemontools/gfx.py 1bpp
+pic := $(PYTHON) extras/pokemontools/pic.py compress
+includes := $(PYTHON) extras/pokemontools/scan_includes.py
-# Clear the default suffixes.
+base_obj := \
+ audio.o \
+ main.o \
+ text.o \
+ wram.o
+
+red_obj := $(base_obj:.o=_red.o)
+blue_obj := $(base_obj:.o=_blue.o)
+all_obj := $(red_obj) $(blue_obj)
+
+$(foreach obj, $(base_obj:.o=), \
+ $(eval $(obj)_dep := $(shell $(includes) $(obj).asm)) \
+)
+
.SUFFIXES:
.SUFFIXES: .asm .o .gbc .png .2bpp .1bpp .pic
-
-# Secondary expansion is required for dependency variables in object rules.
.SECONDEXPANSION:
-
# Suppress annoying intermediate file deletion messages.
.PRECIOUS: %.2bpp
-
.PHONY: all clean red blue compare
-
-poketools := extras/pokemontools
-gfx := $(PYTHON) $(poketools)/gfx.py
-2bpp := $(gfx) 2bpp
-1bpp := $(gfx) 1bpp
-pic := $(PYTHON) $(poketools)/pic.py compress
-includes := $(PYTHON) $(poketools)/scan_includes.py
-
-versions := red blue
-
-# Collect file dependencies for objects in red/ and blue/.
-$(foreach ver, $(versions), \
- $(eval $(ver)_asm := $(shell find $(ver) -iname '*.asm')) \
- $(eval $(ver)_obj := $($(ver)_asm:.asm=.o)) \
- $(eval all_obj += $($(ver)_obj)) \
-)
-$(foreach obj, $(all_obj), \
- $(eval $(obj:.o=)_dep := $(shell $(includes) $(obj:.o=.asm))) \
-)
-
-
roms := pokered.gbc pokeblue.gbc
-all: $(roms)
-red: pokered.gbc
-blue: pokeblue.gbc
+all: $(roms)
+red: pokered.gbc
+blue: pokeblue.gbc
# For contributors to make sure a change didn't affect the contents of the rom.
compare: red blue
@@ -52,29 +41,21 @@
rm -f $(roms) $(all_obj) $(roms:.gbc=.sym)
find . \( -iname '*.1bpp' -o -iname '*.2bpp' -o -iname '*.pic' \) -exec rm {} +
+%.asm: ;
+$(red_obj): %_red.o: %.asm $$(%_dep)
+ rgbasm -D "_RED" -h -o $@ $*.asm
+$(blue_obj): %_blue.o: %.asm $$(%_dep)
+ rgbasm -D "_BLUE" -h -o $@ $*.asm
-# Don't fix halts.
-asm_opt = -h
-
-# Make a symfile for debugging.
-link_opt = -n poke$*.sym
-
-# Header options for rgbfix.
dmg_opt = -jsv -k 01 -l 0x33 -m 0x13 -p 0 -r 03
red_opt = $(dmg_opt) -t "POKEMON RED"
blue_opt = $(dmg_opt) -t "POKEMON BLUE"
+poke%.gbc: $$(%_obj)
+ rgblink -n poke$*.sym -o $@ $^
+ rgbfix $($*_opt) $@
%.png: ;
%.2bpp: %.png ; @$(2bpp) $<
%.1bpp: %.png ; @$(1bpp) $<
%.pic: %.2bpp ; @$(pic) $<
-
-# Assemble source files into objects.
-$(all_obj): $$*.asm $$($$*_dep)
- rgbasm $(asm_opt) -o $@ $*.asm
-
-# Link objects to produce a rom.
-poke%.gbc: $$(%_obj)
- rgblink $(link_opt) -o $@ $^
- rgbfix $($*_opt) $@
--- a/blue.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-_BLUE EQU 1
-INCLUDE "charmap.asm"
--- a/blue/audio.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "blue.asm"
-INCLUDE "audio.asm"
--- a/blue/main.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "blue.asm"
-INCLUDE "main.asm"
--- a/blue/text.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "blue.asm"
-INCLUDE "text.asm"
--- a/blue/wram.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "blue.asm"
-INCLUDE "wram.asm"
--- a/constants.asm
+++ b/constants.asm
@@ -1,4 +1,5 @@
INCLUDE "macros.asm"
+INCLUDE "charmap.asm"
INCLUDE "hram.asm"
INCLUDE "vram.asm"
--- a/red.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-_RED EQU 1
-INCLUDE "charmap.asm"
--- a/red/audio.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "red.asm"
-INCLUDE "audio.asm"
--- a/red/main.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "red.asm"
-INCLUDE "main.asm"
--- a/red/text.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "red.asm"
-INCLUDE "text.asm"
--- a/red/wram.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "red.asm"
-INCLUDE "wram.asm"
--- a/text.asm
+++ b/text.asm
@@ -15,6 +15,7 @@
MOVE_NAMES EQU POKEDEX_TEXT + 1
INCLUDE "macros.asm"
+INCLUDE "charmap.asm"
INCLUDE "hram.asm"
--- a/yellow.asm
+++ /dev/null
@@ -1,4 +1,0 @@
-_YELLOW EQU 1
-_OPTION_BEACH_HOUSE EQU 1
-_OPTION_LOWCOST_SAFARI EQU 1
-INCLUDE "charmap.asm"
--- a/yellow/audio.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "yellow.asm"
-INCLUDE "audio.asm"
--- a/yellow/main.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "yellow.asm"
-INCLUDE "main.asm"
--- a/yellow/text.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "yellow.asm"
-INCLUDE "text.asm"
--- a/yellow/wram.asm
+++ /dev/null
@@ -1,2 +1,0 @@
-INCLUDE "yellow.asm"
-INCLUDE "wram.asm"