март 17, 2021

Cosmic Aq

Добавить в
Мои игры
Торрент
Скачать

Заявка на участие в конкурсе 2021 BASIC 10 Liner в категории PUR-80.

(Для Mattel Aquarius – MattPilz.com – @MattPilz – YouTube)

ПРЕДИСЛОВИЕ

Одним из моих самых ранних воспоминаний в истории видеоигр была игра в Cosmic Ark для Atari 2600. Звуки и визуальные эффекты этой игры все еще запечатлены в моей памяти спустя десятилетия.

Недавно я погрузился в мир Mattel Aquarius — домашней компьютерной системы со скидкой, выпущенной в 1983 году, которая просуществовала всего несколько месяцев, прежде чем ее прекратили. Отсутствие специального графического чипа или программируемых символов делает этот компьютер во многих отношениях менее программируемым, чем 2600, выпущенный шестью годами ранее.

Несмотря на недостатки, я все же нахожу в системе очарование. Старая пословица «ограничения способствуют творчеству» особенно актуальна для этой платформы. По-прежнему существует небольшое, но увлеченное сообщество единомышленников, которые выводят систему на новый уровень с помощью новых модификаций программного и аппаратного обеспечения.

Чтобы отдать дань уважения классическому космическому шутеру моей юности, а также отпраздновать 10-летие BASIC 10 Liner и вновь обретенное восхищение Aquarius, я решил разработать подходящее название Cosmic Aq. /p>

При работе с этой платформой возникают мучительные трудности, особенно в рамках 10-строчного вкладыша. В частности, каждая строка может содержать не более 72 символов, аo сокращенный синтаксис команд. Это дает разработчикам Aquarius жесткое ограничение в 720 символов вместо 800 символов, выделенных на других платформах в категории PUR-80.

Мои первоначальные большие амбиции в отношении этого проекта быстро улетучились, когда я понял, что приближаюсь к пределу кода только при создании визуальных эффектов для корабля и кометы, которые изначально включали гораздо более элегантный дизайн, а также следы пыли и взрывы. последствия. Мне пришлось бесконечно переделывать дизайн, чтобы втиснуть достаточно игровой механики, чтобы считать его завершенным проектом. Это сравнимо с режимом метеоритного дождя оригинального Cosmic Ark.

Наслаждайтесь!

КОД REM----------------ДЛИНА КАЖДОЙ СТРОКИ 72 СИМВОЛА-------------------------------- 0DIMB(22):D=12747:E=12347:T=50:L=53:M=14346:N=12774:Q=22:R=N:S=243:A=160 1B=1024:?CHR$(11):POKEE-59,46:FORI=0TOQ:Z=3-Z:POKEINT(960*RND(1)+E),46-Z 2READX:B(Q-I)=X:D=D+X*(I<13)*-1:УДАЛЕНО,S+Z:УДАЛЕНО+B,179+Z:ЗВУК(I,I):СЛЕДУЮЩИЙ 3SOUND(Q,S+S*F):IFL=48THENSOUND(Q*2,S*4):?TAB(53)"SCORE";:?P:INPUTA$:RUN 4G=INT(2*RND(1)+1)*SGN(RND(1)-0,5):U=E+460*ABS(G-1):H=40*G:K=9:F=2 :V=-23 5POKEE+23,L:T=T+(G<=1):C=1-(T<-L):IFABS(G)=2THENU=N+(6,5*ABS(G-2)):H=G/ 2 6FORI=0TOKSTEPC:V=-V:POKEU+H*I,173+V:W=PEEK(M):O=I:IFW=B(G+2)THENF=1:O=K 7FORJ=0TOT:NEXTJ:R=B(G+7)+N:IFF=01THENPOKE(R),213:POKE(R+B),54:F=0:P=P+1 8POKEU+H*(I),A:I=O:NEXTI:POKE(M),A:POKE(R),A:POKE(R+B),22:IFF=2THENL=L-1 9GOTO3:ДАННЫЕ0,37,1,1,1,1,1,1,36,1,1,39,-498,9,-67,0,133,17,44,97,0,122,46 РЭМ--10--||---20---||---30---||---40---||---50---||---60-- -||---70---|72 МАТТЕЛ АКВАРИУС

