старые игры игровой автомат 

История видеоигр, часть 29: Space Wars (1977)

о ап

#
>-

os,старые игры,игровой автомат

Для тех, кто читает блог с самого начала, эта игра будет выглядеть знакомо. Да, действительно, перед нами клон Spacewar! 1962 года. Поиграв в оригинал, выпускник MIT Ларри Розенталь настолько впечатлился, что воспроизвёл игруна собственноручно собранном игровом автомате. Позже Розенталь каким-то образом заручился поддержкой компании Cinematronics для коммерческого выпуска Space Wars.

IS]
H
Ч 30
fio
п
*
-К
у,старые игры,игровой автомат

Как и Spacewar!, эта игра -- дуэль двух космических кораблей, управляемых игроками. События разворачиваются на одном экране, в центре которого находится звезда (впрочем, её можно отключить в настройках автомата), имеющая положительное или отрицательное гравитационное поле. Space Wars выглядит лучше предшественницы за счёт использования современного векторного дисплея. В последующие годы эта технология станет визитной карточкой Cinematronics.

14»
fi
a ai
fiG
П
1,старые игры,игровой автомат

Управление аналогично Spacewar!. Две кнопки отвечают за разворот вправо и влево, одна за ускорение, одна за стрельбу и одна за прыжок в гиперпространство. Боезапас игроков ограничен: на каждый раунд даётся 15 зарядов, которые можно выпустить в противника. Уход в гиперпространство телепортирует корабль игрока в случайную точку на экране. Это может стать спасением в чрезвычайной ситуации, но злоупотреблять таким манёвром не стоит: при каждом прыжке есть растущий риск сбоя и гибели корабля.

а а
G чг
ISO
IG
é^,старые игры,игровой автомат

Самое интересное нововведение -- возможность повредить корабль противника. В Spacewar! раунд заканчивался после первого же попадания, в Space Wars, если снаряд задел корабль по касательной, последний может лишиться нескольких деталей и потерять в скорости и манёвренности, но продолжить бой. Стоит, кстати, отметить красивый эффект разрушения кораблей на тучу векторных обломков, разлетающихся во все стороны. Ещё одно заметное новшество -- пролетающие время от времени по экрану астероиды.

Интересно, что, кинув в автомат четвертак, игроки покупали не отдельный раунд или несколько, а фиксированное время, в течение которого могли играть без ограничений.

Оригинал: https://silicondarwin.blogspot.com/2017/05/space-wars-1977.html

Развернуть

gamedev Игры Roguelike screenshotsaturday 

Beneath the Citadel v.0.18 (WIP)

Продолжаю пилить свой роуглайк. Главной фичей новой версии будут события. Что это такое? Если по-простому, - миниатюрные текстовые квесты, которые активируются при первом посещении комнаты игроком. Для меня это в первую очередь нарративный инструмент, потому что через них можно вводить элементы лора, которые иначе пришлось бы распихивать по случайным бумажкам, забытым дневникам и секретным документам, что на мой взгляд звенящая пошлость. Кроме того, это возможность разнообразить геймплейную рутину и задействовать те навыки и параметры персонажа, которые сейчас недостаточно нагружены.

^ Bochs for Windows - Display
Reset susPEno Rower-
Û *
ù ф
Dogs
You see a group of stray dogs tearing something on the floor apart. A moment later the dogs notice your presense and turn to you. Another moment and you realise that these are no ordinary stray dogs - their eye sockets are empty,

^te snapshot » a Reset suspeno Power-
i Ш M û ù Ф
Collapsing stonework
As you enter this room, several pieces of stonework fall from above. Evade (Dexterity)
iq? Bochs for Windows - Display
CTRL + 3rd button enables mouse IPS: 88,380M A: NUM CAPS SCRL,gamedev,Игры,Roguelike,screenshotsaturday

Развернуть

программирование geek OSDev Операционная система разработка ассемблер длиннопост 

ОСдев №9: основной загрузчик, часть 2. Работа с дисплеем при помощи функций BIOS.

Дисклеймер: эта серия постов не про UEFI. Это не значит, что я не знаю о существовании UEFI. Про UEFI будет отдельная серия постов. Почему я не пишу про UEFI прямо сейчас? Потому что UEFI - это уровень абстракции над железом, а мне интересно именно железо и работа с ним.

