sfw
nsfw

Результаты поиска по запросу

Дополнительные фильтры
Теги:
новый тег
Автор поста
Рейтинг поста:
-∞050100200300400+
Найдено: 61
Сортировка:

История видеоигр, часть 7: Hamurabi (1968)

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

Царь Хаммурапи, сын Син-мубаллита и внук Апиль-Сина (серьёзно), правил сорок два года (1792-1950 до н.э.). Он занимался строительством, воевал с соседями, расширил границы молодого государства Вавилонии, составил свод законов - древнейший из сохранившихся до наших времён. Появись игра о нём в наше время, в ней было бы чем заняться! Но Hamurabi (или её прототип) появилась в 1968 году.

Всё началось в 1964-66 гг., когда школьный учитель Мэйбел Аддис и программист Вильям МакКэй написали текстовый экономический симулятор для детей, который назвали The Sumerian Game. Это не был уникальный продукт, в то время уже существовало множество программ, обучающих основам экономики. The Sumerian Game не была ни самой продвинутой, ни самой популярной. Для нас она интересна тем, что вдохновила сотрудника DEC Дага Даймента в 1968 году создать свою упрощённую вариацию игры под названием King of Sumeria. Она была написана на только что разработанном его коллегой языке FORTRAN. А спустя несколько лет будущий основатель журнала Creative Computing Дэвид Аль (David H. Ahl) перевёл её на BASIC и опубликовал код сначала в книге 101 BASIC Games, а затем - в ещё более популярной BASIC Computer Games. Успех книг и языка BASIC сильно способствовали тому, что Hamurabi прижилась на многих персональных компьютерах.

THE CITY NOU OUMS 800 ACRES.
YOU HARUESTED 5 BUSHELS PER ACRE.
RATS ATE 0 BUSHELS.
YOU NOU HAUE 8405 BUSHELS IN STORE.
LAND IS TRADING AT 18 BUSHELS PER ACRE.
HOU MANY ACRES DO YOU UISH TO BUY? ZOO
HOU MANY BUSHELS DO YOU UISH TO FEED YOUR PEOPLE? 2560
HOU MANY ACRES DO YOU UISH TO PLANT

Hamurabi - это текстовый экономический симулятор, где игроку на протяжении десятилетнего срока (или десяти ходов) нужно поддерживать баланс между тремя ресурсами: зерном, людьми и землёй. Люди обрабатывают землю и потребляют зерно. Зерно нужно, чтобы кормить людей и покупать землю. Землю можно обрабатывать для получения зерна, покупать или продавать. Расклад в целом понятен, но конкретные цифры игроку никто не говорит, выяснять их приходится самостоятельно по ходу игры. Так:
- 1 человек съедает в год 20 бушелей зерна.
- 1 человек может обработать примерно 10 акров земли в год.
- С 1 акра земли можно получить, по моему опыту, от 2 до 4 бушелей зерна. Соответственно, 1    человек приносит 20-40 бушелей зерна в год. То есть, по итогам года можно получить от (число обработанных акров*2) до (число обработанных акров*4) бушелей зерна.
- Стоимость покупки\продажи земли в бушелях зерна за акр варьируется от 17 до 25.

Жизнь царя,  по версии автора игры, не перенасыщена трудами. В начале года согнувшийся в поклоне слуга называет текущие цены на землю и спрашивает, сколько акров (шумерских акров, конечно же) мы хотим купить или продать. Затем он узнаёт, сколько бушелей зерна мы соизволим скормить подданным и сколько акров повелим засеять на будущее. На этом - всё. Наше царское дело сделано, можно до конца года валять дурака, мять служанок и ездить на охоту. Разумеется, только в своём воображении, игра всё это опускает. Не всегда дела идут гладко. Часть урожая обязательно съедят крысы. Может случиться чума и выкосить половину города, а люди, не получившие зерна, умрут. Впрочем, если не морить подданных голодом, то в конце года население вырастет.

