# w3probe — проверка --w3 (резидентный код окна W3, прямой вызов без
# трамплинов) во ВСЕХ режимах памяти.  Все пробы переиспользуют w3res.c
# (резидентный W3-модуль: w3_show/w3_probe/w3_sig).
#
#   small : код 0x4100 (W1/W2), W3 резидент.                w3probe.exe
#   tiny  : код 0x8100 (W2), W1 не исп., W3 резидент.        w3tiny.exe
#   big   : код 0x8100 (W2), банки в W1, W3 резидент.        w3big.exe
#   huge  : код 0x4100, W3 ДЕЛЯТ резидент + трамплин-банки.  w3huge.exe
#
# Проверено в MAME (2026-07-21): все режимы работают, включая huge —
# резидент↔W3-банк через трамплин в W1, crt0_banked возвращает резидентную
# страницу дефолтом.  Раскладка страниц: tiny W1=FF (не исп.), big/huge W1=F1.

PROJ_ROOT := $(abspath $(CURDIR)/../..)
CC        := $(PROJ_ROOT)/bin/sprinter-cc
MAKE_HDD  := $(PROJ_ROOT)/toolchain/make_hdd.sh
HDD_IMG   := $(PROJ_ROOT)/mame/v306/IMG/test_hdd.chd

EXES := w3probe.exe w3tiny.exe w3big.exe w3huge.exe

all: $(EXES)

w3probe.exe: w3probe.c w3res.c
	$(CC) --memory small --w3 w3res.c -o $@ w3probe.c

w3tiny.exe: w3tiny.c w3res.c
	$(CC) --memory tiny --w3 w3res.c -o $@ w3tiny.c

w3big.exe: w3big.c w3res.c bigbank.c
	$(CC) --memory big --w3 w3res.c --bank 1=bigbank.c -o $@ w3big.c

w3huge.exe: w3huge.c w3res.c w3huge_res.c hugebank.c
	$(CC) --memory huge --w3 w3res.c --w3 w3huge_res.c --bank 1=hugebank.c -o $@ w3huge.c

# Упаковать все четыре на HDD (D:) для прогона в MAME.  После — рестарт MAME.
hdd: $(EXES)
	$(MAKE_HDD) $(HDD_IMG) $(EXES)

clean:
	rm -rf .sprinter-cc-* $(EXES)

.PHONY: all hdd clean