Продолжаем? Сейчас наш загрузчик второго уровня работает в "немом" режиме - без возможности подать сигнал об ошибке или выполнении операции. Это необходимо исправить. Самое очевидное решение - вывод информации на дисплей. Мы уже условились, что на нынешнем этапе для работы нашей ОС будет необходима VGA-совместимая карта и дисплей, так что вправе рассчитывать на их наличие.

Программирование VGA-контроллера - сложная штука. Однажды мы ею обязательно займёмся, но сейчас, раз уж мы всё ещё в Реальном режиме, есть вариант попроще: функции BIOS. Функции, связанные с работой дисплея, доступны через прерывание 10h. Мы уже пользовались им для вывода текста в первичном загрузчике, но так как теперь мы не ограничены в размере программы, функционал можно будет расширить.

Первое, что нам стоит сделать - установить нужный видеорежим на случай, если BIOS этого не сделала. Кроме того, понадобятся функции считывания положения курсора, прокрутки экрана и вывода строки. Весь код, связанный с вводом/выводом будет храниться в отдельном файле. У меня он называется io.inc. Мы ещё не использовали подключаемые файлы, но ничего сложного тут нет: в TASM они объявляются директивой include, после которой идёт путь и имя файла. Единственная тонкость тут в том, что подключенный файл не будет вынесен в какую-то изолированную область памяти, как это делается в языках высокого уровня, а окажется в исполняемом файле именно там, где был объявлен. Поэтому лучше объявлять подключаемые файлы где-нибудь в конце, за пределами основного кода.

VGA имеет набор стандартных режимов отображения, с которым можно ознакомиться тут:

http://www.columbia.edu/~em36/wpdos/videomodes.txt

Нас интересует режим номер 3 - 80х25 символов, 16 цветов. Для его включения создадим в файле io.inc процедуру set_vmode3. Её полный текст будет выглядеть так:

set_vmode3 proc
                                  push ax
                                  push bx
                                  pushf


                                  xor ax,ax
                                  mov ah,0Fh
                                  int 10h
                                  cmp al,03h
                                  je @@exit_good


                                  mov ax,0003h
                                  int 10h


                                  xor ax,ax
                                  mov ah,0Fh
                                  int 10h
                                  cmp al,03h
                                  jne @@exit_bad


@@exit_good:          mov byte ptr vmode,al
                                  mov byte ptr vcol,ah
                                  mov byte ptr vrow,19h
                                  mov byte ptr vpage,bh


                                  popf
                                  clc
                                  pop bx


                                  pop ax
                                  ret


@@exit_bad:            popf
                                  stc
                                  pop bx
                                  pop ax
                                  ret
set_vmode3 endp

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

                    xor ax,ax                    mov ah,0Fh
                    int 10h
                    cmp al,03h
                    je @@exit_good

Этот блок нужен для того, чтобы остановить выполнение процедуры, если режим 3 уже установлен. Сначала регистр AX обнуляется, чтобы мы точно знали его значение. Функция 15 (0Fh) прерывания 10h возвращает в регистре AL номер установленного режима. Далее мы сравниваем результат с нужным значением (3), и если они равны, то переходим к завершению процедуры, метка @@exit_good. Если режим 3 не установлен, продолжаем.

                    mov ax,0003h                    int 10h

Здесь мы опять вызываем прерывание 10h со следующими параметрами: AH = 0(функция 0, установка видеорежима), AL = 3(номер режима). После этого снова идёт проверка режима. Если AL всё ещё не равен 0 - вероятно, возникла проблема, которую мы не сможем решить. Переходим к метке @@exit_bad. Если AL равен 3, продолжаем от @@exit_good. Первым делом - сохраняем в переменные параметры режима, которые вернуло прерывание 10h. В AL - номер режима; в AH - количество колонок символов; в BH - активную страницу видеопамяти (об этом позже). Параметр vrow не возвращается, потому что технически количество символьных строк ограничено только объёмом видеопамяти, а не размером дисплея. После этого восстанавливаем сохранённые в начале регистры, устанавливаем CF (флаг переноса) в нужное положение и завершаем процедуру.

