Обновлено:

На этой странице

Проверочный набор оригинальных ресурсов

Открыть просмотр образцов. Источники находятся в предоставленной Windows-поставке, исходные файлы не изменяются. Для текущего сайта PNG готовятся заранее, WAV копируются побайтово, AMB переводятся в расписания событий. Полная визуальная и звуковая сверка с работающим Windows-оригиналом ещё не выполнена.

Состав набора

СлучайИсточникЧто проверяем
Наземный юнитВоин, PRTO 20Восемь направлений, покой, атака, гибель, движение, укрепление и победа
ВсадникКитайский рыцарь, PRTO 159Анимации конного юнита; специальное пустое значение DEAD = .
Смещённый холстБоевой верблюд, PRTO 172Кадр 104×120 внутри исходного холста 240×240; смещение и общий прозрачный обрез
КорабльГалера, PRTO 239Направления и действия; AMB с неверными длинами и различающимися именами привязок
АвиацияSpitfire, PRTO 297Направления, исходная привязка, действия и звуки самолёта
Вариант по эпохеАрмия, PRTO 319Четыре отдельных INI и набора кадров для эпох
Псевдоним каталогаТяжёлый фрегат, PRTO 270Явное разрешение Ship_of_the_Line в Ship of the Line
Проблемные контейнерыTactical Nuke, Modern Infantry, Hussar WAVДиагностируемый отказ, отсутствие скрытой подмены и сохранение исходного хеша

Само присутствие корабля, самолёта или армии в просмотре ресурсов не означает выполнения их игровых правил. Морская и воздушная логика остаётся отдельной задачей плана.

Палитры и прозрачность

Модель преобразования — indexed-ntp-v2. Для обычных кадров юнитов индексы 0–63 получают значения соответствующей оригинальной палитры NTP; 64–223 сохраняют RGB кадра FLC. Для текущей партии используются NTP09 России и NTP01 Рима, определённые полем RACE.default_color. Палитры по эпохам, назначение запасного цвета и остальные цивилизации ещё не охвачены полностью.

Дым 224–239 отображается белым с альфой (index − 224) × 16; тени 240–255 — чёрным с альфой (255 − index) × 16. Полностью прозрачные пиксели приводятся к нулевому RGBA. Это явная интерпретация служебных индексов, требующая визуальной сверки оригинала. Предыдущий декодер ошибочно скрывал весь диапазон 240–255 и рисовал дым чёрным.

Сопоставление выполняется по индексу, без замены «похожих синих» пикселей и без фильтра оттенка. Обычные пиксели тела не меняются при переключении цивилизации. Проверки сравнивают выходные варианты с прямым чтением индексов FLC и NTP, включая все направления воина. Прозрачный обрез одинаков для двух цветов; исходный холст и смещения остаются в манифесте.

Оригинальные изображения, длительности кадров и источник каждого атласа: манифест. Исходные размеры не заменяются общим размером спрайта. Значения INI [Speed] и [Timing] сохраняются как данные; непроверенное значение 0,5 не объявляется длительностью каждой анимации.

Звуки AMB и WAV

Разборщик читает ограниченные блоки PRGM/KMAP/GLBL, встроенный MIDI, абсолютные накопленные тики, темпы и события нот. Получаются смещения WAV, исходные параметры случайной скорости/громкости и длительность ноты. WAV сохраняются без изменения PCM и заголовков; совпадение проверяется хешами и полным сравнением байтов.

У атаки воина пять событий: 0, 200, 441,666667, 441,666667 и 958,333333 мс. В одном PRGM оригинального файла максимальная громкость равна 1237 при обычном диапазоне до 127. Значение сохраняется, а браузерная громкость ограничивается единицей; это известная политика совместимости, а не доказанное поведение оригинала. Общая громкость проигрывателя по умолчанию — 35%.

Длины KMAP проверяются по структуре полей и завершающему значению FA. Несовпадение объявленной длины получает предупреждение. Если названия программ и карт не совпали, при равном числе блоков используется порядок блоков с отдельным предупреждением; это совместимая интерпретация по исследованному читателю OpenCiv3. Неоднозначные/пустые ссылки не заменяются произвольным WAV. Неполное расписание отмечается partial, неподдержанное — unsupported.