BUT YOU HAUE ONLY 55 PEOPLE TO TEND THE FIELDS! NOW THEN, HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 500
HAMURABI: I BEG TO REPORT TO YOU,
IN YEAR 11 , 0 PEOPLE STARUED, 31 CAME TO THE CITY,
POPULATION IS NOW 86
THE CITY NOW OWNS 1200 ACRES.
YOU HARUESTED 5 BUSHELS PER ACRE.
RATS ATE 0

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

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

Как всегда, ссылка на оригинальную статью.

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

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

     Depth charge в переводе на русский означает "глубинная бомба". Все себе представляют? Наполненная взрывчатым веществом ёмкость с детонатором, настроенным сработать на определённой глубине. Глубинные бомбы сбрасывались с кораблей или самолётов для борьбы с подводными лодками. Активно применялись в Мировых войнах, но сейчас постепенно выходят из употребления, уступая место более точным видам оружия. Помянуть уходящего на покой ветерана можно, поиграв в Depthcharge.

Как можно догадаться из названия, игра посвящена активному применению ГБ. Задача игрока -- управляя миноносцем, подбить как можно больше подводных лодок до истечения 90 секунд. Идея, в общем, не оригинальна: ещё год назад появилась Sea Wolf. Но есть существенное отличие: в Depthcharge корабль игрока физически присутствует на экране и может быть подорван одной выпущенных подлодками мин.

GfililE OUER
SCORE
HIGH SCORE 0000,Игры,старые игры,игровой автомат,обзор
Игра использует чёрно-белый монитор, голубой цвет
достигается за счёт накладки на экране.


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

20 TIME
SCORE
280,Игры,старые игры,игровой автомат,обзор
Всего на экране может быть до четырёх подлодок
одновременно.


На скриншотах видно, что борта лодок украшены цифрами. Это число очков, которое получит игрок за уничтожение цели. Уменьшенное изображение каждой сбитой лодки появляется в полоске у нижней границы экрана. При подсчёте в конце игры каждое из них приносит дополнительные 30 очков. Если в конце счёт игрока оказался выше 500, он получает 45 секунд дополнительного времени. Подрыв на вражеской мине, кстати, не означает конец игры, просто лишает половины очков.

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

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

В игре довольно приятное звуковое сопровождение: писк сонара и глухие звуки подводных взрывов совсем не раздражают. Графически игра недалеко ушла от той же Sea Wolf. Дисплей монохромный, анимации почти нет. Разве что сброшенные игроком глубинные бомбы уныло кувыркаются, уходя на дно.

История видеоигр, часть 10: Galaxy Game (1971)

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

 В 1971 году компьютерные игры были редкими диковинами, которые передавались от программиста программисту и кочевали из одного НИИ в другой, оставаясь неизвестными широкой публике. Было только одно исключение: Spacewar! Эта написанная в 1962 году игра стала настолько популярной, что по словам Алана Кэя цвела пышным цветом везде, где был компьютер с подключенным монитором. Её авторы не искали коммерческой выгоды, поэтому исходный код Spacewar! был доступен всем желающим. Да и невозможно было окупить игру, железо для которой стоило по тем временам 120 000$.

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

В 1966 году студент Стэнфордского университета Билл Питтс познакомился со Spacewar! на университетском PDP-6. Там же на почве любви к игре он подружился с Хью Таком. Время шло, баснословно дорогие PDP-1 (которых, кстати, было продано всего 55 штук) сменились относительно дешёвыми PDP-11 (14 000$). Глядя на быстрое удешевление компьютерной техники, Питтс, который тогда уже выпустился и работал программистом, подумал, что было бы здорово и экономически привлекательно дать возможность простым людям за символическую плату приобщиться Spacewar!

1.	POSITIVE GRAVITY
2.	SUN C& GRAVITY)
3.	SLOW SPEED
4.	TWO PLAYERS
HOVE EITHER CONTROL STICK TO INITIATE GAME.
5
GAMES LEFT
0,Игры,старые игры,обзор