Mattel Aquarius имеет фиксированный набор из 256 символов и не имеет графического процессора. Он использует раннюю версию Microsoft BASIC — 1,7 КБ полезной оперативной памяти. Он также поддерживает максимум 72 символа в строке. Экран представляет собой сетку 40 x 24, состоящую из мозаичных символов и 16 цветов.

ИСТОРИЯ

Последняя межзвездная экспедиция экипажа на борту "Aquarius '83  зашла в опасное тупик. Попав под дождь смертоносных и все более сильных метеоритов, корабль уже пострадал. Теперь предстоит тяжелая битва до конца; ракеты против метеоров!

ИГРА

Вы управляете потрепанным космическим кораблем Aquarius, парящим в космосе и имеющим минимальную защиту от метеоритов. Случайно на корабле все еще есть функциональные четырехходовые ракеты, которые можно запускать вверх, вниз, влево или вправо. Используйте это оружие, чтобы уничтожить все приближающиеся метеоры!

Игра заканчивается, когда вы получаете более 5 ударов. В конце будет показана ваша оценка. Нажмите [ENTER], чтобы начать новую игру, или [CTRL]+[C], чтобы выйти.

УПРАВЛЕНИЕ

Вот основные элементы управления, необходимые для успеха:

  • [<] = ОГОНЬ ВЛЕВО
    [>] = ОГОНЬ ВПРАВО
  • [A]< /strong> = ЗАПУСКАЕТ
  • [Z] = ЗАПУСКАЕТ
  • [ENTER] = НОВАЯ ИГРА
  • [CTRL]+[C] = ВЫЙТИ ИЗ ИГРЫ
ЗАПУСК РУКОВОДСТВА

Играв нее можно играть на реальном или эмулированном Водолее, используя заводскую системную базу.

ЭМУЛЯЦИЯ

Код должен работать в любом эмуляторе Aquarius. Самый старый из них — Virtual Aquarius 0.72a. Другие включают AquaLite и AquaWX от Mattel Aquarius Computer Group на Facebook. Эти инструкции предназначены для Virtual Aquarius, который легко доступен.

(Для любого эмулятора вы должны иметь возможность просто вставить/вставить 10 строк исходного кода, а затем ввести RUN.)

ВИРТУАЛЬНЫЙ ВОДОЛЕЙ: БЫСТРЫЙ ТИП

ЭМУЛЯТОР: http://zophar.net/aquarius/virtual-aquarius.html

  1. Запустите Virtual Aquarius или выполните полную перезагрузку, если она уже запущена.
  2. Выберите Файл → Быстрый ввод...
  3. Перейдите к файлу "cosmic_src.txt" и дважды щелкните, чтобы загрузить и беги.
ВИРТУАЛЬНЫЙ ВОДОЛЕЙ: ЗАГРУЗКА КАССЕТ

  1. Запустите Virtual Aquarius или выполните полную перезагрузку, если она уже запущена.
  2. Введите: CLOAD и нажмите [ENTER].
  3. Нажмите [ENTER] еще раз, чтобы начать операцию загрузки кассеты.
  4. Выберите Файл → Воспроизвести кассетный файл...
  5. Перейдите к файлу "cosmic_tape.caq" и дважды щелкните для загрузки.
  6. Введите: RUN , а затем нажмите [ENTER].
ФИЗИЧЕСКОЕ УСТРОЙСТВО

Для макс.imum подлинность, вы можете запустить этот код на стандартной модели Mattel Aquarius.

УСТРОЙСТВО: КАССЕТНАЯ ЗАГРУЗКА

ТРЕБОВАНИЯ: Aquarius с совместимым кассетным плеером и кабелем.

Примечание. Этот процесс является конфиденциальным, и я рекомендую его только в том случае, если у вас есть предыдущий опыт переноса данных с кассеты в Aquarius. Каждая звуковая система и процесс вывода будут отличаться.

  1. Перенесите "cosmic_tape.wav" на кассету через линейный выход.
  2. Вставьте кассету в магнитофон и перемотайте ее.
  3. < li>Включите Aquarius и нажмите [ENTER], чтобы запустить BASIC.
  4. Введите: CLOAD и затем нажмите [ENTER].
  5. Нажмите [ENTER] еще раз, чтобы начать операцию загрузки кассеты.
  6. Нажмите [PLAY] на кассете проигрыватель, вы должны увидеть сообщение "Найдено: Cosmic."
  7. После того, как появится сообщение "ОК", введите: ЗАПУСК и затем нажмите [ENTER].
