ys2-intro/loader/samples/benchmark/Makefile
2025-11-13 19:07:39 +03:00

320 lines
8.3 KiB
Makefile

NAME = benchmark
BENCH ?= BITFIRE
LOADERCPU ?= 100
ALIGNED ?= 0
_PLATFORM_ = c64
export LOG
BUILDDIR = ../../build
DISKIMAGE = $(BUILDDIR)/$(NAME)-$(LOADERCPU)-$(_PLATFORM_).d64
default: $(DISKIMAGE)
run_bitfire:
make run BENCH=BITFIRE
run_spindle_code:
make run BENCH=SPINDLE_CODE
run_spindle_graphics:
make run BENCH=SPINDLE_GRAPHICS
perfbench_bitfire:
make perfbench BENCH=BITFIRE
perfbench_spindle_code:
make perfbench BENCH=SPINDLE_CODE
perfbench_spindle_graphics:
make perfbench BENCH=SPINDLE_GRAPHICS
perfbench: LOG=1
perfbench:
rm -f benchmark.log
make clean
make run LOADERCPU=100
make run LOADERCPU=90
make run LOADERCPU=80
make run LOADERCPU=70
make run LOADERCPU=60
make run LOADERCPU=50
make run LOADERCPU=40
make run LOADERCPU=30
make run LOADERCPU=20
make run LOADERCPU=10
$(MAKE_TEX) < benchmark.log
perftest: LOG=1
perftest:
rm -f benchmark.log
make clean
make run LOADERCPU=100
$(MAKE_TEX) < benchmark.log
ifeq "$(BENCH)" "BITFIRE"
MONCOMMANDS := benchmark-bitfire.mon
MAKE_TEX := ./make-tex-graph-bitfire.lua
else
MONCOMMANDS := benchmark-spindle.mon
ifeq "$(BENCH)" "SPINDLE_CODE"
MAKE_TEX := ./make-tex-graph-spindle-code.lua
else
MAKE_TEX := ./make-tex-graph-spindle-graphics.lua
endif
endif
ifeq "$(LOG)" "1"
VICE = x64sc +saveres -warp -minimized -autostartprgmode 1 +cart -debugcart -monlogname benchmark.log -moncommands $(MONCOMMANDS)
else
VICE = x64sc
endif
EMU = $(VICE) -drive8type 1541 -drive9type 0 -8
EMU71 = $(VICE) -drive8type 1571 -drive9type 0 -8
EMU81 = $(VICE) -drive8type 1581 -drive9type 0 -8
AS = cl65
AS_FLAGS = -Wa -I../../build -u __EXEHDR__
CC1541 = ../../tools/cc1541/cc1541 -v
#CC1541 = ../../tools/cc1541/repo4/cc1541/cc1541 -v
CC1541_SOURCE = ../../tools/cc1541
B2 = ../../tools/b2/b2.exe
B2_SOURCE = ../../tools/b2
BITNAX = ../../tools/bitnax-07a8c67/lz
DOYNAX_LZ = ../../tools/doynamite1.1/lz
EXO = ../../tools/exomizer-3.1/src/exomizer
EXO_SOURCE = ../../tools/exomizer-3.1/src
LC = ../../tools/wcrush/wcrush/wcrush
LCSPEED = 6
LC_SOURCE = ../../tools/wcrush
LZSA2 = ../../tools/lzsa/lzsa
LZSA2_SOURCE = ../../tools/lzsa
NC = ../../tools/nucrunch-1.0.1/target/release/nucrunch
NC_SOURCE = ../../tools/nucrunch-1.0.1
PU = ../../tools/pucrunch/pucrunch
PU_SOURCE = ../../tools/pucrunch
SUBSIZER = ../../tools/subsizer-0.7pre1/subsizer
SUBSIZER_SRC = ../../tools/subsizer-0.7pre1/src
TC = python ../../tools/tinycrunch_v1.2/tc_encode.py
TS_ENCODER = ../../tools/tscrunch/tscrunch.py
TS = python3 $(TS_ENCODER)
ZX0 = ../../tools/dali/dali
ZX0_SRC = ../../tools/dali
CONV = ../../tools/compressedfileconverter.pl
RM = rm -f
CP = cp
MV = mv
INTERMDIR = ../../build/intermediate
LOADER_SRC = ../../src
LOADER = $(BUILDDIR)/loader-$(_PLATFORM_).prg
RESOURCESDIR = ../resources
TEST = $(RESOURCESDIR)/test.prg
SOURCE = $(NAME).s
LOADERCFG = loaderconfig.inc
ASSEMBLE = $(INTERMDIR)/$(NAME)-$(LOADERCPU)-uncompressed-$(_PLATFORM_).prg
DISKIMAGE81 = $(BUILDDIR)/$(NAME)-$(_PLATFORM_).d81
EXTENSION_NONE := prg
EXTENSION_BITNAX := bnx
EXTENSION_BYTEBOOZER2 := b2
EXTENSION_DOYNAX_LZ := dnx
EXTENSION_EXOMIZER := exo
EXTENSION_LEVELCRUSH := lc
EXTENSION_LZSA2 := lzsa2
EXTENSION_NUCRUNCH := nc
EXTENSION_PUCRUNCH := pu
EXTENSION_SUBSIZER := ssz
EXTENSION_TINYCRUNCH := tc
EXTENSION_TSCRUNCH := ts
EXTENSION_ZX0 := zx0
COMPRESSOR := $(shell grep -m 1 'DECOMPRESSORS::' $(LOADERCFG) | sed 's/.*DECOMPRESSORS::\([^; ]*\).*/\1/')
COMPEXT := $(EXTENSION_$(COMPRESSOR))
BENCH_IDX_BITFIRE = 0
FILENAMES_BITFIRE = test a b c d e f g h i j k l m n o p q r
MINTRACKS_BITFIRE = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
INTERLEAVES_BITFIRE = 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
#INTERLEAVES_BITFIRE = -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4
#INTERLEAVES_BITFIRE = -4 -4 -4 -4 -4 -4 -4 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3
BENCH_IDX_SPINDLE_CODE = 1
FILENAMES_SPINDLE_CODE = test x0 x1 x2 x3 x4 x5 x6 x7
MINTRACKS_SPINDLE_CODE = 1 1 1 1 1 1 1 1 1
INTERLEAVES_SPINDLE_CODE = 4 4 4 4 4 4 4 4 4
BENCH_IDX_SPINDLE_GRAPHICS = 2
FILENAMES_SPINDLE_GRAPHICS = test y0 y1 y2 y3 y4 y5 y6 y7
MINTRACKS_SPINDLE_GRAPHICS = 1 1 1 1 1 1 1 1 1
INTERLEAVES_SPINDLE_GRAPHICS = 4 4 4 4 4 4 4 4 4
FILES = $(patsubst %, $(INTERMDIR)/%.$(COMPEXT), $(FILENAMES_$(BENCH)))
IMAGEFILES__ = $(foreach filename, $(FILENAMES_$(BENCH)),$(patsubst %,^-f^"%",$(filename).$(COMPEXT))$(patsubst %,^-w^$(INTERMDIR)/%.$(COMPEXT),$(filename)))
IMAGEFILES_ = $(subst "test.$(COMPEXT)","test", $(IMAGEFILES__))
IMAGEFILES = $(subst ^, ,$(join $(addprefix -r^,$(MINTRACKS_$(BENCH))),$(join $(addprefix ^-S^,$(INTERLEAVES_$(BENCH))),$(patsubst %,^%,$(IMAGEFILES_)))))
IMAGEFILES81 = $(subst ^, ,$(join $(addprefix -r^,$(MINTRACKS_$(BENCH))),$(patsubst %,^%,$(IMAGEFILES_))))
ifeq "$(COMPRESSOR)" "NONE"
$(DISKIMAGE): $(ASSEMBLE) $(FILES) $(CC1541)
$(RM) $@
$(CC1541) -n "normal is boring" -i plush -4 \
$(IMAGEFILES) \
-f test-loopfile -l test \
-f test-loopfile2 -l test \
$@
else
$(DISKIMAGE): $(ASSEMBLE) $(FILES) $(CC1541)
$(RM) $@
$(CC1541) -n "normal is boring" -i plush \
$(IMAGEFILES) \
-f test-loopfile -l test \
-S 4 -r 29 -e -f $(NAME) -w $< \
-g $(basename $@).g64 \
$@
endif
# -w $(RESOURCESDIR)/room_0031.prg \
# -w $(RESOURCESDIR)/0031.zx0.prg \
# -w $(RESOURCESDIR)/zb \
$(DISKIMAGE81): $(ASSEMBLE) $(FILES) $(CC1541)
$(RM) $@
$(CC1541) -n "normal is boring" -i plush \
-r 39 -f $(NAME) -w $< \
$(IMAGEFILES81) \
$@
$(ASSEMBLE): $(SOURCE) $(LOADER)
$(AS) $(AS_FLAGS) -C c64-asm.cfg -Wa -DPLATFORM=64 -Wa -DBENCHMARK=$(BENCH_IDX_$(BENCH)) -Wa -DLOADERCPU=$(LOADERCPU) -o $@ $<
$(LOADER): $(LOADERCFG)
make -C $(LOADER_SRC) EXTCONFIGPATH=../samples/$(NAME) PLATFORM=$(_PLATFORM_) PROJECT=$(NAME) INSTALL=0f00 RESIDENT=0a00 ZP=02 prg
run: $(DISKIMAGE)
ifeq "$(ALIGNED)" "0"
$(EMU) $(realpath $^) $(ASSEMBLE)
else
$(EMU) $(basename $(realpath $^)).g64 $(ASSEMBLE)
endif
run71 run70: $(DISKIMAGE)
$(EMU71) $(realpath $^) $(ASSEMBLE)
run81: $(DISKIMAGE81)
$(EMU81) $(realpath $^) $(ASSEMBLE)
clean:
-$(RM) *.o $(ASSEMBLE) $(DISKIMAGE) $(BUILDDIR)/loadersymbols-c64.prg $(BUILDDIR)/install-c64.prg $(BUILDDIR)/loader-c64.prg \
$(INTERMDIR)/test.prg \
$(INTERMDIR)/*.b2 $(INTERMDIR)/*.bnx $(INTERMDIR)/*.dnx $(INTERMDIR)/*.exo $(INTERMDIR)/*.lc $(INTERMDIR)/*.lzsa2 $(INTERMDIR)/*.nc $(INTERMDIR)/*.pu $(INTERMDIR)/*.ssz $(INTERMDIR)/*.tc $(INTERMDIR)/*.ts $(INTERMDIR)/*.zx0
$(CC1541): $(CC1541_SOURCE)/cc1541.c
$(MAKE) -C $(CC1541_SOURCE) cc1541
$(INTERMDIR)/%.prg: $(RESOURCESDIR)/%
$(CP) $^ $@
EXTENSIONS := prg bnx b2 dnx exo lc lzsa2 nc pu ssz tc ts zx0
define COPY
$(INTERMDIR)/x%.$(1): $(INTERMDIR)/x.$(1)
$(CP) $$^ $$@
$(INTERMDIR)/y%.$(1): $(INTERMDIR)/y.$(1)
$(CP) $$^ $$@
endef
$(foreach extension,$(EXTENSIONS),$(eval $(call COPY,$(extension))))
$(INTERMDIR)/%.b2: $(INTERMDIR)/%.prg $(B2)
$(B2) $<
$(MV) $<.b2 $@
$(INTERMDIR)/%.bnx: $(INTERMDIR)/%.prg $(BITNAX)
$(BITNAX) --bitfire -o $@ $<
$(INTERMDIR)/%.dnx: $(INTERMDIR)/%.prg $(DOYNAX_LZ)
$(DOYNAX_LZ) -o $@ $<
$(CONV) dnx $< $@ $@
$(INTERMDIR)/%.exo: $(INTERMDIR)/%.prg $(EXO)
$(EXO) mem -f $< -o $@
$(INTERMDIR)/%.lc: $(INTERMDIR)/%.prg $(LC)
$(LC) $(LCSPEED) $< $@
$(CONV) lc $< $@ $@
$(INTERMDIR)/%.lzsa2: $(INTERMDIR)/%.prg $(LZSA2)
$(LZSA2) -f 2 $< $@
$(INTERMDIR)/%.nc: $(INTERMDIR)/%.prg $(NC)
$(NC) $< --auto -o $@
$(INTERMDIR)/%.pu: $(INTERMDIR)/%.prg $(PU)
$(PU) -c0 -x 0 $< $@
$(INTERMDIR)/%.ssz: $(INTERMDIR)/%.prg $(SUBSIZER)
$(SUBSIZER) -m -f -o $@ $<
$(INTERMDIR)/%.tc: $(INTERMDIR)/%.prg
$(TC) --inPlace $< $@
$(INTERMDIR)/%.ts: $(INTERMDIR)/%.prg $(TS_ENCODER)
$(TS) -i $< $@
$(INTERMDIR)/%.zx0: $(INTERMDIR)/%.prg $(ZX0)
$(ZX0) -o $@ $<
$(BITNAX):
$(CC) $@.c -o $@
$(B2):
$(MAKE) -C $(B2_SOURCE)
$(DOYNAX_LZ):
$(CC) $@.c -o $@
$(EXO):
$(MAKE) -C $(EXO_SOURCE)
$(LC):
$(MAKE) -C $(LC_SOURCE)
$(LZSA2):
$(MAKE) -C $(LZSA2_SOURCE)
$(NC):
$(MAKE) -C $(NC_SOURCE)
$(PU):
$(MAKE) -C $(PU_SOURCE)
$(SUBSIZER):
$(MAKE) -C $(SUBSIZER_SRC)
$(TS):
$(BUILD_TS)
$(ZX0):
$(MAKE) -C $(ZX0_SRC)