PDP-11 был всё ещё слишком дорог по сравнению со стоившими около 1000$ механическими аркадными автоматами, но идея начинала выглядеть достаточно заманчивой для сборки прототипа и оценки с помощью него интереса и платёжеспособности публики. Питтс адаптировал код к PDP-11 и, объединив финансовые резервы с Таком и его семьёй, приобрёл компьютер. Производство одного игрового автомата обошлось товарищам примерно в 20 000$.
Выглядело это так: PDP-11 кабелем соединялся с деревянной консолью, снабжённой дисплеем, контроллерами для двух игроков, сиденьями и монетоприёмником. Игру переименовали в Galaxy Game и выставили в здании студенческого союза Стэнфордского университета. Из-за низкой стоимости игры (10 центов за партию) Spacewar! даже близко не отбила собственную стоимость, но парочку это не огорчало: окрылённые популярностью игры, они начали работать над улучшенной версией автомата. Вместо того, чтобы снижать затраты на производство, они решили сделать убер-лакшери-версию. Компьютер был снабжён новым графическим процессором, который мог обрабатывать до четырёх игр на разных дисплеях одновременно. Корпусы четырёх консолей выполнили из голубого плексигласа, а сам PDP-11 спрятали в одну из них, чтобы не мозолил глаза. Результат выставили в кафетерии того же здания, где стоял оригинальный автомат (правда, в урезанном 2-консольном варианте). Игроки валили валом, однако увлёкшиеся друзья к тому времени потратили на своё детище более 65 000$ и потеряли даже малейший шанс вернуть вложенное, как и возможность развивать проект дальше.

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

Автомат стоял на своём месте до тех пор, пока не вышел из строя графический процессор. Сейчас он в добром здравии и установлен в Музее Истории Компьютера в Калифорнии.

А что же насчёт самой игры? Она почти не отличалась от оригинала. Добавились опции включения\выключения центральной звезды и гравитации, настройка скорости, выбор режима для одного или двух игроков и возможность включить "отрицательную" гравитацию, при которой крабли игроков не притягивались к звезде, а отталкивались от неё. Всё те же два звездолёта, "Игла" и "Клин", сражались на фоне чёрно-белого космоса, маневрируя в гравитационном колодце местного солнца и уворачиваясь от пущенных друг в друга торпед. Игровые принципы и управление остались без изменений. Крутя джойстик, игрок направлял корабль в нужную сторону и при помощи специальной кнопки придавал ему ускорение. Ещё две кнопки отвечали за пуск торпед и прыжок в гиперпространство, который переносил корабль игрока в случайную точку на экране, но мог привести к взрыву. Игровая партия длилась до тех пор, пока один из игроков не нарывался на торпеду или не терял весь запас топлива.

История видеоигр, часть 11: Computer Space (1971)

COMPUTER
SPACE
NA-2010,Игры,старые игры,обзор

Идея реализовать коммерческий потенциал игры Spacewar! захватила умы не только лишь авторов Galaxy Game. Мало кто мог ей противостоять. Вот и Нолан Бушнел со своим товарищем Тедом Дабни, видя, как компьютеры входят в доступный им ценовой сегмент, загорелись нажиться на популярности чужого творения. Парочка оформилась как Syzygy Engineering и работа закипела.

*»» f.A«,Игры,старые игры,обзор
Сегодня конверсия игры за авторством Майка О'Мэйли доступна здесь.

Первоначальным планом было портировать игру на популярный миникомпьютер Data General Nova. Предполагалось, что компьютер будет контролировать несколько параллельных игр на подключенных к нему консолях, однако, оказалось, что маломощный DGN не тянет даже одну. Попытки разгрузить процессор, переложив просчёт звёздного фона на специализированный ускоритель не помогли, и на некоторое время проект был заброшен.

,Игры,старые игры,обзор
Нолан Бушнел, 2013 год.

