~~ ~~
~~ ____________ ~~
~~ / ______ \ ~~
/ / __ \ \
~~~~~~~ | | |__| | | ~~~~~~~
\ \______/ /
~~ \____________/ ~~
~~ / \ ~~
~~ / ILLUMINATI \ ~~
/ II: THE \
/ DAVOS DEADLOCK \
/==================\
/ A tale of Future- \
/ Alternative History \
/ in the form of a \
/ Libertarian puzzle game \
/ for the 48K ZX Spectrum \
/==============================\
/ by Jim Waterman for WOOT! 2022 \
/==================================\
/ Written 24 August - 5 October 2022 \
#======================================#
«К 2030 году у вас ничего не будет — и вы будете счастливы».
— Klaus Schwab
«Готовы поставить на это свою жизнь?»
— все здравомыслящие люди, везде и всегда
Дисклеймер
У этой игры есть обширная предыстория, и вам стоит уделить время её прочтению. Мало того, что на её написание ушла куча сил, так она ещё и поможет лучше понять подоплёку игры, а кого-то, возможно, заставит осознать всю серьёзность ситуации, в которой оказался западный мир. Надежда умирает последней. Однако предупреждаю: текст писался в октябре 2022 года, затем дополнялся и правился по мере необходимости, пока не был окончательно завершён 13 декабря 2022 года. Так что вполне возможно, учитывая бурлящий хаос американской политики, что он скиснет так же быстро, как пакет молока, забытый в середине июля посреди пустыни Сонора. Причём этот процесс скисания может начаться ещё до того, как закончится текущий год. Не вините меня, если это произойдёт, я не Нострадамус.
Введение
Всё началось как до нелепости вылизанная игра для ZX81, задуманная в самом нелепом 2020 году, написанная за три дня и отправленная на конкурс CSSCGC — просто чтобы проверить, смогу ли я заставить машинный код работать на ZX81. Затем она превратилась в игру для 16K Spectrum и украсила собой электронные страницы WOOT! в 2021 году; там потребовалось гораздо более активное использование машинного кода и приёмов упихивания данных в духе 1K ZX81, чтобы уместиться в скромный Spectrum, у которого полезной памяти даже меньше, чем у ZX81. После этого в 2022 году она вернулась на CSSCGC в версии для QL, где и графика получше, и проблем с памятью нет. А потом отправилась на каникулы в «страну комми» — в том смысле, что была портирована сразу на три компьютера Commodore: VIC-20, PET 2001-8N и C64.
И вот теперь, в Illuminati II, графика из QL-версии была адаптирована обратно под страдающий от клешинга экран Spectrum'а, благодаря чему игра стала выглядеть именно так, как и должна была с самого начала. Звуки были позаимствованы из разных ранних игр для Spectrum примерно 1983 года, равно как и набор символов (он взят из The Fall Of Rome; некоторые символы были изменены)...
...плюс был добавлен ещё один уровень сложности. В конце концов, это же сиквел.
Подробнее — гораздо подробнее — обо всём рассказывается в сопутствующем PDF-файле с предысторией, картами и флагами. Если вам лень, можете ограничиться этой краткой выжимкой. Если же вы человек мыслящий — сначала прочтите предысторию, и тогда оставшаяся часть этого раздела вам попросту не понадобится. Как бы то ни было...
Оригинальная нелепая предыстория в духе «иллюминаты вот-вот захватят мир, и вы должны их остановить» получила подобающий апгрейд в духе постковидной паники: в этой игре главными антагонистами выступает самая что ни на есть НАСТОЯЩАЯ версия иллюминатов — та самая, чей Зловещий Глаз на вершине пирамиды необходимо разнести ядерным ударом с орбиты.
Действие игры разворачивается в 2042 году, и мир двадцать лет спустя — совсем другое место. Соединённые Штаты распались на пять осколков, и Western Libertarian Federation (WLF) — это государство-преемник, которое меньше всего разделяет идеи «Великой перезагрузки» Всемирного экономического форума, «Нового мирового порядка» и прочих антиутопических предписаний. Их соседи — «старбаксовские сойциалисты», занимающие всё Тихоокеанское побережье, только что скатились до статуса несостоявшегося государства, WEF взял их под прямое управление, и теперь идеологические противники WLF перекрыли им кислород, угрожая их либертарианскому образу жизни под девизом «мир через превосходящую огневую мощь».
WLF должны проникнуть на ежегодное заседание WEF и уничтожить его изнутри. В наши дни оно проходит в декабре, так что полная победа обеспечит всем по-настоящему Счастливое Рождество (в противовес унылым «Политкорректным Неконфессиональным Зимним Праздникам»). Путь им преграждает Davos Deadlock — модернизированная версия Пирамиды Иллюминатов со вторым уровнем защиты.
WLF отправляют единственного человека, способного взломать Davos Deadlock — Ethan Nash, который одинаково виртуозно управляется с AR-15, токарным станком и блокнотом с кодом. Если кто-то и способен расколоть код Davos Deadlock, а затем в одиночку постоять за себя в тайном логове WEF и саботировать всё механическое и электронное, чтобы сокрушить их мёртвую хватку над более податливыми и послушными народами мира, так это он. И он обязан это сделать.
Как играть
Вы играете за Ethan Nash. Представьте своё потрясение.
Те, кто знаком с механикой оригинальной Illuminati, обнаружат, что правила не изменились: введите три шестнадцатеричных байта между «BC» и «AD» у основания пирамиды, и они будут подниматься вверх по пирамиде в соответствии с совершенно секретным кодом иллюминатов. Но на этот раз проверка на совпадение с байтом в Зловещем Глазе сразу не запустится. В этой версии первый проход по пирамиде сгенерирует ключ — одну hex-цифру от 0 до F. Если выпадет ноль, это означает мгновенный проигрыш; если любая другая цифра — она изменит то, как байты поднимаются по пирамиде.
После этого последует второй проход с теми же кодами и новым ключом, и именно на этом втором проходе финальный байт на вершине пирамиды будет сравниваться со Зловещим Глазом. Как и прежде, если байты совпадут, раздастся сокрушительный бадабум. Если совпадения нет, можно попробовать снова — до 40 раз (а не 16, как в оригинальной игре, потому что эта часть гораздо сложнее). Дело не только в том, что восстановить целевую цепочку к исходным трём байтам теперь невозможно (или, как минимум, безумно сложно) из-за смены ключа: ко всему прочему, целью теперь может стать абсолютно любой из 256 байтов диапазона, а не подмножество из 64, как в оригинале. И не все байты здесь равноправны: специфика оригинального кода такова, что чётные числа выпадают реже нечётных, а старший полубайт в диапазоне 0–7 менее вероятен, чем 8–F. Шанс выпадения одного конкретного байта аж в 125 раз выше, чем у любого из 20 наименее вероятных. Вас предупредили!
Параметр SPICE LEVEL на титульном экране влияет на концовку игры. Если вы хоть немного сомневаетесь в своей способности адекватно воспринять происходящее на экране, выбирайте Spice Level по умолчанию. Я не несу никакой ответственности за последствия, если вы выберете один из двух других вариантов и бурно на это отреагируете! Повторяю еще раз: ВАС ПРЕДУПРЕЖДАЛИ!
А если для вас всё это чересчур, игра в самом начале спросит, не хотите ли вы сыграть в оригинальную Illuminati — по старым правилам: 16 попыток, никаких ключей, один проход пирамиды и оригинальные заставки победы и поражения, лишь слегка приукрашенные машинокодным Videprinter.
Technical notes
Блок кода на ленте занимает 21 752 байта. Все они, за исключением пользовательского набора шрифтов, включены в виде исходников .ASM в отдельную папку — так что любители покопаться в чужом коде могут изучить их под микроскопом и оценить мои робкие успехи в освоении ассемблера Z80.
Всего 188 байт требуется для продвижения кодов вверх по пирамиде — они содержатся в машинно-кодовом пакете в виде файла IL2MC2. Еще 34 байта в блоке IL2MC1 передают символы массива A$ по тем адресам, где с ними можно работать; в оригинале это делалось на BASIC, но процедуру требовалось ускорить. Область UDG для символов T-U, недоступная на моделях 128K, была задействована под хранение разнообразных байтов и флагов, необходимых как для этой подпрограммы, так и для остальной игры.
Остаток блока IL2MC1 — это данные позиций на экране внутри пирамиды и звуковые эффекты, перекочевавшие сюда из оригинальной 16K Spectrum-версии Illuminati (а туда позаимствованные из Starfire Мартина К. Льюиса (Martyn C. Lewis), Defender Майкла Дж. Леверса (Michael J. Levers) из листинга Sinclair Programs и ранних игр Кевина Дж. Безанта (Kevin J. Bezant)). Кроме того, здесь предпринята отважная попытка воссоздать встроенный звуковой эффект ZOOM от SAM Coupé.
IL2MC3 — это компрессор ZX0 Эйнара Саукаса (Einar Saukas), его «стандартная» версия, отлично подошедшая под мои задачи. Он здорово помог сжать графику для главного титульного экрана, пирамиды и карты США в инструкции, а также перекрывающие атрибуты, открывающие новые границы и текст (изначально они присутствовали там со значениями PAPER и INK одинакового цвета). Сжимать им можно не только картинки: ZX0 пригоден для любого блока данных. Загрузите его в Fuse, сохраните блок как бинарный файл с нужными адресами начала и конца — и ZX0 его сожмет. «Стандартный» распаковщик перебрасывает данные на экран практически со скоростью команды LDIR, поэтому искать что-то быстрее я просто не видел смысла.
IL2MC4 — это Videprinter. Подпрограмма посимвольно выводит текст, хранящийся в виде байтов, в заданную экранную позицию — в стиле бегущей строки Final Score на BBC 1980–90-х годов, разве что гораздо быстрее. Формат прост: сначала идет байт количества строк для печати; далее для каждой строки указывается: один байт длины строки, два байта координат PRINT AT и сам текст. Если кто-то захочет использовать этот Videprinter в собственных разработках — дерзайте! Только упомяните меня в сопутствующей писанине; она ведь у вас обязательно будет, правда?
IL2MC5 — это блок кода Tritone из Beepola, использованный как есть, с фанфарами из Gargoyle's Quest в пригодном для 48K виде, поскольку делать эту игру чисто для 128K ради одного оператора PLAY было бы просто нелепо. Я заметил, что данные Tritone потребовали бы ручной модификации для любого цвета бордюра, кроме черного, так как ассемблерная переменная BORDER_CLR (EQU 0) нигде в коде не используется.
IL2MC6 выводит на экран «Земледробительный Бабах» (Earth-Shattering Kaboom), если вы вдруг когда-нибудь пройдете игру. Я не буду говорить в точности, что именно он делает — скажу лишь, что вам стоит найти способ одолеть игру, честно или нет, если вы хотите это увидеть.
IL2MC7 — это финальный блок со всякой всячиной, которая не поместилась в пространстве между кодом Illuminati и UDG. Подпрограмма, которая делает весь INK белым и плавно гасит его до черного, видна сразу после загрузки игры. Еще одна подпрограмма масштабирует графику лиц NPC (не скажу зачем), три из них печатают и манипулируют внутренней рамкой с надписями KEY и TRIES, а еще одна выводит оригинальный титульный экран Illuminati — да, знаю, я мог бы снова использовать ZX0, но это было добавлено уже под самый конец разработки, и такое решение означало бы смену всех адресов в блоках Videprinter, Beepola и Kaboom, либо перенос набора символов... так что я сделал все по старинке, эквивалентом кучи операторов PRINT через RST 16.
За неимением лучшего способа закончить этот документ:
«В общем... на сегодня у меня всё. А теперь проваливайте».
- The Critical Drinker
Поделитесь вашим мнением о статье