УСТРОЙСТВО: РУЧНОЙ ВВОД КОДА

Чтобы познакомиться с захватывающим искусством книг по кодированию 1980-х или просто почувствовать себя абсолютным сумасшедшим, вы можете вручную ввести исходный код в Aquarius, буква за буквой.

  1. Включите Aquarius и нажмите [ENTER], чтобы запустить BASIC.
  2. Внимательно введите все 10 исходных строк из "cosmic_src.txt", как показано на рисунке.
  3. Введите: RUN и нажмите [ENTEР]...
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ОБЪЯСНЕНИЕ ЛИНИИ: ОБЗОР ВЫСОКОГО УРОВНЯ

Ниже приводится краткое описание того, что достигается каждой из 10 строк. Чтобы лучше понять каждую строку, обратитесь к построчной разбивке.

  • СТРОКА 0: объявляет основные переменные и массив и устанавливает значения по умолчанию.
  • СТРОКА 1: инициализирует отображение, генерирует звездочки и начинает нарисовать петлю.
  • СТРОКА 2: считывает данные в массив и рисует космический корабль на экране.
  • СТРОКА 3: запускает основной цикл игры. , обрабатывает звук, завершение игры и сброс.
  • СТРОКА 4: вычисляет направление метеора и устанавливает базовые свойства.
  • СТРОКА 5: Обновляет жизни и устанавливает свойства для горизонтального метеора.
  • СТРОКА 6: обрабатывает отображение движения метеора и проверяет ввод игрока.
  • СТРОКА 7: Управляет скоростью метеора и устанавливает флаг, если игрок выиграл раунд.
  • СТРОКА 8: очищает визуальные эффекты для следующего раунда и обрабатывает проигрыш раунда.
  • СТРОКА 9: переход к началу цикла и сохранение значений для игрового массива.
ОБЪЯСНЕНИЕ ЛИНИИ: ПОДРОБНОЕ ОПИСАНИЕ

Этот раздел содержит исключительно технические сведения о том, как устроена каждая строка, и о многих тонкостях, необходимых для того, чтобы уместить все это в 720 символах данных в 10 стрках. Полезно для программистов, но не для обычных энтузиастов.

LINE 0: Переменная Declarations 0DIMB(22):D=12747:E=12347:T=50:L=53:M=14346:N=12774:Q=22:R=N:S=243:A=160
  • B: Массив, в котором хранятся 23 целых числа из DATA (корабль, элементы управления, разное).
  • D: самое верхнее расположение изображений корабля на экране (строка 10, столбец 19).
  • E: положение экрана по умолчанию для приближающегося метеора (ряд 0, столбец 19).
  • T: продолжительность задержки приближающегося метеора; становится быстрее с каждым ходом.
  • L: Общее количество жизней в виде значения символа (53=5 . . . . 48=0).
  • M: Место хранения последней нажатой клавиши для проверка ввода с клавиатуры.
  • N: смещение экрана используется при расчете направления метеора и отображении.
  • Q: соответствует длине массива "B", используемому для итерации и звуковых эффектов.
  • R: расчетное положение огневого края корабля, по умолчанию N.
  • S: базовое значение символа для рисования корабля, также используемое для звуков.
  • A: символ значение для пустой плитки, 32 и 160 эквивалентны.
Строка 1:  Инициализация дисплея 1B=1024:?CHR$(11):POKEE-59,46:FORI=0TOQ:Z=3-Z:POKEINT(960*RND(1)+E),46-Z
  • Очищает экран, инициализирует цикл данных и рисует базовый HUD и фон.
  • Значению Z присваивается чередующееся значение 3 или 0 для эффектов.
  • случайное звездное поле рисует "." или "+" (46/43) для экрана в зависимости от Z.
  • Крайняя верхняя левая плитка 12288 (E-59) создает границу из символа 46.
  • B: Сохраняет 1024 – смещение, необходимое для добавления ЦВЕТА к символам POKED.
  • I – начинается цикл от 0 до 22, используемый для загрузки ДАННЫХ, отрисовки корабля и т. д.