Упорный Бушнел не смог выбросить идею из головы и придумал следующий ход: исключить из уравнения компьютер и собрать автомат целиком из специализированных контуров, отвечающих за разные аспекты геймплея и графики. Это не только позволило бы реализовать наконец игру, но и сильно удешевило бы производство. План удался частично: состоящий из праха и палок аппарат не поддерживал сеансы параллельной игры, режим для двух игроков, и не мог просчитывать гравитацию звезды в центре экрана. Отсюда выросли изменения в геймплее, благодаря которым опознать в Computer Space клон Spacewar! стало сложно. Корабль игрока лишился шкалы топлива и функции прыжка в гиперпространство, а вместо второго игрока появились два управляемых программой НЛО. Управлялась, строго говоря, одна, а вторая просто находилась на некотором расстоянии от первой и повторяла её движения. Время от времени то одна, то другая тарелка делали случайный выстрел в ту четверть экрана, где находился корабль игрока. Был введён таймер, по окончании которого подсчитывались очки игрока и компьютерного оппонента (наследие мультиплеера). Побеждал тот, кто за отведённое время успевал сбить противника большее число раз. Разработчики даже добавили в игру звуковое сопровождение, настолько высокочастотное, что уши игроков наверняка кровоточили.

■л H CAW,Игры,старые игры,обзор

Основанная в январе 1971-го Syzygy Engineering имела в активе 350 долларов и штат в два человека. Счастливый случай свёл Нолана с человеком из Nutting Associates, которым, как оказалось, позарез нужна была хитовая игра. Компания разглядела в проекте потенциал и Syzygy были предоставлены помещение и мощности для запуска производства. Тесты игры в публичных местах были успешными.

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

Как бы то ни было, Computer Space имела успех и обозначила начало эры коммерческих видеоигр. Бушнел и Дабни покинули Nutting Associates и продолжили игровую карьеру, переименовавшись из Syzygy в Atari. Моей первой приставкой, кстати, была Atar 2600. Родители подарили, кажется, на день рождения. Забавно, что всё детство мне не давал покоя слот для картриджей: ни одного из них я вживую так и не увидел.

т*»г cam,Игры,старые игры,обзор

История видеоигр, часть 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, если снаряд задел корабль по касательной, последний может лишиться нескольких деталей и потерять в скорости и манёвренности, но продолжить бой. Стоит, кстати, отметить красивый эффект разрушения кораблей на тучу векторных обломков, разлетающихся во все стороны. Ещё одно заметное новшество -- пролетающие время от времени по экрану астероиды.
Интересно, что, кинув в автомат четвертак, игроки покупали не отдельный раунд или несколько, а фиксированное время, в течение которого могли играть без ограничений.

История видеоигр, часть 36: Gee Bee (1978)

,старые игры,игровой автомат,namco,Игры
Будущий отец пакмана Тору Иватани, устроившись в Namco, собирался проектировать для компании механические пинбольные автоматы. Руководство компании, однако, уже вкусило прибылей от продажи чужих видеоигр и решило, что пора открывать собственное производство. Так Иватани удостоился создать первую видеоигру Namco. Очевидно, мысли о металлических шариках не отпускали молодого гения, потому что получившаяся Gee Bee выглядела как плод любви пинбола и Breakout.
IUP OOOOO ZUP ooooo
à	h
CREDIT O BALL 3,старые игры,игровой автомат,namco,Игры

От первого она получила замысловатый игровой стол с бамперами и мишенями, а от второго - ряды разрушаемых прямоугольных блоков и движущуюся влево-вправо платформу вместо традиционных для пинбола "створок". Игрок управлял ею, поворачивая круглую рукоятку.
HIGH SCORE
02250
o
► «
1
<¡>0000
BONUS 2000 X 1,старые игры,игровой автомат,namco,Игры

В автоматах Gee Bee использовались чёрно-белые дисплеи, поверх которых клеились цветные целлофановые оверлеи. Да, в тёмном 1978 году это было обычной практикой. Помимо сомнительного эстетического эффекта это ещё и мешало игроку считывать положение шарика, так как он менял цвет, пролетая через разные области экрана.

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

Вот такая она была, первая игра Namco. Остался один вопрос: при чём здесь пчела?

История видеоигр, часть 31: Street Racer (1977)

k Warne* Communicaiions Company
STREET RACER
GAME PROGRAM "
winery STREET RACER '-SLALOM-y #DODGEM'-JET SHOOTER •
# GAM E5 NUMBER CRUNCHER™ • SCOOP BALL™,старые игры,Atari 2600,гонки

