# Модульные тесты движка roomtest под ucsim_z80. Обвязка общая (testkit/), # здесь — только сами наборы и список модулей, которые в них линкуются. TESTKIT := $(abspath $(CURDIR)/../../../../testkit) ENGINE_DIR := $(abspath $(CURDIR)/..) # t_phys гоняет НАСТОЯЩУЮ физику, а она ходит по таблицам анимации # абсолютными адресами от KD_DATA_OFF (0x100) — там, куда на устройстве # мапится страница W0. Значит блоб kid_data.bin лежит по 0x100, и код # набора обязан начинаться выше его конца (0x100 + 3720 = 0x0F88). CODE_LOC := 0x1000 # Заголовки libc/libbgi нужны потому, что pop_kid.c включает gfx/sprite/ # sprinter: под тестом эти функции заглушены (stubs.c), но объявления # берутся настоящие — иначе разъедутся сигнатуры. PROJ_ROOT := $(abspath $(TESTKIT)/..) EXTRA_INC := -I$(PROJ_ROOT)/libc/include -I$(PROJ_ROOT)/libbgi/include -I$(CURDIR) OBJS_geom := build/eng_pop_geom.rel OBJS_phys := build/eng_pop_geom.rel build/eng_pop_kid.rel \ build/eng_pop_map.rel build/eng_pop_ctrl.rel \ build/eng_pop_state.rel \ build/stubs.rel build/scene.rel build/kid_blob.rel \ build/bank_stub.rel # Пробный набор (разведка, без эталонов) линкуется тем же составом. OBJS_grab := $(OBJS_phys) # t_wall — удар о стену в воздухе (BUG-JUMPWALL-1), состав тот же. OBJS_wall := $(OBJS_phys) include $(TESTKIT)/host-tests.mk # --- t_phys: блоб таблиц анимации ------------------------------------ KID_BIN := $(abspath $(CURDIR)/../../poc/res/kid/kid_data.bin) build/kid_blob.c: gen_kid_blob.py $(KID_BIN) | $(BUILD) @python3 gen_kid_blob.py $(KID_BIN) $@ build/kid_blob.rel: build/kid_blob.c kidblob.h | $(BUILD) @$(SDCC) $(CFLAGS) -c -o $@ $< build/stubs.rel: stubs.c stubs.h kidblob.h | $(BUILD) @$(SDCC) $(CFLAGS) -c -o $@ $< build/scene.rel: scene.c scene.h stubs.h kidblob.h | $(BUILD) @$(SDCC) $(CFLAGS) -c -o $@ $< build/bank_stub.rel: bank_stub.s | $(BUILD) @$(SDASZ80) -plosgff $@ $< # Эталоны трасс: пересобрать набор, если их правили (см. шапку t_phys.c). build/phys.rel: $(wildcard golden/*.h)