Случайность звуков отделена от PRNG партии. Скорость использует исследованную оценку около 6% на 100 исходных единиц; точная формула ещё не подтверждена. Длительность MIDI-ноты и velocity сохраняются, но пока не обрезают WAV и не изменяют громкость. Звук воспроизводится с естественным окончанием записи. Это ограничение явно отделяется от восстановления структуры расписания.

В игре звук включается кнопкой пользователя; автоматического запуска аудио при открытии страницы нет. Для боя сначала рассчитывается и сохраняется состояние игры, затем готовятся кадры/записи и запускаются графические и звуковые фазы. Отсутствующий звук не меняет исход боя. Текущая последовательность боя сокращена до одного цикла атаки и гибели; оригинальное чередование каждого раунда ещё не воспроизведено полностью.

Политика исключений

  • DEAD = . классифицируется как sentinel-empty. Файл с именем «точка» не ищется; исходное значение сохраняется.
  • Ship_of_the_Line разрешается только объявленным псевдонимом в данном наборе. Универсального угадывания имён по подчёркиваниям нет.
  • Известный блок палитры с размером 0xCDCDCDCD принимается только при совпадении ограниченной формы; предупреждение остаётся в манифесте.
  • Tactical Nuke с выходящим за границы подблоком отклоняется. Повреждённая сигнатура Modern Infantry из Conquests/Conquests/New rules также отклоняется; одноимённый файл основного каталога проверяется отдельно и декодируется.
  • Hussar WAV с нулевым размером fmt не исправляется молча и не публикуется как рабочая запись.
  • У ArmyModernRun.amb остаётся неразрешённая ссылка на ArmyMiddleRunMove.wav. Звук этой последовательности не объявляется воспроизведённым.

Статусы, исходные пути, хеши, предупреждения и ошибки находятся в полях validationDiagnostics, unitDefinitions, sounds и aliases манифеста.

Память и проверка

Основной экран загружает видимые исходные спрайты по необходимости. Логический бюджет кеша кадров юнитов — 64 МиБ RGBA, звуковых буферов — 16 МиБ float PCM после декодирования браузером. Неиспользуемые записи освобождаются по давности использования. Активные кадры боя и воспроизводимые записи защищены; временное превышение из-за защищённых записей отражается в статистике.

Это бюджеты логических кешей, а не предел полной памяти браузера. Атласы карты, DOM, Canvas, графический драйвер и внутренние копии браузера учитываются отдельно фактическим RSS/heap. Web Audio может изменить частоту дискретизации при декодировании; его фактические length × channels × 4 учитываются после декодирования.

На опубликованной версии пройдены десять образцов во всех восьми направлениях и двух палитрах, воспроизведение AMB и бой со звуком через кнопки игры. Состояние партии совпало с расчётом ядра; выключение звука останавливает источники, загрузка не повторяет бой или аудио. Проверены сохранность 32 прежних адресов юнитов и хеши всех 443 файлов нового набора.

Проверки: tests/test_media.py, tests/test_audio.py, tests/image-store.test.mjs, tests/audio-player.test.mjs, tests/game-screen.test.mjs. Браузерная проверка образцов и настоящего боя со звуком выполняется tests/browser-media.cjs; результат публикуется в машинном отчёте.

Первичные источники интерпретации

Фактический прогресс · Контрольные случаи оригинала

27 октября для окна города добавлены семь исходных иконок зданий PCX → PNG. Текущий манифест содержит 135 базовых графических ресурсов; набор анимаций, 162 варианта NTP и 153 WAV не изменились. Подробности и границы новой экономики — в модели зданий.

В схеме 8 набор расширен до 416 базовых изображений: 235 разрешённых иконок технологий и 56 кадров специалистов. Они сверены с исходными RGBA; один отсутствующий элемент (TECH 197) явно отмечен. Модель и проверка новых ресурсов.