ЛИНИЯ 2:Хранение данных и генерация кораблей 2READX:B(Q-I)=X:D=D+X*(I<13)*-1:УДАЛЕНО,S+Z:УДАЛЕНО+B,179+Z:ЗВУК(I,I):СЛЕДУЮЩИЙ
  • Сохраняет значения DATA в массиве B для проектирования корабля, элементов управления и т. д.
  • Порядок массива инвертируется, чтобы сэкономить несколько символов при проверке ввода.
  • Для первые 13 элементов рисуются на экране для построения корабля.
  • Команда POKE использует значения данных для рисования корабля со смещением D (12747).
  • Значение Z используется для чередования символа корабля 243 /246 и цвета 179/182.
  • Результат чередования символов/цветов выглядит "захудалым".
  • Во время инициализации игры воспроизводится небольшая мелодия, повторяется цикл.
LINE 3: Начало игрового цикла 3SOUND(Q,S+S*F):IFL=48THENSOUND(Q*2,S*4):?TAB(53)"SCORE";:?P:INPUTA$:RUN
  • Вызывается в конце каждого "раунда", когда метеор достигает корабля или в него выстреливают.
  • Воспроизведение уникального звукового эффекта в зависимости от того, выжил ли пользователь в раунде.
  • Если количество жизней равно 0 (символьное значение 48), происходит конечная последовательность.
  • По окончании игры раздается последний звук смерти и отображается счет.
  • Затем программа ожидает, когда пользователь ввода, при нажатии [ENTER] начнется заново.
  • Нажатие [CTRL]+[C] приведет к выходу из программы и выходу из игры.