Готово. Теперь в основной модуль после call read_BPB добавляем call set_vmode3 и после этого jc panic. JC - инструкция условного перехода. Переход выполняется при установленном флаге CF. То есть, если наша процедура set_vmode3 завершилась неудачно, программа продолжится от метки panic. Так как невозможность установить видеорежим говорит либо о серьёзных неполадках, либо о несовместимом оборудовании, продолжать выполнение смысла нет. После метки panic останавливаем программу инструкциями cli и hlt.

Далее стоит вывести какое-нибудь приветствие или заголовок, просто чтобы уведомить пользователя о том, что программа работает. Для этого первым делом стоит узнать положение курсора, ведь на экране скорее всего уже есть какой-то текст от BIOS. Это тоже можно сделать с помощью прерывания 10h. Добавьте в io.inc процедуру get_cursor_pos:

get_cursor_pos proc                                      push ax
                                      push bx
                                      push cx
                                      push dx
                                      pushf


                                      mov ah,03h
                                      mov bh,byte ptr vpage
                                      int 10h
                                      mov byte ptr cursor_X,dl
                                      mov byte ptr cursor_Y,dh


                                      popf
                                      pop dx
                                      pop cx
                                      pop bx
                                      pop ax
                                      ret
get_cursor_pos endp

Про сохранение/восстановление используемых регистров объяснять больше не буду, а в остальном тут всё просто: вызываем функцию 3 прерывания 10h, в BH передаём активную страницу видеопамяти. Прерывание возвращает в DL позицию курсора по X, а в DH - по Y. Сохраняем в переменных. Готово. Далее нам понадобится процедура для прокрутки содержимого дисплея. Тут чуть сложнее, добавьте в io.inc:

scroll_up proc                                     push ax
                                     push bx
                                     push cx
                                     push dx
                                     pushf


                                     mov ah,06h
                                     mov bh,CS_DEFAULT
                                     xor cx,cx
                                     mov dl,byte ptr vcol
                                     dec dl
                                     mov dh,byte ptr vrow
                                     dec dh
                                     int 10h


                                     popf
                                     pop dx
                                     pop cx
                                     pop bx
                                     pop ax
                                     ret
scroll_up endp

Функция прокрутки экрана BIOS требует, во-первых, цветовую схему, которой будут заполнены очищенные строки, а во-вторых, координаты верхнего левого и правого нижнего углов сдвигаемой области. Цветовая схема передаётся в регистре BH и состоит из цвета фона и цвета символа. Мы ещё не объявляли константы, давайте посмотрим, как это делается. Константы в отличие от подключаемых файлов можно объявлять где угодно, так как они нужны только на этапе компиляции и не попадают в исполняемый файл. В TASM для объявления констант используется инструкция equ. Вся конструкция выглядит так: ИМЯ КОНСТАНТЫ equ ЗНАЧЕНИЕ КОНСТАНТЫ. Так как в стандартной палитре третьего режима всего 16 цветов, уместно будет определить их в виде констант. Добавьте в код такую запись:

;Цвета фона.BC_BLACK               equ byte ptr 00h
BC_BLUE                 equ byte ptr 10h
BC_GREEN              equ byte ptr 20h
BC_CYAN                 equ byte ptr 30h
BC_RED                   equ byte ptr 40h
BC_MAGENTA          equ byte ptr 50h
BC_BROWN             equ byte ptr 60h
BC_LIGHTGRAY      equ byte ptr 70h


;Цвета символа.
SC_BLACK               equ byte ptr 00h
SC_BLUE                 equ byte ptr 01h
SC_GREEN              equ byte ptr 02h
SC_CYAN                 equ byte ptr 03h
SC_RED                   equ byte ptr 04h
SC_MAGENTA         equ byte ptr 05h
SC_BROWN             equ byte ptr 06h
SC_LIGHTGRAY      equ byte ptr 07h
SC_DARKGRAY       equ byte ptr 08h
SC_LIGHTBLUE       equ byte ptr 09h
SC_LIGHTGREEN   equ byte ptr 0Ah
SC_LIGHTCYAN      equ byte ptr 0Bh
SC_LIGHTRED        equ byte ptr 0Ch
SC_LIGHTMAGENTA equ byte ptr 0Dh
SC_LIGHTBROWN  equ byte ptr 0Eh
SC_WHITE               equ byte ptr 0Fh