Чего бы вы ждали от игры с названием Street Racer? Тюнингованных тачек с хромированными дисками? Адреналиновых заездов по брызжущим неоном ночным улицам? Лихих заносов и воя полицейских сирен за спиной? А вот вам:
,старые игры,Atari 2600,гонки
Street Racer - одна из девяти стартовых игр для Atari 2600 (в девичестве Atari VCS). Как удручённо признал сам автор, Ларри Каплан, программа слабо использовала возможности системы. Так, например, он не смог реализовать эффект уплывающей назад трассы, благодаря чему Street Racer -- единственная в мире гоночная игра с нулевым ощущением динамики. Спрайты машин и препятствий тоже не претендуют, даже по меркам Atari 2600. Зато, как это часто бывало на Atari 2600, Street Racer -- это целый набор игр с немного различающимися правилами и сложностью, всего 27 штук. Все их можно разделить на шесть больших групп.
Street Racer
Титульная игра, в которой вам надо уклоняться от вылетающих навстречу соперников. Похожи ли машинки на скриншоте на автомобили, которые можно встретить на улицах города? Чёрта с два. Скорее это формульные болиды. Но при чём тогда здесь стритрейсинг?
,старые игры,Atari 2600,гонки

Slalom
Вместо гоночной трассы теперь (предположительно) горный склон, перегороженный стенами с узкими воротами, в которые вам предстоит ужом проскальзывать.
013101310131013101310131013101310131013101310131013101000131,старые игры,Atari 2600,гонки

Dodgem
Дурацкая вариация, в которой машина игрока не фиксирована в нижней части поля, а раз за разом проезжает весь экран снизу вверх, уворачиваясь от некоего ромбовидного объекта.
,старые игры,Atari 2600,гонки

Jet Shooter
Смехотворная пародия на шутер, где игрок управляет самолётом и отстреливает летящих ему навстречу врагов. Несостоятельным в геймплейном смысле его делает то, что игрок может выпустить только один снаряд, и если тот прошёл мимо, то придётся ждать, пока он не скроется за горизонтом. А летит он, поверьте, медленно.
,старые игры,Atari 2600,гонки

Number Cruncher
Странным образом, этот вариант оказался довольно приятным. Вместо того, чтобы уворачиваться от чего-то, здесь игроку нужно ловить летящие на него цифры, зарабатывая очки. Ловить, впрочем, надо аккуратно -- сталкиваться с цифрами можно только фронтально, иначе -- ДТП.
,старые игры,Atari 2600,гонки

Scoop Ball
Scoop Ball сажает игрока за руль чего-то типа скоростного бульдозера, снабжённого ковшом, которым нужно подбирать на трассе знаки "+", в то же время уворачиваясь от бульдозеристов-конкурентов.
,старые игры,Atari 2600,гонки

В целом, учитывая молодость системы, тогда игра вышла не полной катастрофой. Но в наши дни удовольствия от неё вы не получите. Графика и звук -- чуть получше, чем в Miniature Golf, анимация спрайтов отсутствует, а главное -- это одна из очень немногих гоночных игр, во время которых можно уснуть от скуки. И она не имеет никакого отношения к стритрейсингу.

Олдфажного геймдева пост номер 4

ROUND RESULTS
drake ling breathes fire
you take 26 points of heat damage
rotten beast attacks you
you take 16 points of physical damage
With a lion's roar you hack empty space,геймдев,Игры,Roguelike,дневники разработчиков,олдфаги поймут
ROUND RESULTS
drakeling takes a running start and rams into you you take 6 points of physical damage
rotten beast sprays noxious vomit but misses
dog skeleton attacks you
you take 8 points of physical damage
You hack furiously at dog skeleton
dog skeleton takes 38 points of physical damage

И опять времени для работы над игрой выдалось очень мало. Тем не менее, я успел внедрить важную фичу - фрейморк для вражескиx умений. Так, rotten beast теперь травит игрока, а drakeling дышит огнём.

В этот раз выкладываю для желающих образ дискеты. Запустить можно через эмулятор bochs. Он простой, но если нужны инструкции, можете писнуть в комменты или личку. Запустив операционку, набираете dng и жмёте enter - вуаля, игра запустилась. Игра готова на очень небольшой процент, так что делать там сейчас в общем нечего кроме xождения по карте, сбора шмоток и сражений с живностью, но если кому любопытно - пжлст.

