Clean up Makefile

This makefile can now figure graphics dependencies on its own, creates
dependency files for each compilation unit and compiles everything
separately.

This is a proposal. Please try it out, read the Makefile to see if you
get what I'm trying to do, and propose any improvements you want.
This commit is contained in:
pfero 2018-05-30 22:53:12 +02:00
parent 9ab9ea4ab5
commit cd9191b074
306 changed files with 441 additions and 405 deletions

1
.gitignore vendored
View File

@ -21,4 +21,5 @@ shim.asm
*.exe *.exe
tools/scan_includes tools/scan_includes
tools/pkmncompress tools/pkmncompress
tools/gfx
pret/ pret/

124
Makefile
View File

@ -1,74 +1,94 @@
BUILD := build
MD5 := md5sum -c MD5 := md5sum -c
PYTHON := python
.PHONY: all compare clean mostlyclean text RGBASM := rgbasm
RGBGFX := rgbgfx
RGBLINK := rgblink
RGBFIX := rgbfix
.SUFFIXES: RGBASMFLAGS := -E -i $(BUILD)/
.SUFFIXES: .asm .o .gb .png tools/gfx :=
.SECONDEXPANSION:
.PRECIOUS: %.1bpp %.2bpp %.pic
ROMS := pokegold-spaceworld.gb ROMS := pokegold-spaceworld.gb
BASEROM := baserom.gb BASEROM := baserom.gb
OBJS := home.o main.o audio.o sram.o wram.o hram.o shim.o DIRS := home engine data audio
OBJS := $(addprefix $(BUILD)/, gfx.o sram.o wram.o hram.o shim.o)
# Link objects together to build a rom. rwildcard = $(foreach d, $(wildcard $1*), $(filter $(subst *, %, $2), $d) $(call rwildcard, $d/, $2))
OBJS += $(patsubst %.asm, $(BUILD)/%.o, $(call rwildcard, $(DIRS), *.asm))
GFX := $(patsubst %.png, $(BUILD)/%.2bpp, \
$(patsubst %.1bpp.png, $(BUILD)/%.1bpp, \
$(patsubst gfx/pokemon/%/front.png, $(BUILD)/gfx/pokemon/%/front.pic, \
$(patsubst gfx/pokemon/%/back.png, $(BUILD)/gfx/pokemon/%/back.pic, \
$(call rwildcard, gfx, *.png)))))
.SECONDEXPANSION:
.PHONY: all
all: $(ROMS) compare all: $(ROMS) compare
tools: .PHONY: compare
compare: $(ROMS)
$(MD5) roms.md5
.PHONY: tools
tools tools/pkmncompress tools/gfx:
$(MAKE) -C tools/ $(MAKE) -C tools/
define DEP
$1: $2 $$(shell tools/scan_includes $2)
rgbasm -E -o $$@ $$<
endef
ifeq (,$(filter clean tools,$(MAKECMDGOALS)))
$(info $(shell $(MAKE) -C tools))
$(foreach obj, $(OBJS), $(eval $(call DEP,$(obj),$(obj:.o=.asm))))
endif
shim.asm: tools/make_shim.py shim.sym
python tools/make_shim.py -w -- $(filter-out $<, $^) > $@
$(ROMS): $(OBJS)
rgblink -d -n $(ROMS:.gb=.sym) -m $(ROMS:.gb=.map) -O $(BASEROM) -o $@ $^
rgbfix -f lh -k 01 -l 0x33 -m 0x03 -p 0 -r 3 -t "POKEMON2GOLD" $@
compare: $(ROMS)
@$(MD5) roms.md5
# Remove files generated by the build process. # Remove files generated by the build process.
.PHONY: clean
clean: clean:
rm -rf $(ROMS) $(OBJS) $(ROMS:.gb=.sym) build/* shim.asm rm -rf $(ROMS) $(BUILD) $(ROMS:.gb=.sym) $(ROMS:.gb=.map)
find . \( -iname '*.1bpp' -o -iname '*.2bpp' -o -iname '*.pic' -o -iname '*.pcm' \) -exec rm {} +
# Remove files except for graphics. # Remove files except for graphics.
.PHONY: mostlyclean
mostlyclean: mostlyclean:
rm -rf $(ROMS) $(OBJS) $(ROMS:.gb=.sym) build/* shim.asm rm -rf $(ROMS) $(OBJS) $(ROMS:.gb=.sym) $(ROMS:.gb=.map)
find . \( -iname '*.pcm' \) -exec rm {} +
gfx/sgb/sgb_border_alt.2bpp: tools/gfx += --trim-whitespace $(ROMS): $(OBJS)
gfx/sgb/sgb_border.2bpp: tools/gfx += --trim-whitespace $(RGBLINK) -d -n $(@:.gb=.sym) -m $(@:.gb=.map) -O $(BASEROM) -o $@ $^
gfx/title/title.2bpp: tools/gfx += --trim-whitespace $(RGBFIX) -f lh -k 01 -l 0x33 -m 0x03 -p 0 -r 3 -t "POKEMON2GOLD" $@
gfx/trainer_card/leaders.2bpp: tools/gfx += --trim-whitespace
gfx/minigames/slots.2bpp: tools/gfx += --trim-whitespace
gfx/minigames/poker.2bpp: tools/gfx += --trim-whitespace
gfx/intro/purin_pikachu.2bpp: tools/gfx += --trim-whitespace
%.2bpp: %.png $(BUILD)/shim.asm: tools/make_shim.py shim.sym | $$(dir $$@)
rgbgfx -o $@ $< $(PYTHON) tools/make_shim.py -w -- $(filter-out $<, $^) > $@
$(if $(tools/gfx),\
tools/gfx $(tools/gfx) -o $@ $@)
%.1bpp: %.png $(BUILD)/gfx.o: | $(GFX)
rgbgfx -d1 -o $@ $< $(BUILD)/%.o: $(BUILD)/%.asm | $$(dir $$@)
$(if $(tools/gfx),\ $(RGBASM) $(RGBASMFLAGS) -M $(@:.o=.d) $(OUTPUT_OPTION) $<
tools/gfx $(tools/gfx) -d1 -o $@ $@) $(BUILD)/%.o: %.asm | $$(dir $$@)
$(RGBASM) $(RGBASMFLAGS) -M $(@:.o=.d) $(OUTPUT_OPTION) $<
%.tilemap: %.png $(BUILD)/gfx/sgb/sgb_border_alt.2bpp: tools/gfx += --trim-whitespace
rgbgfx -t $@ $< $(BUILD)/gfx/sgb/sgb_border.2bpp: tools/gfx += --trim-whitespace
$(BUILD)/gfx/title/title.2bpp: tools/gfx += --trim-whitespace
$(BUILD)/gfx/trainer_card/leaders.2bpp: tools/gfx += --trim-whitespace
$(BUILD)/gfx/minigames/slots.2bpp: tools/gfx += --trim-whitespace
$(BUILD)/gfx/minigames/poker.2bpp: tools/gfx += --trim-whitespace
$(BUILD)/gfx/intro/purin_pikachu.2bpp: tools/gfx += --trim-whitespace
%.pic: %.2bpp .PRECIOUS: $(BUILD)/%.pic
$(BUILD)/%.pic: $(BUILD)/%.2bpp tools/pkmncompress | $$(dir $$@)
tools/pkmncompress $< $@ tools/pkmncompress $< $@
.PRECIOUS: $(BUILD)/%.2bpp
$(BUILD)/%.2bpp: %.png tools/gfx | $$(dir $$@)
$(RGBGFX) $(OUTPUT_OPTION) $<
tools/gfx $(tools/gfx) $(OUTPUT_OPTION) $@
.PRECIOUS: $(BUILD)/%.1bpp
$(BUILD)/%.1bpp: %.1bpp.png tools/gfx | $$(dir $$@)
$(RGBGFX) -d1 $(OUTPUT_OPTION) $<
tools/gfx $(tools/gfx) -d1 $(OUTPUT_OPTION) $@
.PRECIOUS: $(BUILD)/%.tilemap
$(BUILD)/%.tilemap: %.png | $$(dir $$@)
$(RGBGFX) -t $@ $<
.PRECIOUS: %/
%/:
mkdir -p $@
-include $(call rwildcard, $(BUILD)/, *.d)

View File

@ -1,11 +0,0 @@
INCLUDE "constants.asm"
SECTION "Audio", ROMX[$4000],BANK[$3A]
INCLUDE "audio/engine.asm"
SECTION "Cries", ROMX[$51CB],BANK[$3C] ; TODO: Temporary, please map 4000-51CA and move this section's base
CryHeaders:: ; TODO: Rip the data, then INCBIN it

5
audio/cries.asm Normal file
View File

@ -0,0 +1,5 @@
INCLUDE "constants.asm"
SECTION "Cries", ROMX[$51CB], BANK[$3C] ; TODO: Temporary, please map 4000-51CA and move this section's base
CryHeaders:: ; TODO: Rip the data, then INCBIN it

View File

@ -1,3 +1,7 @@
INCLUDE "constants.asm"
SECTION "Audio", ROMX[$4000], BANK[$3A]
_DisableAudio:: ; 3a:4000 _DisableAudio:: ; 3a:4000
push hl push hl
push de push de

View File

@ -1,3 +1,7 @@
INCLUDE "constants.asm"
SECTION "ItemNames", ROMX[$6FEC], BANK[$01]
ItemNames:: ItemNames::
db "マスターボール@" db "マスターボール@"
db "ハイパーボール@" db "ハイパーボール@"

View File

@ -1,3 +1,7 @@
INCLUDE "constants.asm"
SECTION "MoveNames", ROMX[$52A1], BANK[$10]
MoveNames:: MoveNames::
db "はたく@" db "はたく@"
db "からてチョップ@" db "からてチョップ@"

View File

@ -1,3 +1,7 @@
INCLUDE "constants.asm"
SECTION "TM/HM Moves", ROMX[$52D1], BANK[$04]
; This is a nearly-sequential table of new moves. ; This is a nearly-sequential table of new moves.
; It was probably meant for easy testing, not as ; It was probably meant for easy testing, not as
; a final set of TM moves. ; a final set of TM moves.

View File

@ -1,3 +1,7 @@
INCLUDE "constants.asm"
SECTION "Base Data", ROMX[$4F10], BANK[$14]
tmhm: MACRO tmhm: MACRO
; used in data/pokemon/base_stats/*.asm ; used in data/pokemon/base_stats/*.asm
tms1 = 0 ; TM01-TM24 (24) tms1 = 0 ; TM01-TM24 (24)
@ -33,255 +37,255 @@ ENDM
BaseData:: BaseData::
MonBaseStats:: MonBaseStats::
INCLUDE "data/pokemon/base_stats/fushigidane.asm" INCLUDE "data/pokemon/base_stats/fushigidane.inc"
MonBaseStatsEnd:: MonBaseStatsEnd::
INCLUDE "data/pokemon/base_stats/fushigisou.asm" INCLUDE "data/pokemon/base_stats/fushigisou.inc"
INCLUDE "data/pokemon/base_stats/fushigibana.asm" INCLUDE "data/pokemon/base_stats/fushigibana.inc"
INCLUDE "data/pokemon/base_stats/hitokage.asm" INCLUDE "data/pokemon/base_stats/hitokage.inc"
INCLUDE "data/pokemon/base_stats/lizardo.asm" INCLUDE "data/pokemon/base_stats/lizardo.inc"
INCLUDE "data/pokemon/base_stats/lizardon.asm" INCLUDE "data/pokemon/base_stats/lizardon.inc"
INCLUDE "data/pokemon/base_stats/zenigame.asm" INCLUDE "data/pokemon/base_stats/zenigame.inc"
INCLUDE "data/pokemon/base_stats/kameil.asm" INCLUDE "data/pokemon/base_stats/kameil.inc"
INCLUDE "data/pokemon/base_stats/kamex.asm" INCLUDE "data/pokemon/base_stats/kamex.inc"
INCLUDE "data/pokemon/base_stats/caterpie.asm" INCLUDE "data/pokemon/base_stats/caterpie.inc"
INCLUDE "data/pokemon/base_stats/transel.asm" INCLUDE "data/pokemon/base_stats/transel.inc"
INCLUDE "data/pokemon/base_stats/butterfree.asm" INCLUDE "data/pokemon/base_stats/butterfree.inc"
INCLUDE "data/pokemon/base_stats/beedle.asm" INCLUDE "data/pokemon/base_stats/beedle.inc"
INCLUDE "data/pokemon/base_stats/cocoon.asm" INCLUDE "data/pokemon/base_stats/cocoon.inc"
INCLUDE "data/pokemon/base_stats/spear.asm" INCLUDE "data/pokemon/base_stats/spear.inc"
INCLUDE "data/pokemon/base_stats/poppo.asm" INCLUDE "data/pokemon/base_stats/poppo.inc"
INCLUDE "data/pokemon/base_stats/pigeon.asm" INCLUDE "data/pokemon/base_stats/pigeon.inc"
INCLUDE "data/pokemon/base_stats/pigeot.asm" INCLUDE "data/pokemon/base_stats/pigeot.inc"
INCLUDE "data/pokemon/base_stats/koratta.asm" INCLUDE "data/pokemon/base_stats/koratta.inc"
INCLUDE "data/pokemon/base_stats/ratta.asm" INCLUDE "data/pokemon/base_stats/ratta.inc"
INCLUDE "data/pokemon/base_stats/onisuzume.asm" INCLUDE "data/pokemon/base_stats/onisuzume.inc"
INCLUDE "data/pokemon/base_stats/onidrill.asm" INCLUDE "data/pokemon/base_stats/onidrill.inc"
INCLUDE "data/pokemon/base_stats/arbo.asm" INCLUDE "data/pokemon/base_stats/arbo.inc"
INCLUDE "data/pokemon/base_stats/arbok.asm" INCLUDE "data/pokemon/base_stats/arbok.inc"
INCLUDE "data/pokemon/base_stats/pikachu.asm" INCLUDE "data/pokemon/base_stats/pikachu.inc"
INCLUDE "data/pokemon/base_stats/raichu.asm" INCLUDE "data/pokemon/base_stats/raichu.inc"
INCLUDE "data/pokemon/base_stats/sand.asm" INCLUDE "data/pokemon/base_stats/sand.inc"
INCLUDE "data/pokemon/base_stats/sandpan.asm" INCLUDE "data/pokemon/base_stats/sandpan.inc"
INCLUDE "data/pokemon/base_stats/nidoran_f.asm" INCLUDE "data/pokemon/base_stats/nidoran_f.inc"
INCLUDE "data/pokemon/base_stats/nidorina.asm" INCLUDE "data/pokemon/base_stats/nidorina.inc"
INCLUDE "data/pokemon/base_stats/nidoqueen.asm" INCLUDE "data/pokemon/base_stats/nidoqueen.inc"
INCLUDE "data/pokemon/base_stats/nidoran_m.asm" INCLUDE "data/pokemon/base_stats/nidoran_m.inc"
INCLUDE "data/pokemon/base_stats/nidorino.asm" INCLUDE "data/pokemon/base_stats/nidorino.inc"
INCLUDE "data/pokemon/base_stats/nidoking.asm" INCLUDE "data/pokemon/base_stats/nidoking.inc"
INCLUDE "data/pokemon/base_stats/pippi.asm" INCLUDE "data/pokemon/base_stats/pippi.inc"
INCLUDE "data/pokemon/base_stats/pixy.asm" INCLUDE "data/pokemon/base_stats/pixy.inc"
INCLUDE "data/pokemon/base_stats/rokon.asm" INCLUDE "data/pokemon/base_stats/rokon.inc"
INCLUDE "data/pokemon/base_stats/kyukon.asm" INCLUDE "data/pokemon/base_stats/kyukon.inc"
INCLUDE "data/pokemon/base_stats/purin.asm" INCLUDE "data/pokemon/base_stats/purin.inc"
INCLUDE "data/pokemon/base_stats/pukurin.asm" INCLUDE "data/pokemon/base_stats/pukurin.inc"
INCLUDE "data/pokemon/base_stats/zubat.asm" INCLUDE "data/pokemon/base_stats/zubat.inc"
INCLUDE "data/pokemon/base_stats/golbat.asm" INCLUDE "data/pokemon/base_stats/golbat.inc"
INCLUDE "data/pokemon/base_stats/nazonokusa.asm" INCLUDE "data/pokemon/base_stats/nazonokusa.inc"
INCLUDE "data/pokemon/base_stats/kusaihana.asm" INCLUDE "data/pokemon/base_stats/kusaihana.inc"
INCLUDE "data/pokemon/base_stats/ruffresia.asm" INCLUDE "data/pokemon/base_stats/ruffresia.inc"
INCLUDE "data/pokemon/base_stats/paras.asm" INCLUDE "data/pokemon/base_stats/paras.inc"
INCLUDE "data/pokemon/base_stats/parasect.asm" INCLUDE "data/pokemon/base_stats/parasect.inc"
INCLUDE "data/pokemon/base_stats/kongpang.asm" INCLUDE "data/pokemon/base_stats/kongpang.inc"
INCLUDE "data/pokemon/base_stats/morphon.asm" INCLUDE "data/pokemon/base_stats/morphon.inc"
INCLUDE "data/pokemon/base_stats/digda.asm" INCLUDE "data/pokemon/base_stats/digda.inc"
INCLUDE "data/pokemon/base_stats/dugtrio.asm" INCLUDE "data/pokemon/base_stats/dugtrio.inc"
INCLUDE "data/pokemon/base_stats/nyarth.asm" INCLUDE "data/pokemon/base_stats/nyarth.inc"
INCLUDE "data/pokemon/base_stats/persian.asm" INCLUDE "data/pokemon/base_stats/persian.inc"
INCLUDE "data/pokemon/base_stats/koduck.asm" INCLUDE "data/pokemon/base_stats/koduck.inc"
INCLUDE "data/pokemon/base_stats/golduck.asm" INCLUDE "data/pokemon/base_stats/golduck.inc"
INCLUDE "data/pokemon/base_stats/mankey.asm" INCLUDE "data/pokemon/base_stats/mankey.inc"
INCLUDE "data/pokemon/base_stats/okorizaru.asm" INCLUDE "data/pokemon/base_stats/okorizaru.inc"
INCLUDE "data/pokemon/base_stats/gardie.asm" INCLUDE "data/pokemon/base_stats/gardie.inc"
INCLUDE "data/pokemon/base_stats/windie.asm" INCLUDE "data/pokemon/base_stats/windie.inc"
INCLUDE "data/pokemon/base_stats/nyoromo.asm" INCLUDE "data/pokemon/base_stats/nyoromo.inc"
INCLUDE "data/pokemon/base_stats/nyorozo.asm" INCLUDE "data/pokemon/base_stats/nyorozo.inc"
INCLUDE "data/pokemon/base_stats/nyorobon.asm" INCLUDE "data/pokemon/base_stats/nyorobon.inc"
INCLUDE "data/pokemon/base_stats/casey.asm" INCLUDE "data/pokemon/base_stats/casey.inc"
INCLUDE "data/pokemon/base_stats/yungerer.asm" INCLUDE "data/pokemon/base_stats/yungerer.inc"
INCLUDE "data/pokemon/base_stats/foodin.asm" INCLUDE "data/pokemon/base_stats/foodin.inc"
INCLUDE "data/pokemon/base_stats/wanriky.asm" INCLUDE "data/pokemon/base_stats/wanriky.inc"
INCLUDE "data/pokemon/base_stats/goriky.asm" INCLUDE "data/pokemon/base_stats/goriky.inc"
INCLUDE "data/pokemon/base_stats/kairiky.asm" INCLUDE "data/pokemon/base_stats/kairiky.inc"
INCLUDE "data/pokemon/base_stats/madatsubomi.asm" INCLUDE "data/pokemon/base_stats/madatsubomi.inc"
INCLUDE "data/pokemon/base_stats/utsudon.asm" INCLUDE "data/pokemon/base_stats/utsudon.inc"
INCLUDE "data/pokemon/base_stats/utsubot.asm" INCLUDE "data/pokemon/base_stats/utsubot.inc"
INCLUDE "data/pokemon/base_stats/menokurage.asm" INCLUDE "data/pokemon/base_stats/menokurage.inc"
INCLUDE "data/pokemon/base_stats/dokukurage.asm" INCLUDE "data/pokemon/base_stats/dokukurage.inc"
INCLUDE "data/pokemon/base_stats/isitsubute.asm" INCLUDE "data/pokemon/base_stats/isitsubute.inc"
INCLUDE "data/pokemon/base_stats/golone.asm" INCLUDE "data/pokemon/base_stats/golone.inc"
INCLUDE "data/pokemon/base_stats/golonya.asm" INCLUDE "data/pokemon/base_stats/golonya.inc"
INCLUDE "data/pokemon/base_stats/ponyta.asm" INCLUDE "data/pokemon/base_stats/ponyta.inc"
INCLUDE "data/pokemon/base_stats/gallop.asm" INCLUDE "data/pokemon/base_stats/gallop.inc"
INCLUDE "data/pokemon/base_stats/yadon.asm" INCLUDE "data/pokemon/base_stats/yadon.inc"
INCLUDE "data/pokemon/base_stats/yadoran.asm" INCLUDE "data/pokemon/base_stats/yadoran.inc"
INCLUDE "data/pokemon/base_stats/coil.asm" INCLUDE "data/pokemon/base_stats/coil.inc"
INCLUDE "data/pokemon/base_stats/rarecoil.asm" INCLUDE "data/pokemon/base_stats/rarecoil.inc"
INCLUDE "data/pokemon/base_stats/kamonegi.asm" INCLUDE "data/pokemon/base_stats/kamonegi.inc"
INCLUDE "data/pokemon/base_stats/dodo.asm" INCLUDE "data/pokemon/base_stats/dodo.inc"
INCLUDE "data/pokemon/base_stats/dodorio.asm" INCLUDE "data/pokemon/base_stats/dodorio.inc"
INCLUDE "data/pokemon/base_stats/pawou.asm" INCLUDE "data/pokemon/base_stats/pawou.inc"
INCLUDE "data/pokemon/base_stats/jugon.asm" INCLUDE "data/pokemon/base_stats/jugon.inc"
INCLUDE "data/pokemon/base_stats/betbeter.asm" INCLUDE "data/pokemon/base_stats/betbeter.inc"
INCLUDE "data/pokemon/base_stats/betbeton.asm" INCLUDE "data/pokemon/base_stats/betbeton.inc"
INCLUDE "data/pokemon/base_stats/shellder.asm" INCLUDE "data/pokemon/base_stats/shellder.inc"
INCLUDE "data/pokemon/base_stats/parshen.asm" INCLUDE "data/pokemon/base_stats/parshen.inc"
INCLUDE "data/pokemon/base_stats/ghos.asm" INCLUDE "data/pokemon/base_stats/ghos.inc"
INCLUDE "data/pokemon/base_stats/ghost.asm" INCLUDE "data/pokemon/base_stats/ghost.inc"
INCLUDE "data/pokemon/base_stats/gangar.asm" INCLUDE "data/pokemon/base_stats/gangar.inc"
INCLUDE "data/pokemon/base_stats/iwark.asm" INCLUDE "data/pokemon/base_stats/iwark.inc"
INCLUDE "data/pokemon/base_stats/sleepe.asm" INCLUDE "data/pokemon/base_stats/sleepe.inc"
INCLUDE "data/pokemon/base_stats/sleeper.asm" INCLUDE "data/pokemon/base_stats/sleeper.inc"
INCLUDE "data/pokemon/base_stats/crab.asm" INCLUDE "data/pokemon/base_stats/crab.inc"
INCLUDE "data/pokemon/base_stats/kingler.asm" INCLUDE "data/pokemon/base_stats/kingler.inc"
INCLUDE "data/pokemon/base_stats/biriridama.asm" INCLUDE "data/pokemon/base_stats/biriridama.inc"
INCLUDE "data/pokemon/base_stats/marumine.asm" INCLUDE "data/pokemon/base_stats/marumine.inc"
INCLUDE "data/pokemon/base_stats/tamatama.asm" INCLUDE "data/pokemon/base_stats/tamatama.inc"
INCLUDE "data/pokemon/base_stats/nassy.asm" INCLUDE "data/pokemon/base_stats/nassy.inc"
INCLUDE "data/pokemon/base_stats/karakara.asm" INCLUDE "data/pokemon/base_stats/karakara.inc"
INCLUDE "data/pokemon/base_stats/garagara.asm" INCLUDE "data/pokemon/base_stats/garagara.inc"
INCLUDE "data/pokemon/base_stats/sawamular.asm" INCLUDE "data/pokemon/base_stats/sawamular.inc"
INCLUDE "data/pokemon/base_stats/ebiwalar.asm" INCLUDE "data/pokemon/base_stats/ebiwalar.inc"
INCLUDE "data/pokemon/base_stats/beroringa.asm" INCLUDE "data/pokemon/base_stats/beroringa.inc"
INCLUDE "data/pokemon/base_stats/dogars.asm" INCLUDE "data/pokemon/base_stats/dogars.inc"
INCLUDE "data/pokemon/base_stats/matadogas.asm" INCLUDE "data/pokemon/base_stats/matadogas.inc"
INCLUDE "data/pokemon/base_stats/sihorn.asm" INCLUDE "data/pokemon/base_stats/sihorn.inc"
INCLUDE "data/pokemon/base_stats/sidon.asm" INCLUDE "data/pokemon/base_stats/sidon.inc"
INCLUDE "data/pokemon/base_stats/lucky.asm" INCLUDE "data/pokemon/base_stats/lucky.inc"
INCLUDE "data/pokemon/base_stats/monjara.asm" INCLUDE "data/pokemon/base_stats/monjara.inc"
INCLUDE "data/pokemon/base_stats/garura.asm" INCLUDE "data/pokemon/base_stats/garura.inc"
INCLUDE "data/pokemon/base_stats/tattu.asm" INCLUDE "data/pokemon/base_stats/tattu.inc"
INCLUDE "data/pokemon/base_stats/seadra.asm" INCLUDE "data/pokemon/base_stats/seadra.inc"
INCLUDE "data/pokemon/base_stats/tosakinto.asm" INCLUDE "data/pokemon/base_stats/tosakinto.inc"
INCLUDE "data/pokemon/base_stats/azumao.asm" INCLUDE "data/pokemon/base_stats/azumao.inc"
INCLUDE "data/pokemon/base_stats/hitodeman.asm" INCLUDE "data/pokemon/base_stats/hitodeman.inc"
INCLUDE "data/pokemon/base_stats/starmie.asm" INCLUDE "data/pokemon/base_stats/starmie.inc"
INCLUDE "data/pokemon/base_stats/barrierd.asm" INCLUDE "data/pokemon/base_stats/barrierd.inc"
INCLUDE "data/pokemon/base_stats/strike.asm" INCLUDE "data/pokemon/base_stats/strike.inc"
INCLUDE "data/pokemon/base_stats/rougela.asm" INCLUDE "data/pokemon/base_stats/rougela.inc"
INCLUDE "data/pokemon/base_stats/eleboo.asm" INCLUDE "data/pokemon/base_stats/eleboo.inc"
INCLUDE "data/pokemon/base_stats/boober.asm" INCLUDE "data/pokemon/base_stats/boober.inc"
INCLUDE "data/pokemon/base_stats/kailios.asm" INCLUDE "data/pokemon/base_stats/kailios.inc"
INCLUDE "data/pokemon/base_stats/kentauros.asm" INCLUDE "data/pokemon/base_stats/kentauros.inc"
INCLUDE "data/pokemon/base_stats/koiking.asm" INCLUDE "data/pokemon/base_stats/koiking.inc"
INCLUDE "data/pokemon/base_stats/gyarados.asm" INCLUDE "data/pokemon/base_stats/gyarados.inc"
INCLUDE "data/pokemon/base_stats/laplace.asm" INCLUDE "data/pokemon/base_stats/laplace.inc"
INCLUDE "data/pokemon/base_stats/metamon.asm" INCLUDE "data/pokemon/base_stats/metamon.inc"
INCLUDE "data/pokemon/base_stats/eievui.asm" INCLUDE "data/pokemon/base_stats/eievui.inc"
INCLUDE "data/pokemon/base_stats/showers.asm" INCLUDE "data/pokemon/base_stats/showers.inc"
INCLUDE "data/pokemon/base_stats/thunders.asm" INCLUDE "data/pokemon/base_stats/thunders.inc"
INCLUDE "data/pokemon/base_stats/booster.asm" INCLUDE "data/pokemon/base_stats/booster.inc"
INCLUDE "data/pokemon/base_stats/porygon.asm" INCLUDE "data/pokemon/base_stats/porygon.inc"
INCLUDE "data/pokemon/base_stats/omnite.asm" INCLUDE "data/pokemon/base_stats/omnite.inc"
INCLUDE "data/pokemon/base_stats/omstar.asm" INCLUDE "data/pokemon/base_stats/omstar.inc"
INCLUDE "data/pokemon/base_stats/kabuto.asm" INCLUDE "data/pokemon/base_stats/kabuto.inc"
INCLUDE "data/pokemon/base_stats/kabutops.asm" INCLUDE "data/pokemon/base_stats/kabutops.inc"
INCLUDE "data/pokemon/base_stats/ptera.asm" INCLUDE "data/pokemon/base_stats/ptera.inc"
INCLUDE "data/pokemon/base_stats/kabigon.asm" INCLUDE "data/pokemon/base_stats/kabigon.inc"
INCLUDE "data/pokemon/base_stats/freezer.asm" INCLUDE "data/pokemon/base_stats/freezer.inc"
INCLUDE "data/pokemon/base_stats/thunder.asm" INCLUDE "data/pokemon/base_stats/thunder.inc"
INCLUDE "data/pokemon/base_stats/fire.asm" INCLUDE "data/pokemon/base_stats/fire.inc"
INCLUDE "data/pokemon/base_stats/miniryu.asm" INCLUDE "data/pokemon/base_stats/miniryu.inc"
INCLUDE "data/pokemon/base_stats/hakuryu.asm" INCLUDE "data/pokemon/base_stats/hakuryu.inc"
INCLUDE "data/pokemon/base_stats/kairyu.asm" INCLUDE "data/pokemon/base_stats/kairyu.inc"
INCLUDE "data/pokemon/base_stats/mewtwo.asm" INCLUDE "data/pokemon/base_stats/mewtwo.inc"
INCLUDE "data/pokemon/base_stats/mew.asm" INCLUDE "data/pokemon/base_stats/mew.inc"
INCLUDE "data/pokemon/base_stats/happa.asm" INCLUDE "data/pokemon/base_stats/happa.inc"
INCLUDE "data/pokemon/base_stats/hanamogura.asm" INCLUDE "data/pokemon/base_stats/hanamogura.inc"
INCLUDE "data/pokemon/base_stats/hanaryu.asm" INCLUDE "data/pokemon/base_stats/hanaryu.inc"
INCLUDE "data/pokemon/base_stats/honoguma.asm" INCLUDE "data/pokemon/base_stats/honoguma.inc"
INCLUDE "data/pokemon/base_stats/volbear.asm" INCLUDE "data/pokemon/base_stats/volbear.inc"
INCLUDE "data/pokemon/base_stats/dynabear.asm" INCLUDE "data/pokemon/base_stats/dynabear.inc"
INCLUDE "data/pokemon/base_stats/kurusu.asm" INCLUDE "data/pokemon/base_stats/kurusu.inc"
INCLUDE "data/pokemon/base_stats/aqua.asm" INCLUDE "data/pokemon/base_stats/aqua.inc"
INCLUDE "data/pokemon/base_stats/aquaria.asm" INCLUDE "data/pokemon/base_stats/aquaria.inc"
INCLUDE "data/pokemon/base_stats/hoho.asm" INCLUDE "data/pokemon/base_stats/hoho.inc"
INCLUDE "data/pokemon/base_stats/bobo.asm" INCLUDE "data/pokemon/base_stats/bobo.inc"
INCLUDE "data/pokemon/base_stats/pachimee.asm" INCLUDE "data/pokemon/base_stats/pachimee.inc"
INCLUDE "data/pokemon/base_stats/mokoko.asm" INCLUDE "data/pokemon/base_stats/mokoko.inc"
INCLUDE "data/pokemon/base_stats/denryu.asm" INCLUDE "data/pokemon/base_stats/denryu.inc"
INCLUDE "data/pokemon/base_stats/mikon.asm" INCLUDE "data/pokemon/base_stats/mikon.inc"
INCLUDE "data/pokemon/base_stats/monja.asm" INCLUDE "data/pokemon/base_stats/monja.inc"
INCLUDE "data/pokemon/base_stats/jaranra.asm" INCLUDE "data/pokemon/base_stats/jaranra.inc"
INCLUDE "data/pokemon/base_stats/haneei.asm" INCLUDE "data/pokemon/base_stats/haneei.inc"
INCLUDE "data/pokemon/base_stats/puku.asm" INCLUDE "data/pokemon/base_stats/puku.inc"
INCLUDE "data/pokemon/base_stats/shibirefugu.asm" INCLUDE "data/pokemon/base_stats/shibirefugu.inc"
INCLUDE "data/pokemon/base_stats/pichu.asm" INCLUDE "data/pokemon/base_stats/pichu.inc"
INCLUDE "data/pokemon/base_stats/py.asm" INCLUDE "data/pokemon/base_stats/py.inc"
INCLUDE "data/pokemon/base_stats/pupurin.asm" INCLUDE "data/pokemon/base_stats/pupurin.inc"
INCLUDE "data/pokemon/base_stats/mizuuo.asm" INCLUDE "data/pokemon/base_stats/mizuuo.inc"
INCLUDE "data/pokemon/base_stats/naty.asm" INCLUDE "data/pokemon/base_stats/naty.inc"
INCLUDE "data/pokemon/base_stats/natio.asm" INCLUDE "data/pokemon/base_stats/natio.inc"
INCLUDE "data/pokemon/base_stats/gyopin.asm" INCLUDE "data/pokemon/base_stats/gyopin.inc"
INCLUDE "data/pokemon/base_stats/maril.asm" INCLUDE "data/pokemon/base_stats/maril.inc"
INCLUDE "data/pokemon/base_stats/manbo1.asm" INCLUDE "data/pokemon/base_stats/manbo1.inc"
INCLUDE "data/pokemon/base_stats/ikari.asm" INCLUDE "data/pokemon/base_stats/ikari.inc"
INCLUDE "data/pokemon/base_stats/grotess.asm" INCLUDE "data/pokemon/base_stats/grotess.inc"
INCLUDE "data/pokemon/base_stats/eksing.asm" INCLUDE "data/pokemon/base_stats/eksing.inc"
INCLUDE "data/pokemon/base_stats/para.asm" INCLUDE "data/pokemon/base_stats/para.inc"
INCLUDE "data/pokemon/base_stats/kokumo.asm" INCLUDE "data/pokemon/base_stats/kokumo.inc"
INCLUDE "data/pokemon/base_stats/twohead.asm" INCLUDE "data/pokemon/base_stats/twohead.inc"
INCLUDE "data/pokemon/base_stats/yoroidori.asm" INCLUDE "data/pokemon/base_stats/yoroidori.inc"
INCLUDE "data/pokemon/base_stats/animon.asm" INCLUDE "data/pokemon/base_stats/animon.inc"
INCLUDE "data/pokemon/base_stats/hinazu.asm" INCLUDE "data/pokemon/base_stats/hinazu.inc"
INCLUDE "data/pokemon/base_stats/sunny.asm" INCLUDE "data/pokemon/base_stats/sunny.inc"
INCLUDE "data/pokemon/base_stats/paon.asm" INCLUDE "data/pokemon/base_stats/paon.inc"
INCLUDE "data/pokemon/base_stats/donphan.asm" INCLUDE "data/pokemon/base_stats/donphan.inc"
INCLUDE "data/pokemon/base_stats/twinz.asm" INCLUDE "data/pokemon/base_stats/twinz.inc"
INCLUDE "data/pokemon/base_stats/kirinriki.asm" INCLUDE "data/pokemon/base_stats/kirinriki.inc"
INCLUDE "data/pokemon/base_stats/painter.asm" INCLUDE "data/pokemon/base_stats/painter.inc"
INCLUDE "data/pokemon/base_stats/kounya.asm" INCLUDE "data/pokemon/base_stats/kounya.inc"
INCLUDE "data/pokemon/base_stats/rinrin.asm" INCLUDE "data/pokemon/base_stats/rinrin.inc"
INCLUDE "data/pokemon/base_stats/berurun.asm" INCLUDE "data/pokemon/base_stats/berurun.inc"
INCLUDE "data/pokemon/base_stats/nyorotono.asm" INCLUDE "data/pokemon/base_stats/nyorotono.inc"
INCLUDE "data/pokemon/base_stats/yadoking.asm" INCLUDE "data/pokemon/base_stats/yadoking.inc"
INCLUDE "data/pokemon/base_stats/annon.asm" INCLUDE "data/pokemon/base_stats/annon.inc"
INCLUDE "data/pokemon/base_stats/rediba.asm" INCLUDE "data/pokemon/base_stats/rediba.inc"
INCLUDE "data/pokemon/base_stats/mitsuboshi.asm" INCLUDE "data/pokemon/base_stats/mitsuboshi.inc"
INCLUDE "data/pokemon/base_stats/puchicorn.asm" INCLUDE "data/pokemon/base_stats/puchicorn.inc"
INCLUDE "data/pokemon/base_stats/eifie.asm" INCLUDE "data/pokemon/base_stats/eifie.inc"
INCLUDE "data/pokemon/base_stats/blacky.asm" INCLUDE "data/pokemon/base_stats/blacky.inc"
INCLUDE "data/pokemon/base_stats/turban.asm" INCLUDE "data/pokemon/base_stats/turban.inc"
INCLUDE "data/pokemon/base_stats/betbaby.asm" INCLUDE "data/pokemon/base_stats/betbaby.inc"
INCLUDE "data/pokemon/base_stats/teppouo.asm" INCLUDE "data/pokemon/base_stats/teppouo.inc"
INCLUDE "data/pokemon/base_stats/okutank.asm" INCLUDE "data/pokemon/base_stats/okutank.inc"
INCLUDE "data/pokemon/base_stats/gongu.asm" INCLUDE "data/pokemon/base_stats/gongu.inc"
INCLUDE "data/pokemon/base_stats/kapoerer.asm" INCLUDE "data/pokemon/base_stats/kapoerer.inc"
INCLUDE "data/pokemon/base_stats/pudie.asm" INCLUDE "data/pokemon/base_stats/pudie.inc"
INCLUDE "data/pokemon/base_stats/haneko.asm" INCLUDE "data/pokemon/base_stats/haneko.inc"
INCLUDE "data/pokemon/base_stats/poponeko.asm" INCLUDE "data/pokemon/base_stats/poponeko.inc"
INCLUDE "data/pokemon/base_stats/wataneko.asm" INCLUDE "data/pokemon/base_stats/wataneko.inc"
INCLUDE "data/pokemon/base_stats/baririna.asm" INCLUDE "data/pokemon/base_stats/baririna.inc"
INCLUDE "data/pokemon/base_stats/lip.asm" INCLUDE "data/pokemon/base_stats/lip.inc"
INCLUDE "data/pokemon/base_stats/elebaby.asm" INCLUDE "data/pokemon/base_stats/elebaby.inc"
INCLUDE "data/pokemon/base_stats/booby.asm" INCLUDE "data/pokemon/base_stats/booby.inc"
INCLUDE "data/pokemon/base_stats/kireihana.asm" INCLUDE "data/pokemon/base_stats/kireihana.inc"
INCLUDE "data/pokemon/base_stats/tsubomitto.asm" INCLUDE "data/pokemon/base_stats/tsubomitto.inc"
INCLUDE "data/pokemon/base_stats/miltank.asm" INCLUDE "data/pokemon/base_stats/miltank.inc"
INCLUDE "data/pokemon/base_stats/bombseeker.asm" INCLUDE "data/pokemon/base_stats/bombseeker.inc"
INCLUDE "data/pokemon/base_stats/gift.asm" INCLUDE "data/pokemon/base_stats/gift.inc"
INCLUDE "data/pokemon/base_stats/kotora.asm" INCLUDE "data/pokemon/base_stats/kotora.inc"
INCLUDE "data/pokemon/base_stats/raitora.asm" INCLUDE "data/pokemon/base_stats/raitora.inc"
INCLUDE "data/pokemon/base_stats/madame.asm" INCLUDE "data/pokemon/base_stats/madame.inc"
INCLUDE "data/pokemon/base_stats/norowara.asm" INCLUDE "data/pokemon/base_stats/norowara.inc"
INCLUDE "data/pokemon/base_stats/kyonpan.asm" INCLUDE "data/pokemon/base_stats/kyonpan.inc"
INCLUDE "data/pokemon/base_stats/yamikarasu.asm" INCLUDE "data/pokemon/base_stats/yamikarasu.inc"
INCLUDE "data/pokemon/base_stats/happi.asm" INCLUDE "data/pokemon/base_stats/happi.inc"
INCLUDE "data/pokemon/base_stats/scissors.asm" INCLUDE "data/pokemon/base_stats/scissors.inc"
INCLUDE "data/pokemon/base_stats/purakkusu.asm" INCLUDE "data/pokemon/base_stats/purakkusu.inc"
INCLUDE "data/pokemon/base_stats/devil.asm" INCLUDE "data/pokemon/base_stats/devil.inc"
INCLUDE "data/pokemon/base_stats/helgaa.asm" INCLUDE "data/pokemon/base_stats/helgaa.inc"
INCLUDE "data/pokemon/base_stats/wolfman.asm" INCLUDE "data/pokemon/base_stats/wolfman.inc"
INCLUDE "data/pokemon/base_stats/warwolf.asm" INCLUDE "data/pokemon/base_stats/warwolf.inc"
INCLUDE "data/pokemon/base_stats/porygon2.asm" INCLUDE "data/pokemon/base_stats/porygon2.inc"
INCLUDE "data/pokemon/base_stats/nameil.asm" INCLUDE "data/pokemon/base_stats/nameil.inc"
INCLUDE "data/pokemon/base_stats/haganeil.asm" INCLUDE "data/pokemon/base_stats/haganeil.inc"
INCLUDE "data/pokemon/base_stats/kingdra.asm" INCLUDE "data/pokemon/base_stats/kingdra.inc"
INCLUDE "data/pokemon/base_stats/rai.asm" INCLUDE "data/pokemon/base_stats/rai.inc"
INCLUDE "data/pokemon/base_stats/en.asm" INCLUDE "data/pokemon/base_stats/en.inc"
INCLUDE "data/pokemon/base_stats/sui.asm" INCLUDE "data/pokemon/base_stats/sui.inc"
INCLUDE "data/pokemon/base_stats/nyula.asm" INCLUDE "data/pokemon/base_stats/nyula.inc"
INCLUDE "data/pokemon/base_stats/houou.asm" INCLUDE "data/pokemon/base_stats/houou.inc"
INCLUDE "data/pokemon/base_stats/togepy.asm" INCLUDE "data/pokemon/base_stats/togepy.inc"
INCLUDE "data/pokemon/base_stats/bulu.asm" INCLUDE "data/pokemon/base_stats/bulu.inc"
INCLUDE "data/pokemon/base_stats/tail.asm" INCLUDE "data/pokemon/base_stats/tail.inc"
INCLUDE "data/pokemon/base_stats/leafy.asm" INCLUDE "data/pokemon/base_stats/leafy.inc"

Some files were not shown because too many files have changed in this diff Show More