;Несколько готовых цветовых схем.
CS_DEFAULT           equ BC_BLACK or SC_CYAN
CS_CLASSIC           equ BC_BLACK or SC_LIGHTGRAY
CS_DARK                 equ BC_BLACK or SC_DARKGRAY
CS_BLUE                 equ BC_BLUE or SC_LIGHTBLUE
CS_ALARM              equ BC_BLACK or SC_RED
CS_DEBUG              equ BC_BLUE or SC_WHITE
CS_INVERT             equ BC_LIGHTGRAY or SC_BLACK
CS_PANIC                equ BC_RED or SC_BLACK

Как видите, для передачи цвета фона/символа используется один байт. Нижние 4 бита отвечают за цвет символа, верхние - за цвет фона и некоторые другие эффекты (подчёркивание, мигание), которые нам сейчас не нужны. Теперь разберёмся с рабочей областью. Мы хотим сдвинуть вверх весь экран, поэтому верхняя левая точка будет в (0,0), а правая нижняя - в (число символов по X-1,число символов по Y-1). Первая передается в CX, вторая - в DX. Таким образом, код процедуры расшифровывается так:

AH=номер функции (6)BH=цветовая схема
CX=верхний левый угол рабочей области (0,0)
DX=правый нижний угол
Вызвать прерывание 10h

Процедура принимает число строк, на которое нужно прокрутить экран вверх, в AL. Добавьте после jc panic такой код:

                           call get_cursor_pos                           mov al,01h
                           call scroll_up

Последнее, что мы рассмотрим сегодня - вывод строки. Это функция 19 прерывания 10h. В качестве параметров она требует: сегмент и смещение строки в ES:BP; цветовую схему в BL; активную страницу видеопамяти в BH; позицию начала вывода по X в DL; позицию начала вывода по Y в DH; длину строки в CX; режим вывода в AL. Номер функции как всегда передаётся в AH.

Зная всё это, давайте подумаем, как организовать процедуру. В принципе тут всё почти однозначно, но что\ делать с длиной строки? Заносить в CX вручную перед каждым вызовом процедуры? Можно, но зачем раздувать код. Лучше включить эту информацию в саму строку. Например, приняв, что первые 16 бит строки будут содержать число символов в ней. У меня строка с заголовком загрузчика выглядит так:

str_title          dw 31                                                     ;Длина строки.                      db '=== Tardigrada Loader v.1.1 ==='    ;Строка.

Теперь давайте напишем саму процедуру в io.inc.

print_string proc                                   push ax
                                   push bx
                                   push cx
                                   push dx
                                   push bp
                                   push es
                                   pushf


                                   mov ax,0050h
                                   mov es,ax
                                   mov ax,1300h
                                   mov bh,byte ptr vpage
                                   mov cx,es:[bp]
                                   mov dh,byte ptr cursor_Y
                                   mov dl,byte ptr cursor_X
                                   add bp,0002h
                                   int 10h


                                   popf
                                   pop es
                                   pop bp
                                   pop dx
                                   pop cx
                                   pop bx
                                   pop ax
                                   ret
print_string endp

Наша процедура будет принимать два параметра: смещение строки в BP и цветовую схему в BL. Практически весь код - это заполнение регистров для вызова прерывания. В основном модуле после call scroll_up добавим:

                                   mov bl,CS_DEFAULT                                   mov bp,offset str_title
                                   call print_string
                                   mov al,01h
                                   call scroll_up

Этот код выведет заголовок и прокрутит экран ещё на одну строку вверх. Если всё сделано правильно, должно получиться что-то вроде этого:

^ Bochs for Windows - Display
USER ,__£
m2
■+Щ
•te
ТА
Reset susPEno Rower-
Û *
ujf'tnu vvwet
ù ф
Please visit :
. http://bochs.sourceforge.net . http ://www.nongnu.org/vgab ios
Bochs UBE Display Adapter enabled
Bochs 2.6.10.sun BIOS - build: 01/05/20
^Revision: 13752 $ $Date:

Чистая дискета: https://drive.google.com/file/d/1Bold4ds8oEruHQ7fJZKHglVo7A2Vc5MR/view?usp=sharing