Урок ОСдева №4: работа с RAM, адресация в 16-битном режиме, регистры процессора.

Поздравим себя. В прошлый раз мы добавили блок параметров BIOS, после чего винда перестала
ругаться на дискету. Пора начинать писать загрузчик. Но перед этим надо подробнее
разобраться в специфике программирования на ассемблере. Всё-таки он сильно отличается от языков
высокого уровня. Давайте вспомним, как выглядела программа в конце прошлого поста.

.386p
CSEG segment use16
ASSUME cs:CSEG, ds:CSEG, es:CSEG, fs:CSEG, gs:CSEG, ss:CSEG

begin:            jmp short execute                   ;Точка входа. Перейти к исполняемой части.
                     nop                                       ;Пустой оператор. Заполняет 3-й байт перед BPB.

;БЛОК ПАРАМЕТРОВ BIOS===================================================================;
;=======================================;
;Блок параметров BIOS, 33 байта.
;Здесь хранятся характеристики
;носителя. Должен быть в 3-х байтах
;от начала загрузочного сектора.
;=======================================;
BPB_OEMname    db 'BOOTDISK'    ;0-7. Имя производителя. Может быть любым.
BPB_bytespersec  dw 512              ;8-9. Размер сектора в байтаx.
BPB_secperclust   db 1                  ;10. Количество секторов в кластере.
BPB_reserved      dw 1                  ;11-12. Число зарезервированныx секторов (1, загрузочный).
BPB_numFATs     db 2                   ;13. Число FAT.
BPB_RDentries    dw 224               ;14-15. Число записей Корневой Директории.
BPB_sectotal       dw 2880             ;16-17. Всего секторов на носителе.
BPB_mediatype   db 0F0h              ;18. Тип носителя. 0F0 - 3,5-дюймовая дискета с 18 секторами в дорожке.
BPB_FATsize       dw 9                   ;19-20. Размер FAT в сектораx.
BPB_secpertrack dw 18                  ;21-22. Число секторов в дорожке.
BPB_numheads   dw 2                   ;23-24. Число головок (поверxностей).
BPB_hiddensec    dd 0                  ;25-28. Число скрытыx секторов перед загрузочным.
BPB_sectotal32    dd 0                  ;29-32. Число секторов, если иx больше 65535.

;===============================================;
;Расширенный блок параметров BIOS, 26 байт.
;Этот раздел используется в DOS 4.0.
;===============================================;
EBPB_drivenum   db 0                       ;0. Номер привода.
EBPB_NTflags      db 0                      ;1. Флаги в Windows NT. Бит 0 - флаг необxодимости проверки диска.
EBPB_extsign      db 29h                   ;2. Признак расшренного BPB по версии DOS 4.0.
EBPB_volID         dd 0                      ;3-6. "Серийный номер". Любое случайное число или ноль, без разницы.
EBPB_vollabel     db 'BOOTLOADER '  ;7-17. Название диска. Устарело.
EBPB_filesys       db 'FAT12   '           ;18-25. Имя файловой системы.



;ИСПОЛНЯЕМЫЙ БЛОК=====================================================================;
execute:                     cli
                                 hlt

           org 1FEh                              ;Заполняет память нулями до 511-го байта.
           dw 0AA55h                           ;Байты 511 и 512. Признак загрузочного сектора.
CSEG ends
end begin

Я снабдил всё подробными комментариями. Надеюсь, они помогут вам освежить память. Вкратце -
после запуска программы процессор выполняет переход к метке execute - и после этого останавливается
командами cli и hlt. Давайте добавим следующий код после execute, а потом разберём его.

execute:             mov ax,07C0h
                         mov ds,ax
                         mov es,ax
                         mov fs,ax
                         mov gs,ax

                         cli
                         mov ss,ax
                         mov sp,0FFFFh
                         sti

                         push ax
                         mov ax,offset stop
                         and ax,03FFh
                         push ax
                         retf

