/** * @file variant_cfg.h * @brief Единственный файл конфигурации варианта сборки. * * build_variants.ps1 перегенерирует этот файл целиком для каждого * варианта. Никакие другие исходники НЕ патчатся. * * build.bat читает VARIANT_POS_ENTRIES / VARIANT_POS_STEP / * VARIANT_DATA_LOC из этого файла (парсинг через for /f). */ #ifndef VARIANT_CFG_H #define VARIANT_CFG_H /* ── Частота ISR (тиков/сек) ─────────────────────────────────────── */ /* ISR_FREQ = 3 500 000 / VARIANT_POS_STEP */ #define ISR_FREQ 683 /* Тиков ISR на TV-кадр (= 71680 / STEP) */ /* 14@683, 28@1367, 56@2734 */ #define ISR_TICKS_PER_FRAME 14 /* ── Маппинг VGM 44100→ISR тиков ─────────────────────────────────── */ /* SHIFT = log2(44100/ISR_FREQ): 6@683, 5@1367, 4@2734 */ #define VGM_SAMPLE_SHIFT 6 #define VGM_SAMPLE_MASK 0x3F /* ── Лимит команд между принудительными yield ──────────────────────── */ #define VGM_FILL_CMD_BUDGET 16 /* ── Параметры pos_table (для build.bat → gen_pos_table.js) ──────── */ #define VARIANT_POS_ENTRIES 14 #define VARIANT_POS_STEP 5120 /* ── Адрес начала сегмента данных (для линковщика) ────────────────── */ /* Плотная раскладка: полная версия spectrum.s + загрузчик OPL4. * Проверяется build.bat: _CODE должен закончиться раньше _DATA, * а последняя секция — раньше 0xC000. */ #define VARIANT_DATA_LOC 0xB8DF /* ── Спектроанализатор: скорости затухания (в TV-кадрах) ────────── */ /* Меньше = быстрее затухание. 1 = каждый кадр (~20 мс). */ /* Синхронизировать с EQU в spectrum.s! */ #define DECAY_FRAMES_FAST 1 /* уровни >= 6 */ #define DECAY_FRAMES_MED 2 /* уровни 3-5 */ #define DECAY_FRAMES_SLOW 4 /* уровни 1-2 */ /* ── Отключение обработки коротких пауз 0x70-0x7F ────────────────── */ /* Раскомментировать для «no short waits» варианта: */ /* #define VGM_NO_SHORT_WAITS */ #endif /* VARIANT_CFG_H */