Исходники: https://drive.google.com/file/d/144cHXVlBskSiKt9zTAR1V535UQCeUyBL/view?usp=sharing

Bochs: https://drive.google.com/file/d/16k2Gpr7oPSekq4rAhmtBV0IPnIteDLlE/view?usp=sharing

Развернуть

Игры старые игры atari 

История видеоигр, часть 28: Miniature Golf (1977)

MN ATURE GOLF
VIDEO COMPUTER SYSTEM ™
GAME PROGRAM
VIDEO
GAMES
MINIATURE GOLF ONE PLAYER*TWO PLAYERS,Игры,старые игры,atari

Если бы не название, в жизни бы не догадались, что перед вами симулятор минигольфа, а? Удивительный факт: игра Miniature Golf для Atari 2600 вышла до изобретения кругов. Никакого другого объяснения её графическому оформлению я не вижу. Даже самые ранние игры для этой приставки могли похвастаться более детализированной графикой.

Игры,старые игры,atari

На момент выхода игры Atari 2600 была ещё относительной новинкой, но всё-таки разработкой занималась сама Atari, а это значит, что отговорка "мы не знали, как работать с новой платформой", не годится.

Игры,старые игры,atari

Задача игрока -- допинать квадратный мяч до квадратной лунки за наименьшее число ударов. Как и в реальном минигольфе, поле тут извилистое и заставленное всевозможными препятствиями (прямоугольными). Загнав мяч в лунку, игрок переходит на следующее поле - всего их девять. Количество ударов ничем не ограничено, и проиграть в Miniature Golf невозможно, но для каждого этапа есть рекорд, к которому стоит стремиться.

Игры,старые игры,atari

Стоит рассказать про управление. Оно, конечно, незамысловато -- к замысловатому контроллеры Atari 2600 не располагают. На скриншоте вверху зелёная точка -- это мяч. Синий квадрат - клюшка, которой управляет игрок. Маленький синий прямоугольник -- лунка. Игрок может свободно перемещать клюшку по всему игровому полю. Рядом с мячом она движется медленно, чтобы облегчить прицеливание, а вдали -- быстро. По нажатию кнопки (единственной на контроллере Atari 2600) клюшка устремляется к мячу из той точки, где была установлена, и при ударе отправляет его в соответствующем направлении. При этом чем дальше клюшка была от мяча -- тем сильнее будет удар.

Игры,старые игры,atari

Оценивать графику в играх для Atari 2600 -- глупо. И всё-таки в Miniature Golf даже те скромные возможности, что были у системы, использованы только частично. Звуковое сопровождение, в принципе, соответствует - абстрактно и минималистично. Управление странное, но удобное -- когда привыкнешь.

Игры,старые игры,atari

Развернуть

Игры старые игры игровой автомат 

История видеоигр, часть 27: Guided Missile (1977)

A "SOUND” LAND, SEA
* ONE OR TWO PLAYER GAME
CONTROLS
*	STURDY “JOY STICK
*	REALISTIC SOUNDS
*	FLASHING EXPLOSION LIGHTS
*	ADJUSTABLE TIMER AND EXTENDED PLAY *■ TARGETS SCORE 30-150 POINTS
. : MICRO PROCESSOR LOGIC SYSTEM
*	BUILT IN RAM AND ROM TESTER
*	23" SOLID STATE MONITOR VARIABLE

Ах, это славное, наивное время! Время, когда по названию игры можно было точно сказать, о чём она будет: Canyon BomberNight Driver. Вот и у Guided Missile название настолько говорящее, что и писать про неё в общем-то уже нечего.

L-PLAYER Ж ÜTTuri Я R'PLfiYER SCORE Щ l iTIMEi П SCORE,Игры,старые игры,игровой автомат

Guided Missile -- выпущенная Midway игра, где два игрока соревнуются, кто набьёт больше очков за отведённый промежуток времени, пуская управляемые ракеты по проезжающим по экрану целям.

Ракеты запускаются из двух стационарных пусковых установок, и до достижения ими верхней точки траектории неуправляемы. Во время снижения курс можно отклонять влево или вправо.

L-PLAYER SCORE
TIME
JD.
R-PLAYER SCORE,Игры,старые игры,игровой автомат