stop:                  cli
                         hlt

           org 1FEh                                     ;Заполняет память нулями до 511-го байта.
           dw 0AA55h                                  ;Байты 511 и 512. Признак загрузочного сектора.

Целая куча новых команд. Для того, чтобы их понять, придётся освоиться с новыми понятиями.

Регистр - ячейка памяти процессора, которая может выполнять какую-то конкретную задачу
или иметь общее назначение. Программируя на ассемблере, вы постоянно будете оперировать
регистрами: помещать в них данные, извлекать, модифицировать и т.д. В 16-битном режиме
процессор использует следующий набор регистров: AX, BX, CX, DX, SI, DI, BP, SP, flags, CS, DS, ES,
FS, GS, SS. С функциями каждого из них будем разбираться по мере надобности.

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

Постараюсь объяснить. 16-битная разрядность процессора подразумевает, что за раз он может обработать
16 бит данных. Максимальное значение, которое можно передать 16 битами - 65535. Это ограничение
касается и адресации памяти. Выходит, процессору доступно всего (65536/1024) 64 килобайта RAM. Чтобы
обойти это ограничение, была придумана модель адресации segment:offset. Сегмент в ней - это базовый адрес,
от которого считается смещение. Регистры процессора CS, DS, ES, FS, GS и SS - сегментные. Они используются
для указания адреса в памяти, от какого отсчитывается смещение. Например, DS:0050h означает байт 0050h
от значения, помещённого в DS. Вернее, от значения в DS*16. Это называется гранулярностью. Единица,
помещённая в регистр DS, устанавливает основание сегмента не в 1-й байт, а в 16-й. За счёт этого нам
становится доступен целый мегабайт оперативной памяти! (или даже больше с некоторыми ухищрениями,
но рассказывать о них я большого смысла не вижу, т.к. мы всё равно скоро покинем 16-битное царство)

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

Команда mov op1,op2 используется для того, чтобы переместить значение op2 в op1. В качестве
операнда op1 может выступать адрес ячейки памяти или регистр. В качестве op2 может быть ячейка
памяти, регистр или конкретное значение. Есть два ограничения: операнды должны совпадать по
разрядности (нельзя поместить содержимое 16-битного регистра в 32-битный, например) и в качестве
обоих операндов не могут быть адреса в памяти. Так что делает этот код?

mov ax,07C0h
mov ds,ax
mov es,ax
mov fs,ax
mov gs,ax

Правильно, он помещает значение 07С0h в регистр AX,  потом копирует AX в сегментные регистры
DS, ES, FS и GS. Зачем? Затем, что BIOS копирует загрузочный сектор в 07С0h:0000h. Так как
наш загрузчик находится по этому адресу, будет правильным установить значения сегментных регистров
так, чтобы они указывали туда же. По какой-то причине (ей-богу не помню!) присваивать значения
сегментным регистрам напрямую нельзя, но можно через другой регистр - поэтому сначала мы загружаем
его в AX, а уже AX копируем в сегментные регистры. Вы наверое уже обратили внимание, что сегментные
регистры здесь не все. Для модификации оставшихся надо немного поплясать с бубном.

cli
mov ss,ax
mov sp,0FFFFh
sti

Что происходит здесь? Пара команд cli и sti запрещает и разрешает прерывания. Прерывания - то, при помощи
чего разные устройства в компьютере общаются с процессором. Они могут поступать от таймеров, дисковых
контроллеров и из множества других источников. Позже мы ещё поговорим о них подробно, а сейчас достаточно
знать, что команда cli вешает на процессор знак "не беспокоить". sti, соответственно, его снимает.
Дело в том, что SS - это сегментный регистр стека. При манипуляциях с ним лучше убедиться, что в
неподходящий момент не произойдёт переключение задачи. Обратите внимание: сегмент стека у нас там же,
где и загрузчик. Получается, помещая данные в стек, мы затрём часть собственного кода? Нет. Позиция стека
передаётся парой регистров SS:SP. SS - сегмент, а SP - смещение. mov sp, 0FFFFh устанавливает начало
стека в конец сегмента. Получается, ему некуда расти? Тоже нет. Стек растёт в обратном направлении.
Если мы командой push отправим в стек 16-битное слово, то указатель изменит значение на 0FFFDh. Таким
образом, загрузчик и стек находятся в разных концах 64-килобайтного сегмента, и расстояние между ними
вполне приличное.