LINE 4: Рассчитать направление метеора 4G=INT(2*RND(1)+1)*SGN(RND(1)-0,5):U=E+460*ABS(G-1):H=40*G:K=9:F=2 :V=-23
  • Направление следующего метеора определяется этой необычной линией.
  • Она генерирует значение -2 (ПРАВО), -1 (НИЗ), 1 (ВЕРХ) или 2 (ЛЕВО). .
  • В этом way значение может быть передано в массив для обработки ввода
  • а также для визуального обновления соответствующей стороны корабля и т. д.
  • Переменные, определенные и обновляемые в этой строке, заданные значения по умолчанию
  • применимы для НИЖНЕГО (-1) и ВЕРХНЕГО (1) направлений метеора.
  • G: Направление следующего метеора, как описано выше (-2, -1, 1 , 2).
  • U: Расчетный вектор вертикального движения и местоположение метеора.
  • H: Расчетный вектор горизонтального движения и местоположение метеора.
  • K : Общее количество ходов метеора до достижения корабля.
  • F: сбрасывает флаг, указывающий, проигрывает ли игрок (2) или выигрывает (1) раунд.
  • V: смещает значение символа метеора, чтобы обеспечить анимированный эффект [O o]. LINE 5: Обновление HUD и инициализация метеора 5POKEE+23,L:T=T+(G<=1):C=1-(T<-L):IFABS(G)=2THENU=N+(6,5*ABS(G-2)):H=G/ 2
    • Обновляет общее количество жизней и значок космического корабля для HUD.
    • 75%-й шанс уменьшить задержку метеора T на 1, чтобы он увеличивал скорость.
    • Если пользователь выдающийся и набирает 73+, он удваивает шаг (гиперскорость).
    • Проверяет, является ли направление метеора ВЛЕВО или ВПРАВО (2, -2).
    • < li>Если это так, обновляет переменные для поддержки горизонтального перемещения.
    • Позиция пересчитывается так, чтобы она могла учитывать оба направления.
    СТРОКА 6: Движение метеора и пользовательский ввод 6FORI=0TOKSTEPC:V=-V:POKEU+H*I,173+V:W=PEEK(M):O=I:IFW=B(G+2)THENF=1:O=K
    • Создает цикл на основе on определенных свойств направления метеора.
    • Отрисовывает метеор на экране на основе текущего индекса цикла и данных.
    • 16|-16 добавляется к базе символов 95, чтобы анимировать вид метеора .
    • Ячейка данных, содержащая последнюю нажатую клавишу, считывается и сравнивается.
    • Если нажатая клавиша совпадает с направлением метеора, игрок выигрывает раунд.
    • I: Итератор, который перемещает метеор от края экрана к кораблю.
    • C: Значение шага для цикла/скорости. Если жив после 100 ходов, устанавливается на 2 (гиперскорость!).
    • W: сохраняет последнюю нажатую пользовательскую клавишу для сравнения ввода.
    • F: флаг устанавливается на 1, чтобы указать пользователь выиграл раунд.
    • O: если пользователь выиграл, устанавливает значение в конец цикла for для досрочного выхода.
    LINE 7: Задержка во времени и победа в раунде 7FORJ=0TOT:NEXTJ:R=B(G+7)+N:IFF=01THENPOKE(R),213:POKE(R+B),54:F=0:P=P+1
    • В Aquarius задержки создаются с помощью простых циклов, таких как циклы ЦП.
    • Пустой цикл повторяется в зависимости от значения продолжительности для замедления метеоров.
    • Каждая успешная атака против метеор уменьшает задержку на 1 цикл.
    • Если пользователь стреляет в том же направлении, что и метеор, отображается выстрел.
    • За успешное попадание в метеор начисляется очко.
    • li>
    • Флаг выигрыша устанавливается в 0 специально по веским причинам в строке 3.
    СТРОКА 8: Очистка и потеря раунда 8POKEU+H*(I),A:I=O:NEXTI:POKE(M),A:POKE(R),A:POKE(R+B),22:IFF=2THENL=L-1
    • Перезаписывает последние местоположения метеора и выстрела, чтобы очистить графику.
    • Сбрасывает входное значениеue, чтобы он не совпадал ни с одним из четырех направлений.
    • Устанавливает цвет области края корабля на красный (для визуальных столкновений).
    • Если раунд был проигран, уменьшить количество жизней игрока на одну.
    LINE 9: Конец цикла и структура данных 9GOTO3:ДАННЫЕ0,37,1,1,1,1,1,1,36,1,1,39,-498,9,-67,0,133,17,44,97,0,122,46

    Отправляет программу обратно на строку 3, чтобы начать следующий цикл. Содержит 23 различных элемента данных, используемых во всей программе. Данные хранятся в массиве в ОБРАТНОМ ПОРЯДКЕ для некоторых сокращений.

    [0-4] : 46,122,0,97,44

    • Сохраняет коды символов, соответствующие введенным значениям.
    • 46 = ПОЖАР ВПРАВО (-2), 122 = ПОЖАР ВНИЗ (-1)
    • 97 = ПОЖАР ВВЕРХ (1), 44 = ОГОНЬ ВЛЕВО (2)
    • Среднее значение 0 — это базовая точка, на которую ссылается игра.
    • К ее индексу добавляется значение направления (-2,- 1,1,2).
    • Это позволяет сжато проверить, стрелял ли пользователь метеором.
    • Среднее значение является произвольным и активно не используется.

    [5-9] : 17,133,0,-67,9

    • Сохраняет значения краев корабля как смещения от N.
    • Используется для изменения цвета/дизайна при пожаре или столкновении.
    • Среднее значение 0 является базовым точка, на которую ссылается игра.
    • К ее индексу добавляется значение направления (-2,-1,1,2).
    • Среднее значение произвольное и активно не используется.

    [10] : -498

    •  Возврат к началу экрана во время создания корабля.
    • Это делается для того, чтобычерный курсор ошибки вверху.
    • В игре эта плитка заменяется значком жизней.

     [11-22] : 39,1,1,36,1,1,1,1,1,1,37,0

    • Хранит смещения от D-12747 для строительства корабля.
    • Корабль строится по мере чтения и хранения данных как его части.
    • Может быть полезен в -game, чтобы части корабля разрушались.
    • Активно не вызывается в игре из-за нехватки места для кода!

Как скачать Cosmic Aq через торрент

Всего несколько простых шагов:

  • Устанавливаем программу μTorrent, через которую мы будем скачивать торренты
  • Выбираем и скачиваем подходящий торрент-файл репака Cosmic Aq
  • Двойным кликом открываем скаченный файл, программа μTorrent запустится автоматически и предложит выбрать место для сохранения дистрибутива.
  • После того как репак скачается, запускайте его. Начнется установка и... это все, приятной игры!