Обратите внимание на разнообразие военной техники, которая присутствует на экране. Тут грузовики, танки, вертолёт, даже подводные лодки! Цели перемещаются с разной скоростью и стоят разное количество очков. Самые медленные, грузовики -- 30; самые быстрые, подводные лодки -- 190.

Игры,старые игры,игровой автомат

Звук и графика в игре средние. Анимации почти нет, но и раздражающих мерцания и артефактов тоже. Звук неназойлив. Управление отзывчивое, но есть ощущение, что если бы авторы дали игроку менять курс ракеты сильнее, играть было бы более интересно. Технически игра поддерживает синглплеер, но смысла в нём нет, потому что автомат не ведёт таблицы рекордов.
Развернуть

Игры старые игры игровой автомат 

История видеоигр, часть 26: Hustle (1977)

It’s time to
GAME CLOCK IN SECONDS
PLAYERS
SCORE
PLAYER'S SCORE \
SECOND
PLAYER
TARGET
POINTS
MYSTERY POINTS "
OUTER
MARGINS
FIRST — PLAYER
Gremlin’s great new video game where the action, the features and the operator’s profits are built right in!,Игры,старые игры,игровой автомат

Уже вторая "змейка" от Gremlin. Похоже, компания нашла свою нишу. Нельзя, впрочем, сказать, что Hustle -- это переизданная Blockade, в ней достаточно оригинального. Во-первых, есть режим для одного игрока. В Blockade единственной целью было сделать так, чтобы оппонент врезался в ваш или свой собственный хвост. Здесь же главная задача -- набрать как можно больше очков, наползая на призовые "коробки", а строить козни ближнему -- приятный бонус.

000000000000000000000000000О
0				0^
0				0W
0				0O
0				0O
0	□□□□□□□□□□□□□□□□□			0*
0	□		□	0TI
0	□		□	0ГЛ
0	□	□□□□□	□	03
0	□	□ □	□	0H
0	□	□	□	0Г
0	□	□	□	04
0	□	□	O	0-C
0	□	□		0
0	□	□		H
0	□	□		HUI
0	□	□		3CÛ
0	□□□□□□□□			m
0				0
0				0
0				0
0				0CO
0				0O
0				0O
0

В Hustle после столкновения игра не заканчивается, но
есть 90-секундный лимит времени.

Коробки с очками могут быть двух типов: с числом или тремя знаками вопроса. Первые всегда добавляют очки к финальному счёту, вторые при столкновении могут оказаться со знаком плюс или минус.

