Точные значки воздушных приказов — v0.17.1
Исправлены две кнопки выпуска 0.17.0: воздушная разведка и перебазирование использовали неверные ячейки общего PTW-атласа. Теперь они используют оригинальный Conquests-атлас, соответствующий исследованному исполняемому файлу. Изображения не перерисованы; сохранены исходные пиксели, палитра и маска прозрачности.
Откуда взята привязка
Исходный Civ3Conquests.exe, SHA-256 c40583d707af7abd9b8568e2ed5a4f117f27a775dca617c8d7b873d76772dd6d, строит воздушные кнопки в цикле 0x551394–0x551487. Для каждой вызывает функцию перечисления команд 0x5508e0, передавая категорию 3 и индекс 0–4.
Функция целиком исполняется в проверочном стенде Unicorn без замены инструкций. Отдельно исполняется исходный расчёт координат вырезки 0x556bd8–0x556c09 для всех 59 используемых ячеек. Сигнатуры загрузки Art\interface\NormButtons.pcx, адресов массивов, шага структуры 44 байта и смещений трёх состояний проверены в исходном EXE.
| Приказ | Исходная команда | Ячейка | Вырезка x, y, ширина, высота |
|---|---|---|---|
| Бомбардировка | 0x30000001 | 37 | 160, 128, 32, 32 |
| Воздушная разведка | 0x30000002 | 38 | 192, 128, 32, 32 |
| Воздушное превосходство | 0x30000004 | 39 | 224, 128, 32, 32 |
| Перебазирование | 0x30000008 | 40 | 0, 160, 32, 32 |
| Точечный удар | 0x30000010 | 41 | 32, 160, 32, 32 |
В игре пока доступны только разведка и перебазирование. Наличие подтверждённой картинки для остальных команд не означает готовности боевой механики.
Подготовка и проверки
scripts/prepare-native-orders.py --air экспортирует три отдельных PNG из Conquests/Art/interface: обычное состояние, наведение и нажатие. Их собственные имена сохраняют существующий PTW-набор обычных приказов. Проверка сравнивает все RGBA-пиксели с исходными PCX, контролирует маску, хеши, повторяемость экспорта и сохранность других записей манифеста.
Браузерный сценарий сверяет обе вырезки с полученным машинным эталоном, проверяет все три состояния и декодирование изображений. Затем выполняет обычную разведку неизвестной цели, сохранение/перезагрузку, переговорное прерывание, настоящий следующий ход, посадку на авианосец и разведку с палубы. Обычные приказы и полная небольшая партия проверяются отдельно.
Воспроизведение машинного стенда:
PYTHONPATH=/tmp/civ3-native-math-python python3 scripts/run-limited.py -- python3 scripts/verify-air-command-icons.py
Исходные блоки, 67 машинных случаев, 11 сигнатур и привязки. Происхождение и хеши трёх PNG.
Полный Windows-интерфейс и его поиск файлов при наложении сценариев здесь не исполнялись. Эти проверки подтверждают привязки исследованного EXE и точность перенесённых изображений, а не полное совпадение поведения Windows-игры.