push ax
mov ax,offset stop
and ax,03FFh
push ax
retf

Соберитесь, последний на сегодня кусок кода. Здесь мы модифицируем сегментный регистр кода, CS. К нему
тоже нужен особый подход. Кстати, самое время поговорить о том, как процессор узнаёт, какую команду выполнять
следующей. Как и в случае стека, существует указатель в виде пары регистров CS:IP. Каждый раз после
считывания из памяти инструкции IP увеличивается на её размер в байтах. Все модели BIOS помещают загрузчик
в 07C0h:0000h, но вот состояние CS:IP может быть разным: например, 07C0h:0000h и 0000h:7C00h указывают на
один и тот же байт в памяти, но во втором случае у нас могут быть проблемы. В каком именно состоянии
оказались регистры CS:IP при старте загрузчика, мы не знаем, поэтому лучше перестраховаться и установить
своё значение.

Как установить значение CS:IP? Например, при помощи инструкции дальнего возврата retf. Обычно она
используется для возврата из процедур, но подойдёт и нам, так кк делает именно то, что нужно: меняет
значения CS:IP. Сегмент и смещение для возврата должны быть в стеке. В AX у нас значение сегмента, 07C0h,
так что командой push отправляем его в стек. А вот с IP придётся повозиться. Щас объясню. CS в данный момент
может быть установлен либо в 07C0h, либо в 0000h. Значит, любое считанное нами смещение относительно его
начала будет равно или X или X+7C00h. Нам нужно однозначно привести его к X. Как это сделать? Команда
mov AX,offset stop помещает в AX смещение метки stop (то есть, конечно, команды cli, сами метки
в исполняемом файле физически не присутствуют и места не занимают). 7С00h, если его перевести в
двоичный вид, будет равно 111110000000000b. Соответственно, искомый X помещается в восьми нулях в начале
значения.  обнуление старших пяти единиц будет эквивалентно уменьшению значения на 7С00h, что нам и нужно.
Про логические операции поговорим позже, но пока знайте, что команда and AX,03FFh делает как раз это:
обнуляет все старшие разряды AX, начиная с первой единицы в 111110000000000b. 03FFh, кстати, в
двоичном виде будет выглядеть так: 1111111111b. Заметили связь? В общем, если кто-то не разбирается в
логических операциях, то ДЗ на сегодня - просветиться по этой теме.

Фух, чёрт возьми, на сегодня всё! Теперь наш загрузчик будет работать в предсказуемой среде, что сэкономит
нам море усилий.

Мысли о Джокере

,Фильмы,Джокер (фильм),Joker (фильм),,мнение,песочница

С утра под кофеёк почему-то начал думать про фильм "Джокер". И вот до чего додумался: свою волну хайпа фильм получил не вполне заслуженно. Да, фильм хорош. История про маленького человека и его тяжёлую жизнь - это всегда трогает. Феникс великолепен, он один тащит на себе всю картину до такой степени, что я бы назвал "Джокер" фильмом одного актёра.

И всё-таки вот эти льющиеся отовсюду новости про первый фильм по комиксу, получивший приз на серьёзном кинофестивале. Серьёзно? "Хранители" - это фильм по комиксу. Его история намертво завязана на вселенной и персонажах графического романа. А вот если мы перенесём действие "Джокера" из Готэма в какой-нибудь Детройт, назовём героя Паяцем, Фигляром или Клоуном - что-нибудь изменится? Нет. Я не эксперт по комиксам про Бэтмена, но, кажется, никакой драматической предыстории и глубины у персонажа Джокера там не было. По крайней мере, в старых. Отвлёкся, к чему я? К тому, что идея связать белыми нитками драму про то, как забитый жизнью доходяга слетел с катушек, и комиксы про Бэтмена - выглядит как дешёвый пиар-ход, на который все купились. Тред, гоу.
Здесь мы собираем самые интересные картинки, арты, комиксы, мемасики по теме (+61 постов - )