OB00000000000000000000000000
os			в
<rs			в
OB			в
OB			в
'¡>B			в
US			в
tt в			в
ÜB			в
ÜB	□		в
(AB	□		в
в	□□□□□□□□□□в		в
в		¡L □	в
в		ШВ	в
Ui	700		в
os		o □	в
он		□	в
H		Li <>□□□□□□	в
в		s	в
>в		a	в
нв		ü	в
JB			в
ŒB			в
2В			в
ши			в
CLB			в
			в
OB			в
OB			в
OB

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

Игры старые игры игровой автомат 

История видеоигр, часть 25: Boot Hill (1977)

•
•	As a 1 player game... piayer is cnaiiengeu the computer.
•	Complete player control of the Cowboys
•	Changing scenes for added interest
•	3-dimensional interior
•	Coordinated electronic Western music
•	Built-in RAM and ROM tester
•	23" monitor
•	Double 25C coin chutes
•	Adjustable

Моё правило рассматривать игровые серии без пропусков сыграло со мной злую шутку. Я вынужден писать про игру, которая, хотя и считается сиквелом, на деле -- полная копия своей предшественницы. Boot Hill -- усовершенствованная вариация более старой Western Gun. Перед нами всё та же история про двоих ковбоев, которые что-то не поделили. Игроки управляют болванчиками при помощи двух стиков: один отвечает за перемещение, второй -- за направление стрельбы. Задача -- как можно больше раз поразить соперника до истечения 90 секунд. Если оба ковбоя расстреляли свои шесть патронов, засчитывается ничья.

67
i
*
iiiil
lililí,Игры,старые игры,игровой автомат

Что отличает Boot Hill от Western Gun?

- спрайты персонажей стали чуть меньше, что повредило детализации, зато усложнило перестрелки.

- появился режим для одного игрока. Вторым ковбоем теперь может управлять компьютер.

- неразрушимая повозка присутствует на экране с самого начала. В поздних раундах она начинает ездить снизу вверх, как и в Western Gun.

- в некоторых автоматах использовалась подложка с фоновым изображением, на которую проецировалась игра.

Игры,старые игры,игровой автомат

Фото Тони Уолдрона (Tony Waldron) для Killer List of Videogames

- в игре есть музыка! Перед началом дуэли играет что-то напоминающее Эннио Морриконе, а при попадании в цель - похоронный марш.

Пожалуй, единственный примечательный факт о Boot Hill -- автомат с ней засветился в фильме Джорджа Ромеро Рассвет мертвецов.

lili
iiiii,Игры,старые игры,игровой автомат

Оригинал статьи: https://silicondarwin.blogspot.com/2017/04/boot-hill-1977.html

Развернуть

gamedev Игры Roguelike screenshotsaturday 

Beneath the Citadel v.0.17

rchive
lie of the Citadel's archives. In older times it was a treasure trove of nowedge, filled with books, ancient parchments, and arcane scrolls. Now lmost everything is destroyed by time, mold, and neglect ion.
ou see nothing of interest.
ou hear nothing but your own footsteps.
ou have

Никто не просил, но я всё-таки сделал это. Новая версия моего роуглайка/упражнения в низкоуровневом программировании/оммажа старым играм вроде Eamon выглядит намного более играбельной. Кто уже имел дело - представляет себе, что это такое. Для тех, кто не знаком: BtC - олдскульный текстовый roguelike про приключения одинокого героя в катакомбах под проклятой цитаделью. В меню - пошаговый режим, хардкор, смерти от голода, ожогов, отравления, ужаса, кровотечения, множественных переломов, мозговых паразитов, обморожений, отравлений, болезней, и многого другого! (некоторые фичи ещё не реализованы) Игра рассчитана на многочисленные неудачные забеги, выигрышная партия должна занимать 1-1,5 часа. На текущий момент запланировано 8 концовок.

ROUND RESULTS
servant husk throws a pot of flaming oil at you the pot hits you and breaks, you catch fire
Vou hit an empty space,gamedev,Игры,Roguelike,screenshotsaturday

Главные фичи версии 0.17:

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

- некоторые умения существ теперь имеют расходуемый боезапас. Например, servant husk ходит с комплектом из трёх зажигательных бомб.

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

- доступна одна из восьми концовок.

Полный список изменений как водится приложу в комментариях.

^ Bochs for Windows - Display
USER Copy
si %
Reset suspeoo Power-
Û Ô Ф
=========R0UND RESULTS======
servant husk kicks
you take 14 points of physical damage
You take a mighty suing at servant husk servant husk takes 31 points of physical damage servant husk dies
CTRL + 3rd button enables

Игра написана под самодельную ОС, так что для запуска вам будет нужен эмулятор bochs и образ дискеты с операционкой и игрой. bochs экстремально прост, но если что, я всегда готов помочь, пишите в личку.

Ссыль на bochs:

https://drive.google.com/file/d/16k2Gpr7oPSekq4rAhmtBV0IPnIteDLlE/view?usp=sharing

Ссыль на дискету:

https://drive.google.com/file/d/1GMZp_dqP8fFn1-YGgFVDo8gxM5FGlE0m/view?usp=sharing

Развернуть

Игры старые игры Atari 2600 

История видеоигр, часть 24: Star Ship (1977)

STAR SHIP
GAME PROGRAM
CX 2603,Игры,старые игры,Atari 2600


В 1977 году компания Atari выпустила свою первую игровую консоль, знаменитую Atari Video Computer System, позже переименованную в Atari 2600. Даже сейчас её незатейливые игры обладают каким-то странным очарованием. Сложно сказать, в чём тут дело. Может, в низком пороге вхождения -- у контроллера Atari 2600 всего один стик и одна кнопка -- играть можно даже мертвецки пьяным. Или в простоте визуального оформления, которая раскрепощает воображение. Star Ship Боба Уайтхеда была одной из стартовых игр. Launch titles, как их теперь называют.


Игры,старые игры,Atari 2600


Как и большинство картриджей для Atari 2600, Star Ship -- это целый набор миниигр с более-менее отличающимися правилами. Их можно разделить на четыре большие группы.

Первая, её же я бы назвал основной, это тир от первого лица. Игрок, глядя из кабины своего корабля, отстреливает летящих навстречу роботов, похожие на энтерпрайз корабли и летающие тарелки. Иногда встречаются неразрушимые астероиды, от которых надо уворачиваться. Каждый сбитый объект прибавляет очки, а каждое столкновение - вычитает. Игры этой группы различаются скоростью и числом противников.


Игры,старые игры,Atari 2600

Первый режим игры. Набиваем максимальное число очков, пока не вышло время.



Второй тип похож на первый, но без стрельбы. Здесь игроку нужно просто лететь вперёд, уворачиваясь от астероидов.

Третий режим -- дуэль для двух игроков, в которой они, поочерёдно меняясь, занимают место стрелка и цели. Стрелок, как и в других вариантах, управляет перекрестьем прицела и пытается подбить управляемый другим игроком корабль. Цель старается продержаться как можно дольше.


Игры,старые игры,Atari 2600

Третий режим. Кстати, квадратные штуки на экране -- летящие навстречу звёзды.



Четвёртый режим сильно отличается от других. Здесь игрок уже видит свой аппарат со стороны и должен посадить его на летающий по экрану астероид. Посадить -- значит успеть нажать на кнопку, пока спрайты корабля (или что это? зонд?) и астероида наложены друг на друга.


Игры,старые игры,Atari 2600


Игроки того времени приняли Star Ship прохладно, так как все миниигры показались им сложными. Чёрт его знает. На Atari 2600 есть чертовски сложные и запутанные игры, но это не одна из них.

Графически Star Ship вышла неплохой. По меркам Atari 2600, разумеется. У большинства ранних игр для неё были менее детальные спрайты. Звуковых эффектов немного и они не раздражают. Управление отзывчивое, но прицел мог бы шевелиться и чуть быстрее.

Развернуть

Игры старые игры игровой автомат обзор 

История видеоигр, часть 23: Canyon Bomber (1977)

Игры,старые игры,игровой автомат,обзор


     Canyon Bomber - простая однокнопочная (чуть не напечатал "одноклеточная") игра для одного или двух игроков. Действие происходит на одном экране, представляющем собой вид каньона в разрезе. Пространство между склонами заполнено круглыми блоками с цифрами. Игроки, пролетая над каньоном, сбрасывают бомбы, потихоньку уничтожая запас блоков. Если бомба игрока долетает до дна или стены каньона, не задев ни одного блока, это считается промахом. Три промаха -- и игрок выбывает. Побеждает игрок с большим числом очков в конце партии.


BLACK HIGH SCORE SCORE OO	OO
1 COIN PER PLAVER VOU HAVE 2 CREDITS,Игры,старые игры,игровой автомат,обзор


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


Игры,старые игры,игровой автомат,обзор


Огромный недостаток игры - её малая интерактивность. Игрок не управляет ни высотой, ни направлением, ни скоростью полёта своего транспортного средства. Он нужен только для того, чтобы нажимать на кнопку в нужное время. Откровенно говоря, всё это вызывает зевоту уже к середине первой партии.


BLACK
SCORE
223
MISSES
LEFT
1,Игры,старые игры,игровой автомат,обзор


Графическое и звуковое оформление игры на уровне для своего времени. Хотя отсутствие нормального игрового процесса, конечно, было бы здорово компенсировать картинкой выше среднего. Зато -- это игра, которая подошла бы Стивену Хокингу, когда у того остался всего один рабочий палец.


И зачем, чёрт возьми, герои бомбят этот несчастный каньон? Чтобы как-то объяснить для себя происходящее, я фантазировал, что круглые блоки -- это головы санкционного сыра, который пытались ввезти в РФ контрабандисты.


Надо бы ещё придумать шутку про леопардовую расцветку летсредств с арта наверху, но лень. Голова после игры пустая, как тот самый каньон.


Да, кстати, Canyon Bomber не имеет абсолютно никакой исторической ценности, так что я только что зря потратил ваше и своё время.


Оригинал статьи: https://silicondarwin.blogspot.com/2017/04/canyon-bomber-1977.html

Развернуть