апрель 6, 2021

Cosmic Aq by Matt Pilz

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

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

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

<р>

ПРЕДИСЛОВИЕ

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

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

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

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

При работе с этой платформой возникают мучительные трудности, особенно в рамках 10-строчного вкладыша. В частности, каждая строка может содержать не более 72 символов.здесь нет сокращенного синтаксиса для команд. Это дает разработчикам 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 :POKED,S+Z:POKED+B,179+Z:SOUND(I,I):NEXTI 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: ЕСЛИW=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х24 плиточных символов-16 цветов.

ИСТОРИЯ

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

ИГРА

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

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

УПРАВЛЕНИЕ

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

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

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

ЭМУЛЯЦИЯ

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

(Для любого эмулятора вы должны иметь возможность просто вставить/вставить 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].
  7. ФИЗИЧЕСКОЕ УСТРОЙСТВО

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

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

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

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

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

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

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

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

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

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

    LINE 0: Объявления переменных 0DIMB(22):D=12747:E=12347:T=50:L=53:M=14346:N=12774:Q=22:R=N:S=243:A=160
    • B: Массив, в котором хранятся 23 целых числа из ДАННЫХ (корабль, органы управления, разное).
    • 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, смещение, необходимое для добавления ЦВЕТА к POKE.Д символы.
    • I: Начинает цикл от 0 до 22, используемый для загрузки ДАННЫХ, рисования корабля и т. д.
    LINE 2: Хранение данных и генерация кораблей 2READX:B(Q-I)=X:D=D+X*(I<13)*-1:УДАЛЕНО,S+Z:УДАЛЕНО+B,179+Z:ЗВУК(I,I):СЛЕДУЮЩИЙ
    • Сохраняет значения ДАННЫХ в массиве 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 (ЛЕВО).
    • Таким образом, значение может быть передано в массив для обработки ввода.
    • а также визуальные обновления соответствующей стороны корабля и так далее.
    • Переменные, определенные и обновляемые в этой строке, имеют значения по умолчанию.
    • применимо для НИЖНЕГО (-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).
    • Если это так, обновляет переменные для поддержки горизонтального перемещения.
    • Позиция пересчитывается таким образом, чтобынаправления.
    СТРОКА 6: Движение метеора и пользовательский ввод 6FORI=0TOKSTEPC:V=-V:POKEU+H*I,173+V:W=PEEK(M):O=I:IFW=B(G+2)THENF=1:O=K
    • Создает петлю на основе определенных свойств направления метеора.
    • Рисует метеор на экране на основе текущего индекса петли и данных.
    • 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 цикл.
    • Если пользователь стреляет в том же направлении, что и метеор, отображается выстрел.
    • За успешное попадание в метеор начисляется очко.
    • Флаг выигрыша устанавливается в 0 специально по веским причинам в строке 3.
    ЛИНE 8: Очистка и потеря раунда 8POKEU+H*(I),A:I=O:NEXTI:POKE(M),A:POKE(R),A:POKE(R+B),22:IFF=2THENL=L-1
    • Перезаписывает последние места метеорита и выстрела, чтобы очистить графику.
    • Сбрасывает входное значение, чтобы оно не соответствовало ни одному из четырех направлений.
    • Устанавливает красный цвет области края корабля (для визуальных столкновений).
    • Если раунд проигран, уменьшите количество жизней игрока на одну.
    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 для постройки корабля.
    • Корабль строится по мере того, как данные считываются и хранятся как его часть.
    • Может быть полезно в игре, чтобы части корабля разрушались.
    • Не вызывается в игре активно из-за нехватки места для кода!

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

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

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