Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Веселая аркада с Печенькой для новогоднего настроения. Объезжайте препятствия, а подарки, варежки, конфеты и прочие приятности не объезжайте: они помогут набрать очки и установить новый рекорд.

Сноуборд

Спорт, Аркады, На ловкость

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

90-е + Программирование

С этим тегом используют

Ностальгия Детство 90-х Детство YouTube Воспоминания Мат Волна постов IT Программист IT юмор Разработка Python Картинка с текстом Юмор Все
19 постов сначала свежее
1221
odisseylaertov
odisseylaertov
4 месяца назад

Вращающийся монохромный монитор с кинескопом RADIUS PIVOT 14", 1991 г⁠⁠

Монитор Компьютер 90-е Раритет Кинескоп Вертикальное видео Программирование Элт Windows Видео Короткие видео
193
0
8088
8088
5 месяцев назад
Лига программистов
Серия АйТи на удаленке

7:00 утра 7 января⁠⁠

7 января проснулся в 7:00.

Решил разобраться с движком Phaser.js и PyGame.

Нашел хороший туториал, поставил npm. Позапускал игры локально на 8080. Установил node.js. Сделал автоперенос с dist в public, после сборки игры. Запустил на node.js.

Поменял чуть игры. Добавил жизни герою вот тут.

Поиграл в игры в examples.

Потом запустил PyGame по этому описанию.

Сам сайт pygame лежит. Собрал локальную игру, где шарик отбивать.

7:00 утра 7 января Программирование, Ретро-игры, Удаленная работа, IT, Программист, Разработка, Дневник, Истории из жизни, Жизненно, Жизнь, Карьера, Telegram (ссылка), Опыт, Фриланс, Успех, Отдел кадров, Поиск работы, Личный опыт, Собеседование, 90-е

PyGame лежит

Зачем я все это делал? :) Я ведь уже 15 лет формально не пишу код на своей удаленке? Если бы еще до 9 января покопался - написал бы свою мини игру. Потратил бы пару месяцев, стал бы гуру в PyGame и Phaser.js. Разработка игр манит, 50 идей лежат, ждут своего часа. Но кончено я бы делал большинство игр не в PyGame, и не в Phaser.js. Unity скорее всего, там тоже пару проектов лежит начатых, включая мобильную на Android.

Любой, кто потратит 2-3 месяца на реальную разработку, например, игр на любом движке, станет как минимум Junior разработчиком. Тем более это очень интересно — игры разрабатывать. А потом, еще полгода практики, и тебя уже берут в корпорацию на сто тыщ. Писать, конечно, придется более скучный код, хотя задачи там бывают очень сложные — а значит, интересные.

Обожаю писать код, но руководить людьми получается лучше. Короче ладно, вернусь к своим делам - руководить ИТ и вести свое ламповое комьюнити по Python.

Еще DOOM очень люблю, в свое время (90е) тянули коаксиальный кабель между соседними многоэтажками, только для того, чтобы рубится по выделенке в DOOM. Были Arcnet на 2Mbit, пробивали на 300 метров по хорошему кабелю. Настраивали Unix роутеры, на каждом доме на 192.168.X.Y.

На модемах было только 14400, и маме мешали - занимали телефон. Во мотивация была :-) Сейчас все намного доступнее - кодь, поднимай сервера, изучай любые штуки, а потом тебя за много тыщ заберут работать.

Самому приходится по 50-100 человек перебирать, чтобы нанять подходящего, и по soft, и по hard skills. 80% отпадают по hard skills, не могут написать простой код на 20 строчек.

Всех с Рождеством, наступившым 2025, и Всем Добра!

Показать полностью
[моё] Программирование Ретро-игры Удаленная работа IT Программист Разработка Дневник Истории из жизни Жизненно Жизнь Карьера Telegram (ссылка) Опыт Фриланс Успех Отдел кадров Поиск работы Личный опыт Собеседование 90-е
7
7
TechSavvyZone
TechSavvyZone
7 месяцев назад

Ностальгия: Запуск в MSDos Borland Turbo C 2.01 на HP 200LX⁠⁠

Ностальгия IT Компьютер Компьютерное железо Раритет Технологии 90-е Программирование DOS Программа Hewlett Packard Вертикальное видео Видео
1
Партнёрский материал Реклама
specials
specials

А сколько у вас?⁠⁠

Вы когда-нибудь считали, сколько экономите с вашим кешбэком и скидками? Предлагаем провести небольшие вычисления (потому что считать выгоду всегда приятно).

Реклама Реклама. ПАО «Банк ВТБ», ИНН: 7702070139

Калькулятор Выгода
24
IceLifeSun
IceLifeSun
1 год назад

ИСТОРИЯ КРАХА SEGA⁠⁠

После успеха в начале 90-ых компании сулили славное будущее, но потом кое-что пошло не так —  Sega 32X, Saturn и Dreamcast провалились.

ИСТОРИЯ КРАХА SEGA Sega, Sega Mega Drive, Консоли, Консольные игры, Playstation, Nintendo, Игровая приставка, Истории из жизни, Мир, Компания, Техника, Конкуренция, Программирование, 90-е, Ежик Соник, Фотография, YouTube, Электроника, Изобретения, Видео, Длиннопост, YouTube (ссылка)

За 5-6 лет компания, подарившая нам детство, деградировала, а в 2001-ом и вовсе прекратила производство консолей, ушла в тень и стала разработчиком и издателем игр.

Почему так произошло? С чем компания, перевернувшая видео игровую индустрию, так и не смогла справиться? Почему рухнул многомиллиардный бизнес Сега? И почему нет ни единого шанса, что Sega сделает новую консоль

История краха Sega (youtube.com)

Можно ли оказать сопротивление и вступить в яростную конкуренцию с компанией, которой принадлежит 90 % рынка? Можно ли рассчитывать на победу? Как и любые другие знаменитые противостояния конкурентов, вроде Apple и Microsoft, Pepsi и Coca Cola, яростная вражда между Sega и Nintendo выявила все лучшие (и худшие) качества каждой компании, попутно изменив пейзаж развлекательного сектора.

Sega, небольшая, агрессивная видеоигровая компания под предводительством необычного визионера и команды бунтарей выступила против могущественной Nintendo, попутно произведя революцию в индустрии видеоигр.

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

Противостояние маленькой Sega и монополиста Nintendo — самая фантастическая из этих историй.

Название компании SEGA — это аббревиатура от «Service Games».

Компания Sega была основана 3 июня 1960 года американскими бизнесменами Мартином Бромли и Ричардом Стюартом под названием Nihon Goraku Bussan. Вскоре после этого компания приобрела активы своего предшественника, фирмы Service Games of Japan. Пять лет спустя после приобретения компании Rosen Enterprises, импортера аркадных игр, она стала называться Sega Enterprises, Ltd.

ИСТОРИЯ КРАХА SEGA Sega, Sega Mega Drive, Консоли, Консольные игры, Playstation, Nintendo, Игровая приставка, Истории из жизни, Мир, Компания, Техника, Конкуренция, Программирование, 90-е, Ежик Соник, Фотография, YouTube, Электроника, Изобретения, Видео, Длиннопост, YouTube (ссылка)

В 1966 году Sega представила игровой автомат, моментально ставший хитом - Periscope, известный позднее в СССР как «Морской бой». Игра была настолько популярна, что компания сразу начала экспортировать ее в Америку и другие страны.

В игре использовались световые и звуковые эффекты, считающиеся инновационными, и она была успешной в Японии. Этот игровой автомат экспортировался в Европу и США и размещался в торговых центрах и универмагах. Игра стоила 25 центов в Соединенных Штатах. Sega была удивлена ??успехом, и в течение следующих двух лет производила и экспортировала от восьми до десяти игр в год.  В 1969 году большая часть компании переехала из Японии в США.

ИСТОРИЯ КРАХА SEGA Sega, Sega Mega Drive, Консоли, Консольные игры, Playstation, Nintendo, Игровая приставка, Истории из жизни, Мир, Компания, Техника, Конкуренция, Программирование, 90-е, Ежик Соник, Фотография, YouTube, Электроника, Изобретения, Видео, Длиннопост, YouTube (ссылка)

В 1973 году Sega выпустила свою первую видеоигру Pong-Tron.

Несмотря на конкуренцию со стороны популярной аркадной игры Space Invaders в 1978 году, Sega процветала. В США в конце 1970-ых был бум аркадных игр. К 1979 году доход компании достиг более 100 миллионов долларов. В течение этого периода Sega приобрела  компанию Gremlin Industries, производитель микропроцессорных аркадных игр.

В 1979 году Sega также приобрела Esco Boueki (Esco Trading), основанную и принадлежащую Хаяо Накаяме. Это привело Накаяму в компанию, где он был назначен ответственным за японские операции Sega.

В начале 1980-х Sega была одним из пяти ведущих производителей аркадных игр в Соединенных Штатах, доходы компании выросли до 214 миллионов долларов.

В 1979 году SEGA выпустила игру Head On, в котором был представлен игровой процесс «съешь точки», который позже Namco использовал в легендарной игре Pac-Man.

В 1981 году Sega лицензировала и выпустила игру Frogger, свою самую успешную игру в то время. В 1982 году Sega представила первую игру с изометрической графикой Zaxxon.

Спад на рынке аркадных игр, начавшийся в 1982 году, нанёс серьезный ущерб Sega, вынудив компанию Gulf and Western продать свой североамериканский игровой актив и лицензионные права на свои аркадные игры компании Bally Manufacturing.

Компания сохранила североамериканскую компанию Sega, занимающуюся исследованиями и разработками, и ее японское дочернее предприятие Sega Enterprises, Ltd. В связи с упадком аркадного бизнеса президент Sega Enterprises, Ltd. Накаяма выступил за то, чтобы компания использовала свой опыт в области аппаратного обеспечения для продвижения в Рынок домашних консолей в Японии, который находился в зачаточном состоянии в то время. Это привело к разработке Sega компьютера SC-3000.

ИСТОРИЯ КРАХА SEGA Sega, Sega Mega Drive, Консоли, Консольные игры, Playstation, Nintendo, Игровая приставка, Истории из жизни, Мир, Компания, Техника, Конкуренция, Программирование, 90-е, Ежик Соник, Фотография, YouTube, Электроника, Изобретения, Видео, Длиннопост, YouTube (ссылка)

Узнав, что Nintendo разрабатывает игровую консоль, Sega разработала и выпустила свою первую домашнюю игровую систему SG-1000 вместе с SC-3000. Ребрендинговые версии были выпущены на нескольких других рынках по всему миру.

В 1983 году SEGA продала около 160 тысяч консолей SG-1000. Однако, к 1984 году продажи консоли Famicom начали опережать продажи SG-1000, отчасти потому, что Nintendo расширила свою библиотеку игр, привлекая сторонних разработчиков, в то время как Sega не решалась сотрудничать с компаниями, с которыми она конкурировали в аркадах

SEGA против Nintendo. Консольные Войны 90-ых - YouTube

В 1984 году, вскоре после запуска SG-1000 Хаяо Накаяма и Дэвид Розен, при финансовой поддержке корпорации CSK, организовали выкуп японской дочерней компании. Японские активы Sega были куплены за 38 миллионов долларов группой инвесторов во главе с Розеном и Накаямой. Исао Окава, президент корпорации CSK, стал председателем компанией, в то время как Накаяма был назначен генеральным директором Sega Enterprises, Ltd.

Sega начала работать над консолью Mark III в Японии в 1985 году. Mark III была переработанной версией SG-100, разработанной той же командой.

ИСТОРИЯ КРАХА SEGA Sega, Sega Mega Drive, Консоли, Консольные игры, Playstation, Nintendo, Игровая приставка, Истории из жизни, Мир, Компания, Техника, Конкуренция, Программирование, 90-е, Ежик Соник, Фотография, YouTube, Электроника, Изобретения, Видео, Длиннопост, YouTube (ссылка)

Для выпуска в Северной Америке Sega переименовала консоль Mark III в Master System.

Mark III поступила в продажу в Японии в октябре 1985 года по цене 15 000 иен. Несмотря на более начинку, чем у  консоли Famicom, Mark III потерпела неудачу при запуске. Поскольку Nintendo требовала от сторонних разработчиков не публиковать игры , выпущенные для Famicom на других консолях, Sega разработала свои собственные игры и получила права на портирование игр от других разработчиков, но они плохо продавались.

Продажи Master System в Соединенных Штатах были затруднены из-за неэффективного маркетинга. К началу 1992 года производство консоли Master System прекратилось в Северной Америке. К тому моменту было продано от 1,5 до 2 миллионов единиц. Тем не менее, консоль Master System в конечном итоге была успешной в Европе. К 1993 году там было продано более 6 миллионов консолей.

ИСТОРИЯ КРАХА SEGA Sega, Sega Mega Drive, Консоли, Консольные игры, Playstation, Nintendo, Игровая приставка, Истории из жизни, Мир, Компания, Техника, Конкуренция, Программирование, 90-е, Ежик Соник, Фотография, YouTube, Электроника, Изобретения, Видео, Длиннопост, YouTube (ссылка)

29 октября 1988 года в Японии Sega выпустила преемника Master System - игровую приставку Mega Drive.

Но продажи были не очень большими, за первый год было продано всего 400 тысяч консолей. Для запуска консоли в Северной Америке, где она была переименована в Genesis, у Sega не было партнера по продажам и маркетингу. После того, как Atari отклонила предложение о продаже консоли в регионе, Sega запустила продажи Genesis через свою дочернюю компанию Sega of America.

Продажа новой приставки Genesis была запущена 14 августа 1989 года. Европейская версия Mega Drive была выпущена в сентябре 1990 года.

Sega против Nintendo (Как создатели Соника завоевали рынок домашних консолей) - YouTube

Для североамериканского рынка, где консоль была переименована в Genesis, бывший исполнительный директор Atari и новый исполнительный директор Sega of America Майкл Кац разработал двухэтапный подход к продажам. Первая часть включала в себя маркетинговую кампанию, чтобы бросить вызов Nintendo и подчеркнуть, что у SEGA был более богатый аркадный опыт, который был вложен в Genesis. Вторая часть плана включала создание библиотеки узнаваемых игр, в которой использовались имена и сходства знаменитостей и спортсменов.

Тем не менее, компании SEGA было трудно преодолеть повсеместное распространение Nintendo в домах. За первый год продаж в США продали только 500 тысяч приставок.

ИСТОРИЯ КРАХА SEGA Sega, Sega Mega Drive, Консоли, Консольные игры, Playstation, Nintendo, Игровая приставка, Истории из жизни, Мир, Компания, Техника, Конкуренция, Программирование, 90-е, Ежик Соник, Фотография, YouTube, Электроника, Изобретения, Видео, Длиннопост, YouTube (ссылка)

SEGA искала своего флагманского персонажа, который смог бы конкурировать c Mario от Nintendo. Художник Наото Охима разработал ежа с красными туфлями и оригинальной прической, которого он назвал мистером Нидлемусом. Этот персонаж был переименован в Соника.

Геймплей игры Sonic the Hedgehog возник из технической демонстрации возможностей консоли, созданной Юджи Нака. Прототипом для игра послужила игровая платформа, в которой быстро движущийся персонаж катился через длинную трубку.

В середине 1990 года Накаяма нанял Тома Калинске вместо Каца на пост генерального директора Sega of America. Хотя Калинске мало знал о рынке видеоигр, он окружил себя опытными советниками.

Журналисты и критики похвалили игру Sonic, называя её одной из величайших игр, и консоль Sega наконец-то стала успешной. Во многом благодаря популярности Соника, Sega Genesis превзошла своего главного конкурента, Super Nintendo Entertainment System.

К январю 1992 года Sega контролировала 65% рынка 16-битных консолей, что позволило компании SEGA обогнать Nintendo на рынке консолей впервые с 1985 года.

ИСТОРИЯ КРАХА SEGA Sega, Sega Mega Drive, Консоли, Консольные игры, Playstation, Nintendo, Игровая приставка, Истории из жизни, Мир, Компания, Техника, Конкуренция, Программирование, 90-е, Ежик Соник, Фотография, YouTube, Электроника, Изобретения, Видео, Длиннопост, YouTube (ссылка)

В 1990 году Sega выпустила игровую консоль Game Gear, чтобы конкурировать с Game Boy от Nintendo.

Консоль была разработана в качестве портативной версии Master System и имела более мощную начинку, чем у Game Boy, включая полноцветный экран, в отличие от монохромного экрана Game Boy.

Однако, из-за короткого времени автономной работы, отсутствия оригинальных игр и слабой поддержки со стороны Sega, Game Gear не превзошла Game Boy. Было продано около 11 миллионов единиц.

1 декабря 1991 года в Японии была выпущена приставка Mega-CD. В Северной Америке она была переименован в Sega CD и выпущена 15 октября 1992 года по розничной цене 299 долларов. В Европе эта консоль была выпущена в Европе как Mega-CD в 1993 году. Но продажи новой приставки были намного ниже ожиданий. За первый год продали всего 100 тысяч консолей.

ИСТОРИЯ КРАХА SEGA Sega, Sega Mega Drive, Консоли, Консольные игры, Playstation, Nintendo, Игровая приставка, Истории из жизни, Мир, Компания, Техника, Конкуренция, Программирование, 90-е, Ежик Соник, Фотография, YouTube, Электроника, Изобретения, Видео, Длиннопост, YouTube (ссылка)

В январе 1994 года Sega начала разработку дополнения для консоли Genesis - 32X, которое должно было стать входом в 32-битную эпоху.

Решение было поддержано Накаямой и сотрудниками Sega of America. Sega выпустила дополнение для своей приставки 32X 21 ноября 1994 года в Северной Америке, 3 декабря 1994 года в Японии и январе 1995 года на территориях Европы. Однако интерес к 32X быстро упал.

ИСТОРИЯ КРАХА SEGA Sega, Sega Mega Drive, Консоли, Консольные игры, Playstation, Nintendo, Игровая приставка, Истории из жизни, Мир, Компания, Техника, Конкуренция, Программирование, 90-е, Ежик Соник, Фотография, YouTube, Электроника, Изобретения, Видео, Длиннопост, YouTube (ссылка)

22 ноября 1994 года в Японии стартовали продажи новой приставки Sega Saturn. В первый же день было продано 200 тысяч приставок.

В марте 1995 года генеральный директор Sega of America Том Калинске объявил, что Saturn будет выпущена в США в 2 сентября 1995 года.

SEGA SATURN - ЛУЧШАЯ ХУДШАЯ КОНСОЛЬ СЕГИ - YouTube

На первой выставке Electronic Entertainment Expo (E3) в Лос-Анджелесе 11 мая 1995 года Калинске выступил с программной презентацией, в которой он раскрыл цену релиза в 399 долларов и описал особенности консоли. Выпуск приставки в Европе начался 8 июля 1995 года.

И тут пришла Sony PlayStation…

ИСТОРИЯ КРАХА SEGA Sega, Sega Mega Drive, Консоли, Консольные игры, Playstation, Nintendo, Игровая приставка, Истории из жизни, Мир, Компания, Техника, Конкуренция, Программирование, 90-е, Ежик Соник, Фотография, YouTube, Электроника, Изобретения, Видео, Длиннопост, YouTube (ссылка)

В течение двух дней после американского запуска продаж PlayStation 9 сентября 1995 года Sony продала больше устройств, чем Sega за пять месяцев продала приставок Saturn.

В течение первого года PlayStation завоевала более 20% рынка видеоигр в США. Sega также недооценила популярность своей прошлой модели Genesis, которая по прежнему пользовалась спросом и переманивала покупателей у новой приставки Saturn.

Из-за давних разногласий с Sega из Японии Том Калинске потерял интерес к своей работе в качестве генерального директора Sega of America.

Консоль Saturn не смогла взять на себя лидерство на рынке, как это было с приставкой Genesis. После запуска Nintendo 64 в 1996 году продажи Saturn и её игр резко упали, в то время как PlayStation переиграла Saturn в США три к одному в 1997 году.

После пяти лет общего снижения прибыли в финансовом году, заканчивающемся 31 марта 1998 года, Sega понесла убытки впервые с момента листинга на Токийской фондовой бирже в 1988 году.

Незадолго до объявления о потерях Sega объявила, что прекращает всю работу, связанную с приставкой Saturn в Северной Америке, чтобы подготовиться к запуску её преемника. Решение отказаться от консоли Saturn фактически оставило западный рынок без игр Sega более чем на год. Sega понесла дополнительный консолидированный чистый убыток в размере почти 43 миллиарда иен в финансовом году, заканчивающемся в марте 1999 года, и объявила о планах по сокращению 1000 рабочих мест, то есть почти четверти своей рабочей силы.

Несмотря на огромные потери из-за приставки Saturn, в том числе 75-процентное падение полугодовой прибыли непосредственно перед запуском Dreamcast в Японии, Sega была уверена в своей новой системе.

SEGA DREAMCAST - Лебединая песнь Сеги - YouTube

Dreamcast вызвала значительный интерес и привлекла много предварительных заказов. Sega объявила о том, что игра Sonic Adventure будет закончена как раз к запуску Dreamcast.

Однако Sega не смогла достичь поставленных целей при запуске Dreamcast в Японии из-за нехватки чипсетов PowerVR, вызванной высокой частотой отказов в производственном процессе.

ИСТОРИЯ КРАХА SEGA Sega, Sega Mega Drive, Консоли, Консольные игры, Playstation, Nintendo, Игровая приставка, Истории из жизни, Мир, Компания, Техника, Конкуренция, Программирование, 90-е, Ежик Соник, Фотография, YouTube, Электроника, Изобретения, Видео, Длиннопост, YouTube (ссылка)

27 ноября 1998 года Sega Dreamcast была запущена в Японии по цене 29 000 иен, и к концу дня все выпущенные приставки были распроданы.

Шоичиро Иримаджири надеялся продать более 1 миллиона устройств Dreamcast в Японии к февралю 1999 года, но было продано менее 900 000, что подорвало попытки Sega создать достаточную базу для обеспечения выживания Dreamcast после появления конкурентов от других производителей. Перед запуском в западном направлении Sega снизила стоимость Dreamcast до 19 900 иен, что фактически сделало аппаратное обеспечение убыточным, но увеличило продажи.

11 августа Sega of America подтвердила, что Берни Столар был уволен. Теперь в Америке у руля Sega стоял Питер Мур. Dreamcast стартовала в Северной Америке 9 сентября 1999 года по цене 199 долларов. При старте продаж для Sega Dreamcast были доступны 18 игр.

Sega установила рекорд, продав более 225 000 устройств Dreamcast за 24 часа, заработав 98,4 миллионов долларов. В течение двух недель продажи Dreamcast в США превысили 500 000. К Рождеству Sega владела 31 процентом рынка видеоигр в Северной Америке.

4 ноября Sega объявила, что продала более миллиона устройств Dreamcast.

14 октября 1999 года Sega выпустила Dreamcast в Европе. В то время как Sega продала 500 000 единиц в Европе к Рождеству 1999 года.

Интересные факты 👉 История успеха 👈 компания SEGA | Документальный фильм - YouTube

Хотя запуск Dreamcast был успешным, Sony по-прежнему владела 60 процентами общей доли рынка в Северной Америке с PlayStation в конце 1999 года. В том же году Nintendo объявила, что ее консоль следующего поколения будет соответствовать или превосходить что-либо на рынке, и Microsoft начала разработку своей собственной консоли Xbox. Первоначальный импульс Sega оказался мимолетным, так как продажи Dreamcast в США, которые к концу 1999 года превысили 1,5 миллиона, начали снижаться уже в январе 2000 года.

Плохие продажи в Японии способствовали росту убытков компании Sega в финансовом году, заканчивающемся в марте 2000 года, который последовал за аналогичным убытком в предыдущем году и ознаменовал третий ежегодный убыток Sega подряд. Хотя общие продажи Sega за этот период увеличились на 27,4%, а продажи Dreamcast в Северной Америке и Европе значительно превзошли ожидания компании, этот рост совпал с уменьшением прибыльности из-за инвестиций, необходимых для запуска Dreamcast западные рынки и плохими продажами программного обеспечения в Японии. В то же время, плохие рыночные условия снизили доходность японского аркадного бизнеса Sega, заставив компанию закрыть 246 рабочих мест.

Мур заявил, что нужно продать 5 миллионов приставок в США к концу 2000 года, чтобы оставаться жизнеспособной платформой, но Sega не достигла этой цели, - было продано около 3 миллионов единиц. Более того, попытки Sega стимулировать продажи Dreamcast за счет более низких цен и денежных скидок привели к увеличению финансовых потерь.

В марте 2001 года Sega опубликовала консолидированный чистый убыток в размере 417,5 миллиона долларов. В конце концов, Sony и Nintendo удерживали 50 и 35 процентов рынка видеоигр в США соответственно, а Sega - только 15 процентов.

В конце 1999 года председатель Sega Enterprises Исао Окава заявил, что фокус Sega будет смещен с аппаратного обеспечения на программное обеспечение. 1 ноября 2000 года Sega изменила название своей компании с Sega Enterprises на Sega Corporation.

22 мая 2000 года Окава сменил Иримаджиру на посту президента Sega. Окава давно выступал за то, чтобы Sega отказалась от консольного бизнеса. Его позиция по этому вопросу не была уникальной. Соучредитель Sega Дэвид Розен «всегда чувствовал, что для них было бы глупостью ограничивать свой потенциал аппаратным обеспечением Sega», и Столар предположил, что Sega должна была продать свою компанию Microsoft.

В сентябре 2000 года на встрече с японскими руководителями Sega и руководителями крупнейших японских студий по разработке игр компании Питер Мур рекомендовал Sega отказаться от консольного бизнеса и сосредоточиться на программном обеспечении.

23 января 2001 года появились сообщения, что Sega прекратит производство Dreamcast и разработает программное обеспечение для других платформ. Sega of Japan выпустила пресс-релиз, подтверждающий, что они рассматривают возможность производства программного обеспечения для PlayStation 2 и Game Boy Advance в рамках своей «новой политики управления».

31 января 2001 года Sega объявила о прекращении выпуска Dreamcast после 31 марта и реструктуризации компании как независимого от платформы стороннего разработчика. Sega также объявила о снижении цены на консоль Dreamcast до 99 долларов (!), чтобы ликвидировать непроданные запасы, которые по состоянию на апрель 2001 года оценивались в 930 000 единиц.

В рамках реструктуризации в 2001 году была уволена почти треть сотрудников Sega в Японии. 2002 год был пятым подряд убыточным годом для Sega.

После смерти Исао Окавы, Хидеки Сато стал президентом Sega. Из-за плохих продаж в 2002 году Sega была вынуждена сократить свой прогноз прибыли на 90% на 2003 год.

В результате Sega начала искать возможности слияния для исправления своего финансового положения.

В апреле 2015 года корпорация Sega была реорганизована в Sega Group, одну из трех групп Sega Sammy Holdings. Харуки Сатоми, сын Хаджиме Сатоми, вступил в должность президента и генерального директора компании в апреле 2015 года.

На Tokyo Game Show в сентябре 2016 года Sega объявила, что приобрела права интеллектуальной собственности и права на разработку для всех игр, разработанных и изданных Technosoft. Компания Technosoft не хотела, чтобы бренд Technosoft прекратил свое существование, и поэтому передача интеллектуальной собственности Sega была единственной альтернативой.

В октябре 2017 года Sega of America анонсировала свой интернет-магазин Sega Shop. Ян Керран, бывший руководитель THQ и Acclaim Entertainment, заменил Джона Чэна на посту президента и главного операционного директора Sega of America в августе 2018 года.

Показать полностью 11 6
Sega Sega Mega Drive Консоли Консольные игры Playstation Nintendo Игровая приставка Истории из жизни Мир Компания Техника Конкуренция Программирование 90-е Ежик Соник Фотография YouTube Электроника Изобретения Видео Длиннопост YouTube (ссылка)
7
106
monobogdan
monobogdan
1 год назад
TECHNO BROTHER

Продолжение поста «Игровая легенда из 90-х: Как работала 3dfx Voodoo "под капотом"? Пишем 3D-приложение нуля на Glide (1/2)»⁠⁠1

Это вторая часть лонга про 3dfx Voodoo. Пришлось разбить его на две части из-за ограничений в 30.000 символов на пост у Пикабу. Сначала читайте первую часть.

Продолжение поста «Игровая легенда из 90-х: Как работала 3dfx Voodoo "под капотом"? Пишем 3D-приложение нуля на Glide (1/2)» Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, YouTube, Ответ на пост, Длиннопост, Telegram (ссылка)

Скрин с криво-наложенной текстурой: здесь уже был настроен сэмплер, но неправильно. А ещё тут видно артефакты отсутствия Z-сортировки наглядно.

Пока не впечатляет, да? Где же текстуры? А об этом — в следующей главе!

❯ Текстуры


Плоские модельки без текстур — это не очень круто. Ну что можно сделать с плоскими моделями, пусть даже они будут с освещением?

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

Но в Glide всё было иначе — ведь там не было понятия текстуры как объекта! Как-так? Glide позволял нам получить верхнюю и нижнюю границу адресного пространства памяти одного конкретного TMU и программист волен был выгружать текстуру куда угодно! Затем программист сохранял указатель на текстуру в видеопамяти и передавал её… в комбайнер, дабы он мог использовать текстуру по назначению! При этом TMU даже характеристики текстур не знал — эту информацию отсылал программист.

TMU поддерживает множество пиксельформатов: RGB332 (8 бит на пиксель), RGB565 (16 бит на пиксель), палитровый и собственный формат сжатия с NCC-компрессией. Тем не менее, 565 у 3dfx требует какого-то особого формата пикселей, иначе текстуры превращаются в кашу. Благо для загрузки текстур с диска, в Glide есть удобные функции и тулза texUS для создания текстур и всего набора мипов для них — gu3dfGetInfo и gu3dfLoad. Кроме того, есть функция grTexCalcMemRequired для расчета необходимого размера для текстуры в видеопамяти с учетом мипов, формата и выравнивания.

Я не стал писать сложный аллокатор, поскольку игра не требует динамической видеопамяти и может сразу загрузить уровень «пачкой», а при загрузке следующего — просто освободить всю память.

https://pastecode.io/s/ruf14177

После этого, нам необходимо загрузить текстуру в видеопамять юнита с помощью grTexDownloadMipMap.

https://pastecode.io/s/260k0nrr

Как же теперь указать текстуру для сэмплинга, ведь glBindTexture здесь нет? Для этого есть функция glTexSource, которая принимает адрес первого мипа и конфигурацию текстуры — которая хранится на стороне ЦПУ!

https://pastecode.io/s/6ouq99eo

Но если мы сейчас запустим программу, то никакой текстуры мы не увидим. Потому что сначала нужно настроить сэмплер и комбайнеры!

Для этого, мы настраиваем комбайнеры на сэмплинг текстур напрямую, без умножения на цвет вершины. Альфа-канал мы не трогаем вообще — у нас нет альфа-буфера для него.

Продолжение поста «Игровая легенда из 90-х: Как работала 3dfx Voodoo "под капотом"? Пишем 3D-приложение нуля на Glide (1/2)» Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, YouTube, Ответ на пост, Длиннопост, Telegram (ссылка)

Запускаем программу и вот результат:


Да, первая полноценная 3D-модель с текстурой! Мы реализовали половину работы видеодрайвера вручную, однако по концовке всё равно очень приятно! Игры здесь пока ещё нет — материал вышел бы слишком большим.

❯ А где практика?



К сожалению, сегодня без практической части :( Изначально я думал что у меня всё схвачено и моя материнка на 478 с AGP-слотом вполне справиться с ролью тестового стенда для нашей демки. Однако, я не учел важный факт — существовало несколько физических версий AGP и на 478 уже поздний вариант с 1.5в/0.8в уровнями.

Материал был обещан в четверг на 11 утра, времени на заказ через почту у меня не было (новый год, посылки 1.5-2 недели задерживаются только на сортировке в Краснодаре), поэтому я начал написывать всем сервисникам у себя в городе, в надежде что у кого-то лежит на складе материнка на PGA370… в любом состоянии.

И материнка нашлась! Ей оказалась поздняя ECS P6IPAT на 815 чипсете с универсальным AGP-разъемом, который поддерживал все стандарты AGP одновременно. Продавал её мужичок всего за 100 рублей, сразу с процом и охладом :) Однако возникли определенные проблемы с поднятием платы (все электролиты необходимо менять «вкруг», а нужных номиналов под рукой не оказалось, плата стартовала раза с 3го) и накатыванием винды (помер IDE-привод), поэтому практическая часть немного откладывается…

Продолжение поста «Игровая легенда из 90-х: Как работала 3dfx Voodoo "под капотом"? Пишем 3D-приложение нуля на Glide (1/2)» Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, YouTube, Ответ на пост, Длиннопост, Telegram (ссылка)


❯ Заключение


И мы приходим к выводам, что для написания 3D-игры, программист в 90-х годах должен был как минимум:

  1. Иметь представлении о трансформации геометрии, что такое матрицы (геометрию можно трансформировать и без матриц, однако это не очень удобно).

  2. Понимать, как работает конвейер видеокарты, что такое стейты, комбайнеры, каким образом происходит управление памятью, организация фреймбуфера и Depth-буфера.

  3. Иметь представление об основных техниках в растеризации 3D-графики: что такое перспективное деление, Z-буфер, форматы вершин, фильтрация текстур, мипмаппинг, затенение по Гуро, какие-либо методы анимации, если была необходимость и т. п.


Материал получился очень объёмным, для меня это абсолютный рекорд. Я старался собрать всю информацию о 3dfx Voodoo, которую изучил и поделится с вами не только архитектурой конкретно видеокарт, но и рассказать о программировании графических API на низком уровне и подробно рассказать, как же строится изображение «под капотом» и вашей видеокарты.

Касательно баек насчет 3dfx в СНГ: я лично родился в 2001 году, так что могу судить исключительно из услышанных мной баек и историй. А какая история с 3dfx Voodoo была у вас? Пишите в комментах!
Надеюсь, материал был вам интересен. :) Статья писалась несколько бессонных ночей, дабы успеть под новый год! Больше бэкстейджа, мыслей и проектов у меня вTelegram.

Материал подготовлен при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, дабы не пропускать новые статьи каждую неделю!

Продолжение поста «Игровая легенда из 90-х: Как работала 3dfx Voodoo "под капотом"? Пишем 3D-приложение нуля на Glide (1/2)» Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, YouTube, Ответ на пост, Длиннопост, Telegram (ссылка)
Показать полностью 4
[моё] Гаджеты Покупка 3D графика Графика Программирование C++ 3dfx Voodoo Видеокарта 90-е Железо Старое железо Ретро-игры Игры Ретро YouTube Ответ на пост Длиннопост Telegram (ссылка)
31
236
monobogdan
monobogdan
1 год назад
TECHNO BROTHER

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2)⁠⁠1

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Полагаю, многие мои читатели так или иначе знакомы с такими видеокартами, как 3dfx Voodoo. Эти легендарные графические ускорители из середины\конца 90-х годов был чуть ли не в каждой второй сборке для игр, а о их производительности слагали легенды. До сих пор есть относительно небольшое сообщество фанатов ретро-игр, которые ценят, любят и собирают с цветмета те немногие видеокарты от 3dfx, что остались в СНГ. Однако обзоров на 3dfx Voodoo много, тестов игр — тоже, а вот материала «простыми словами» о его внутренней архитектуре и более того, практической части с написанием 3D-игры практически нет! Недавно я прикупил себе Voodoo 3, и начал зубрить Programmer's Manual с желанием запилить что-нибудь эдакое… Статью я долго и упорно готовил дабы успеть к новому году и сегодня у нас с вами: краткая история компании 3dfx, подробный разбор архитектуры видеочипов 3dfx «под капотом», что должен был уметь программист 3D-графики в 90х и написание 3D-приложения на Glide полностью с нуля. Интересно? Тогда жду вас в статье!

❯ Предисловие


Материал про архитектуру S3 ViRGE показал, что рубрика с разбором «подкапотки» видеочипов 90-х годов оказалась довольно интересной. Многие люди приходят почитать, поностальгировать в комментариях, а иногда даже пишут в личку и спрашивают детали реализации конкретных видеочипов! Думаю, эта рубрика станет одной из основных, в будущем году, мы рассмотрим с вами:

  1. PSP;

  2. PS1 (как раз читатель недавно задарил фаточку и слимку);

  3. ATI Rage;

  4. Вероятно, GeForce 2.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Само собой, я не мог пройти мимо 3dfx Voodoo. И дело не только в ценности и легендарности данных видеочипов, но и во внутренней архитектуре, которая очень сильно отличается от современных GPU. Про 3dfx я знаю уже более 10 лет, ещё с самой юности, а знакомство произошло в одном из выпусков «16-бит тому назад», однако прикупить себе один экземпляр решился только сейчас.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Чем же был обусловлен культовый статус 3dfx Voodoo с точки зрения игрока? В первую очередь, 3dfx Voodoo вышел достаточно рано и стал одним из первых (наряду с Rendition Verite) потребительских GPU с оптимальной производительностью и ценой для 3D-игр тех лет. Игры с полноценной 3D-графикой существовали и ранее: вспомнить хотя бы PS1, N64, или японские игровые автоматы из 90-х, однако в играх на ПК в те годы практически всегда был софтварный рендерер, а 3dfx Voodoo позволял достичь графики на уровне, а то и лучше домашних консолей тех лет. За год до выхода Voodoo 1, на рынке появился NVidia NV1 — мультимедийный чип, одной из задач которого было ускорение 3D-графики. Однако, он оперировал не треугольной геометрией, как это принято сейчас, а квадами — т.е прямоугольниками и не был совместим с основными графическими API тех лет, посему и популярности не получил.

Помимо этого, видеокарты Voodoo были модульными и состояли как минимум из нескольких чипов, что положительно сказывалось на возможных конфигурациях и цене конечных устройств:

  • Один FBI: Чип, отвечающий за обмен данными с хост-ПК через PCI/AGP и растеризацию треугольников. Это главный чип в видеокарте, который может работать в паре с другим FBI, образовывая систему из двух видеокарт — SLI.

  • До трёх TMU: Один или несколько чипов, отвечающий за сэмплинг — нанесение текстуры на треугольник. В процессе отрисовки геометрии, FBI передаёт на каждый из указанных программистом TMU данные о текстуре, которую требуется наложить и параметры наложения (фильтрация, мипы и.т.п).



Именно в те годы появилась гонка за объемами видеопамяти на борту и разделение их по классу. Видеокарта с общим объёмом памяти в 16Мб считалась гораздо круче видеокарты с 8Мб: и ведь действительно, больший объём VRAM позволял загрузить текстуры с более высоким разрешением, при этом на частоту видеоядра тогда смотрели гораздо реже.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Другим интересным моментом было собственное графическое API. В те годы доминировал OpenGL, пришедший к нам с профессиональных графических станций: SGI выделили собственное API в отдельную спецификацию, выкинули оттуда различные функции, не касающиеся вывода графики и сделали полностью открытой. В 1996 году, DirectX 2.0 с первой версией Direct3D только-только появился и был достаточно нестабильным GAPI (даже Кармак его ругал), а больше вариантов и не было. Результатом стало появление 3dfx Glide — низкоуровневого графического API, которое позволяло управлять видеокартой похожим на OpenGL путём, но при этом на ещё более низком уровне, имея возможность тонкой настройки всего конвейера. Одной из важных фишек Glide стала поддержка не только Windows, но и DOS, что было достаточно редким, если не уникальным случаем для тех лет.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Игры для 3dfx Voodoo не заставили себя ждать. Благодаря относительной простоте Glide и понятному мануалу, а также открытости SDK, начали появляться игры с поддержкой данного GAPI: Tomb Raider, MechWarrior, Quake — какие-то игры работали через прослойку (как вышеупомянутая квака, которая реализовывала прослойку Glide -> минимальное подмножество OpenGL, которого хватало для работы игры), какие-то нативно. Выход игр с поддержкой 3dfx Glide обеспечил успех новой видеокарте, поскольку игры зачастую не просто работали шустрее, но и выглядели гораздо симпатичнее.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

После выхода первой 3dfx Voodoo, компания сосредоточилась на улучшении Glide и доработке архитектуры видео-ускорителей. В 1998 году, спустя два года после выхода первой Voodoo, компания выпустила Voodoo 2 с объемами памяти 8Мб (по 2Мб на TMU) или 12Мб (по 4Мб на TMU), которая архитектурно была похожа на первый видеочип, однако несла в себе несколько серьезных изменений:

  • 64-битная шина для обмена данными с TMU. Помимо этого, 3dfx отмечала то, что благодаря широкой шине, ей удалось реализовать сэмплинг сразу двух текстур за такт.

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

  • Поддержка SLI для объединения двух видеокарт для обработки одного кадра. При этом каждая видеокарта работала над своим набором сканлайнов — строк на экране. То есть, первый видеочип мог обрабатывать нечетные строки, а второй четные.


Но тем не менее, 3dfx Voodoo оставались именно видео-ускорителями и полностью заменить видеокарту не могли, поскольку у них не было блока для работы с 2D-графикой (этот блок, в свою очередь, помимо софтварной поддержки VESA-режимов должен включать в себя аппаратное ускорение BitBLT, рисования некоторых примитивов и.т.п). По этой же причине, игры с использованием Glide нельзя было свернуть с помощью Alt-Tab (на самом деле можно, но хаком) и они не могут быть запущены в оконном режиме. По сути, 3dfx Voodoo подключался к полноценной 2D-видеокарте (которой мог быть и ATI Rage, и S3 ViRGE, и ISA-видеокарта с VGA) и полностью переключал сигнал на выход из своего RAMDAC при запуске игры. В общем, игры на Glide с точки зрения системы были простыми консольными приложениями — даже без собственных окон!

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Немного позже, 3dfx добавила модуль 2D ускорения, сделав полноценную видеокарту, которая могла работать в системе в одиночку. В 1999 году, через год после релиза 3dfx Voodoo 2, вышла Voodoo 3, которая стала системой на кристалле и объединила FBI и два TMU в один кристалл. Видеокарта стала гораздо меньше и обзавелась интерфейсом AGP (который очень близок к PCI сам по себе).

Конкуренты у 3dfx Voodoo были серьезные, пожалуй, самым серьезным был ATI Rage: это была небольшая система на кристалле, которая помимо ускорения 3D-графики обладала декодером видео DVD-качества (в те времена, посмотреть видео в 480p и нормальном качестве с софтварным декодером возможно было далеко не на всех процессорах. Насколько мне известно, 486 и Pentium 1 сразу в пролете), умела выводить изображение на телевизор (сам себе домашняя игровая консоль!) и поддерживала не только D3D и OpenGL (причем насколько мне известно, OpenGL поддерживался плохо и такая тенденция сохранялась до покупки ATI компанией AMD), но и собственное проприетарного GAPI ATI CIF (C Interface), которое обладало весьма широкими возможностями и было… ну очень низкоуровневым, приходилось вручную создавать контекст DirectDraw, аттачить его к 3D-контексту, вручную делать backface-отсечение и т. п.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Нельзя не вспомнить и за Riva TNT: очень шустрая видеокарта для своих лет, которая также обладала ТВ-выходом и хорошей поддержкой OpenGL. Кроме того, Riva TNT гораздо лучше себя проявляла при 24-х битном цвете: 3dfx Voodoo отрисовывала всё в 16-битном формате. Вон, люди на Riva TNT как-то даже в Морровинд играли!

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Ну и конечно же была конкуренция в бюджетном сегменте рынка. 3dfx поставляла OEM-видеокарты для сборщиков ПК, в том числе и недорогие. Тут уж конкуренция была серьезнее: и PowerVR с десктопной видеокартой, и Intel с i740 (эдакий предок GMA), и видеокарты от SiS, и конечно же S3 Graphics!

В пост-советском пространстве, 3dfx Voodoo была достаточно дорогой и для некоторых оставалась мечтой. Ситуация изменилась ближе к 1999-2001 годам, когда 3dfx с Voodoo 4 и Voodoo 5 была на грани банкротства из-за отсутствия T&L и программируемых шейдеров, а NV и AMD взяли верх, то и Voodoo начали стоить адекватных денег на вторичке: тут уже и GeForce 3 с шейдерами подоспевал, но более бедные геймеры все еще могли поиграть в Quake 3 и другие игры с приемлемым FPS!

Наш сегодняшний герой будет на 3 года меня старше — мой выбор пал на 3dfx Voodoo 3 на 8Мб в AGP-версии, которая среди любителей видеокарт 3dfx считается «не трушной» и посему, самой дешевой. Основной причиной выбора Voodoo 3 была достаточно низкая цена на конкретно это поколение видео-ускорителей — я заплатил 3.400 рублей. 1 и 2 Voodoo стоят в среднем от 4-5 тысяч рублей, а цены Voodoo 4 улетают в космос. Так что скромненько, конечно, но тоже нормально :)

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Придя домой и распаковав посылку, я сразу же установил Glide SDK и принялся изучать Programmers Manual, дабы запилить что-нибудь интересное…

❯ Архитектура «под капотом»


Но сначала давайте поговорим об архитектуре 3dfx Voodoo «под капотом», на более низком уровне, дабы было общее понимание, что и как работает. Без этого, понять принцип работы GAPI и видеокарты в целом может быть сложно. Предлагаю рассмотреть FBI, TMU и RAMDAC по отдельности:

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

FBI — FrameBuffer Interface. Как уже было сказано выше, этот модуль является основой видеоускорителя: в его задачи входит коммуникации через PCI/AGP, растеризация примитивов, клиппинг, расчет вершинного освещения, подготовка текстур к заливке на TMU, перспективная коррекция, альфа-блендинг и работа с Z-буфером, а также двойная/тройная буферизация и управление самим фреймбуфером.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

В Voodoo 3, под радиатором находится система на кристалле, где FBI и TMU находятся в одном чипе.

FBI делились на несколько поколений — SST-1 (3dfx Voodoo 1), SST-96 (3dfx Voodoo 2) и.т. п. Судя по всему, у одного FBI могло быть несколько ревизий, но в чем их отличие — неизвестно.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Для нужд FBI выделено строго 2Мб видеопамяти, которые используются для 3 буферов, один из которых можно использовать для произвольных целей. Первые два буфера называются Front и Back буферами и отображают то, что сейчас находится на экране, а третий является aux-буфером с 16-битным форматом цвета, который можно использовать для альфа-блендинга, либо как Z-буфер. Видеокарта поддерживает несколько форматов фреймбуфера, однако «под капотом» все расчёты ведутся в 16-битном RGB565 — что когда-то и стало «визитной карточкой» видеокарт 3dfx. Программист может получить прямой доступ к записи в буфер экрана с помощью lfb-функций (аналог в OpenGL — glCopyPixels/glReadPixels).

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Для FBI выделен отдельный чип памяти на 2Мб или 4Мб. При 2Мб, максимальное разрешение с Aux-буфером составляло 640x480, без Aux-буфера — 800x600, при 4Мб можно было создать буфер с разрешением 800x600, при этом с Aux-буфером.

Ключевой особенностью растеризатора FBI в SST-1 была в том, что вся отрисовка геометрии происходила в абсолютных оконных координатах. В 3D-графике принято все расчеты проводить в т. н. Clip-Space координатах, которые представляют из себя нормализованные экранные координаты (NDC) в пределах -1..1. То есть, точка 0 — центр экрана, -1 — левая сторона экрана, 1 — правая. В SST-1 же все вершины рисовались сразу же в экранных координатах, то есть так:

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

В 3dfx Voodoo 2 ввели расчеты в Clip-Space, пояснив что растеризация в абсолютных оконных координатах слишком медленная для будущих поколений видеокарт. По итогу, если программисты хотели, чтобы их игра работала на 3dfx Voodoo 1, им нужно было выбирать «старый» режим работы и преобразовывать Clip-Space координаты в оконные вручную.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Как уже было сказано выше, вся видеопамять выделялась отдельным TMU и FBI. Но где-же тогда хранилась геометрия? Опытный читатель помнит про такие функции, как glBegin/glEnd. В те годы, видеопамять было принято считать именно текстурной, а геометрию пересылал процессор каждый кадр вручную — причём сразу же трансформированную, подготовленную для вывода на экран. Для каждой вершины в примитиве был свой набор регистров, задающий координаты, цвет и UV для текстур, что и позволяло сделать гибкий формат вершин, чем активно пользуется Glide.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Если говорить совсем уж просто, то 3dfx Voodoo был растеризатором треугольников, который ко всему прочему умел Backface-отсечение. Например, не было Near-clipping'а — процесса перестроения примитивов, вершины которых частично уходят за камеру. Если этого не делать — то когда примитив уйдет за камеру, мы все равно продолжим видеть его на экране, а если это дело аппроксимировать, отсекая целые примитивы — некоторая геометрия будет пропадать, если расположена слишком близко к камере. Многие концепции отрисовки 3D-графики программист должен был знать заранее, никаких упрощений, как с современными GAPI, не было.

TMU — Texture Mapping Unit. Как уже было сказано ранее, этот чип отдельно отвечал за сэмплинг текстур, а также управление своими банками видеопамяти и отправкой конечного результата обратно FBI.

Ключевой особенностью TMU была поддержка комбайнеров — своеобразная альтернатива пиксельных шейдеров в те годы. Программист мог задать функцию и параметры работы каждого TMU, дабы он мог выполнять операции умножения текстуры на цвет, или, например, использовать текстуру как маску, манипулировать её альфаканалом и сэмплить сразу две текстуры за один проход! В те годы сама возможность отрисовать геометрию с несколькими текстурами за один проход (т.е за один вызов DrawTriangle) была прорывом и позволяла, например, вместо двух вызовов отрисовки стен в квейке (один проход для текстурированной стены, второй, отрисованный с блендингом, для лайтмапы) рисовать стены за один проход:

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Максимальный размер текстуры — 256x256 пикселей, также была поддержка текстур с нестандартным соотношением сторон и мипмаппинга (техника, которая позволяет убрать рябь на дальних текстурированных объектах с помощью снижения разрешения текстуры в зависимости от дистанции до наблюдателя). Поддержки Non Power Of Two (не кратные степени двойки) текстур не было вообще. Поддерживалась билинейная и Point-фильтрация. По какой-то причине, 3dfx не могли сделать поддержку текстур большего разрешения чем 256х256, в то время как первая Riva TNT уже умела в текстуры 1024х1024.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Память у каждого TMU была отдельной, а Glide как GAPI не предоставлял никакого аллокатора для хранения текстур, программист должен был распоряжаться видеопамятью полностью сам. При этом каждый TMU может сэмплить текстуры только из своей памяти.
Текстуры загружались сразу в виде набора мипмап, однако сам сет мипов мог быть не полным и мог быть расположен в нескольких регионах памяти «вразброс». Таким образом, частично решалась проблема фрагментации памяти. Тем не менее, в те годы динамическая загрузка ресурсов на уровне — весьма нечастое явление, поэтому все текстуры можно было линейно загрузить в память и не заморачиваться с менеджментом.

DAC — RAMDAC производства компании ICS. Данный чип служит для вывода определенной части видеопамяти, т.е фреймбуфера на монитор. Дело в том, что старые VGA-мониторы с ЭЛТ, по электрической части были аналоговыми: на входе было три сигнала — красный, зеленый и синий, а также сигнальные линии горизонтальной и вертикальной синхронизации. Поскольку многие видеокарты не имели на борту ЦАП'а, в 90-х и начале нулевых устанавливались отдельные RAMDAC'и для фактического вывода картинки на дисплей. При этом вывод на ТВ с помощью «тюльпанов» мог реализовываться ещё одним RAMDAC'ом — уже специально для ТВ.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Сами по себе ЭЛТ-мониторы формально не имели такого понятия, как разрешение, однако существовало несколько общепринятых «пиксельклоков» — частот стробов HSYNC и VSYNC, которые и задавали виртуальное разрешение дисплея. Управляя настройками RAMDAC, FBI мог настраивать разрешение картинки, частоту синхронизации и иные параметры — например, настройки гаммы. Именно от используемого RAMDAC зависело качество изображение на ЭЛТ-мониторе, с плохим RAMDAC картинка как-бы «плыла».

❯ Настраиваем окружение


Дабы пилить игры под 3dfx Voodoo, необязательно иметь ПК на WinXP и тулчейн уровня VC98. Строго говоря, даже самой видеокартой обладать необязательно — существует множество эмуляторов Glide, которые перехватывают вызовы игр к GAPI и преобразуют их в вызовы отрисовки D3D или Vulkan, что позволяет отлаживать ваши игры в профайлере.

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Glide в его нативном виде работает под Windows XP. Поэтому минимальный тулчейн, который можно использовать — это VC2015 с поддержкой Windows XP. Но если вы хотите максимальной «трушности» и иметь возможность запускать софт на Win98/Win95 — нужно использовать Visual Studio 2005. При этом, совершенно необязательно отказываться от плюшек современных IDE: Visual Studio автоматически подхватывает все установленные тулчейны в системе, достаточно лишь выбрать нужный:

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Далее, по классике добавляем либы, которые без проблем слинкуются относительно современным линкером с вашими бинарниками.

Ну что ж, на этом интро-часть материала закончена. Самое время перейти от теории к практике!

❯ Инициализация


Концептуально Glide очень близок к OpenGL, поэтому тем людям, кто имел опыт программирования 3D-графики, сам процесс настройки стейтов и рисования примитивов будет знаком. Однако поскольку основной целью Glide было создание облегченного GAPI, которое только рисует примитивы и управляет текстурными юнитами, мы не найдем здесь utility-функций (в Glide 2.x они были, причем очень даже полезные, но в 3.x gu убрали), таких как работа с матрицами — множество вещей нужно реализовывать самому, полностью с нуля. Однако я постараюсь подробно и понятно всё объяснить, в свойственной мне манере!

Наша игра начинается с инициализации и конфигурации контекста Glide, который может быть только один в системе. Связано это с тем, что каждое приложение эксклюзивно занимает ВСЕ ресурсы видеочипа для себя — возможности рисовать в отдельное окно, напоминаю, нет. Инициализация очень простая: сначала нужно проверить количество видеочипов в системе, а затем выбрать один из них как основной и создать контекст. Все сниппеты будут на pastebin.com - у Pikabu нет тега "код", а число картинок ограничено :(

Параметры нашего контекста: разрешение 640x480 в формате RGBA и частотой обновления 60Гц, два буфера для двойной буферизации и один aux-буфер для Z-буфера.

https://pastebin.com/FymhyC9a

Всё! Ни окон создавать не нужно, ни ловить события через WndProc. Просто создал контекст — и уже можно в цикле продолжать работу. После этого, нам нужно настроить состояние контекста — базовая концепция в программировании графики, которая заключается в том, что у видеокарты есть множество стейтов, которые управляют выводом итоговой картинки на экран. Примеры стейтов: цвет освещения, ширина линий, Z-буфер и Color-буфер.

Для того, чтобы наша игра работала даже на первых видеоускорителях 3dfx, нам необходимо выбрать абсолютную координатную систему, а также настроить Depth-буфер и Cull-mode. Cull-mode, или Backface culling позволяет отсекать примитивы, если они повернуты к камере обратной стороной — это позволяет не рисовать лишние фрагменты. Именно из-за этой техники, залетая внутрь модельки простенького здания или персонажа, внутри она оказывается прозрачной!

https://pastecode.io/s/6zus1qbg

Буфер глубины — это дешевая screen-space техника отрисовки перекрываемой друг другом геометрии без фактической сортировки примитивов по отдалению от камеры. Суть простая: каждая вершина треугольника имеет собственную координату Z, которая и обозначает дальность вершины от камеры. При растеризации треугольника, Z-значение интерполируется и записывается в картинку точно таких-же размеров, как и основное игровое окно, только вместо цвета записывается это самое Z-значение.

При отрисовке следующих примитивов, видеокарта проверяет Z-координату рисуемых треугольников с Z-координатами в буфере и если Z-координата фрагмента больше (т.е объект за другим объектом), видеокарта просто не рисует пиксель.

В классических GAPI принято использовать режимы сравнения LEQUAL и LESS, однако с буфером глубины в Glide есть особенности: в самой видеокарте они хранятся в виде целочисленного 16-битного short (т.е до 65535 значений), причем обратного (1 / z). Поэтому в нашем случае, чем объект дальше от камеры, тем меньше его Z-координаты, а посему для корректной сортировки нужно необходимо выставлять режим сравнения GREATER. Но об этом немного позже — когда дойдем до фактической отрисовки треугольников.

Переходим к настройкам формата вершины.

https://pastecode.io/s/pwswyjtc

Как я уже говорил ранее, 3dfx Voodoo оперирует координатами в абсолютных экранных координатах, про 3D он формально ничего не знает. Создать трёхмерное представление — задача программиста. X и Y — координаты треугольника в экранных координатах, Z-значение — для указания дальности вершины от камеры и сортировки, Q — т. н/ W-координата, необходимая для перспективного деления и перспективно-корректного текстурирования (про второе позже). R, G, B, A — цвет вершины. Позволяет, например, раскрасить ландшафт с помощью комбайнера в несколько проходов, или просто сделать модельку любого цвета, а TmuVertex — UV-координаты для корректного наложения текстур. Подробнее об этом будет в разделе текстур.

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

Это по сути минимальная инициализация Glide для рисования трёхмерной графики. После создания контекста, мы увидим синий экран. Нормальный синий экран/ :)

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

❯ Рисуем примитивы


Теперь переходим к самому интересному — рисованию треугольников! Однако до полноценного 3D-представления нам пока ещё рано. Сначала хотя-бы просто научиться выводить примитивы на экран.
Впрочем, ничего сложного в этом нет.

Перед рисованием геометрии, нам необходимо очистить (т. е. залить одним цветом) бэкбуфер и Depth-буфер. Бэкбуфер необходимо очищать только если ваша сцена не перекрывает весь экран — т. е. в ней есть не закрашенные участки. На современных видеокартах эта операция бесплатная, однако на видеокартах 90х от нее есть некоторый оверхед. Если бэкбуфер не чистить, то при передвижении камеры, мы будем наблюдать т.н «эффект зеркал» — поскольку новая геометрия рисуется поверх старой, то мы будем видеть старый кадр внахлест с новым:

grBufferClear(RGB(0, 128, 0), 0, 0);

Треугольники рисуются одной-единственной функций: grDrawTriangle, которая принимает ссылку на три структуры с описанием вершины. Формат вершины мы уже указали при инициализации, поэтому для отрисовки нам нужно лишь заполнить их данными:

https://pastecode.io/s/585e1ha9

Откуда же берутся текстуры, окраска и освещение, спросите вы? Может, есть какая-то система материалов как в Unity/UE? Дойдем и до этого, уже совсем скоро!

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

grBufferSwap(1);

Теперь у нас есть треугольник, выведенный средствами 3dfx Voodoo! Уже неплохое начало, но… где обещанное 3D!? Об этом — в следующем разделе!

❯ Математика и трансформации


Приготовьтесь, этот раздел будет звучать как учебник по матану — относительно сложно, но я постарался объяснить как можно проще и понятнее :) Если всё таки окажется сложновато — переходите к коду, понять будет гораздо проще. Строго говоря, по началу вам вообще необязательно знать детали реализации перемножения матриц и самих матриц трансформации, поскольку есть очень удобные математические библиотеки (glm и DXMath, например).

Важной составляющей в 3D-графике являются трансформации и матрицы. Если говорить простыми словами, то матрицы — многомерный массив чисел (в 3D-графике матрицы обычно имеют размерность 4х4), который позволяет представить трансформацию нашей будущей геометрии — например, модельки кораблика или героя. Например, умножив матрицу поворота на матрицу перемещения:

Matrix.RotationY(Math.DegToRad(90)) * Matrix.Translation(0, 0, 10);

Мы передвинем персонажа на 10 юнитов и повернем его на 90 градусов по оси Y. Например, компонент Transform в Unity строит мировую матрицу на основе позиции, поворота и масштабирования, которые вы задаете в инспекторе/коде.

В 3D-графике есть три основные матрицы, которые отвечают за положение объекта в мире и его представление из глаз наблюдателя:

  • Мировая матрица/матрица модели (OpenGL) — Положение рисуемой геометрии в глобальных мировых координатах. Пример с передвижением и поворотом относится именно к мировой матрице.

  • Матрица вида — Положение камеры в игровом мире. Трансформация камеры в мире имеет инвертированную систему координат — поскольку все передвижения объектов в глазах игрока — это как-бы вычитание позиции камеры из позиции объекта. Это значит, что для соответствия систем координат, все углы поворота и координаты необходимо инвертировать (-x, -y, -z). Умножив мировую матрицу на матрицу вида — мы получим координаты геометрии в пространстве наблюдателя.

  • Матрица проекции — Самая непонятная для некоторых матрица. Именно она преобразует координаты из пространства наблюдателя в Clip-Space (т.е абсолютные координаты треугольников в пространстве окна) и выдает нам W-координату, необходимую для перспективной проекции!


Таким образом, перед тем как быть нарисованной на экране, каждая вершина должна быть умножена на три матрицы — World/Model, View, Projection. Затем, на полученную матрицу необходимо умножить координаты самой вершины (в свою очередь, координаты вершины — это само строение 3D-модели):

vertex * (model * view * projection)

Насколько мне известно, с математической точки зрения это неверно — матрицы могут быть умножены только на матрицы той-же размерности. 4х-мерный вектор матрицой вообще не является, но там используется своя формула. Пожалуй, совсем уж в детали реализации математики не буду — это за рамками содержания статьи, но для общего понимания принципа работы 3D-графики, не только на 3dfx Voodoo, это необходимо.

Переходим к деталям реализации, здесь уже всё гораздо проще. Ниже приведена примитивнейшая, неэффективная и неоптимизированная «матлиба». Ну а что вы хотели, у нас таргет — Pentium MMX, там даже SIMD не было. :) Зато вполне наглядно.

https://pastecode.io/s/n1gb0c8u

И вот, наконец-то мы переходим к отрисовке самой графики!

❯ Рисуем 3D-модель!


Итак, что мы поняли из предыдущих разделов? Первым делом, нам нужно умножить каждую вершину на матрицу ModelViewProjection и исходя из позиционирования в абсолютных координатах, перевести координаты из Clip space в оконные. Ничего сложного!

Но сначала, давайте загрузим модельку. Я быстренько состряпал конвертер из SMD (собственный загрузчик, который таскаю из проекта в проект) в свой формат моделей.

https://pastecode.io/s/gakxwcbg

И написал загрузчик. Обратите внимание, что формат вершин для Glide и для ваших вершин должен отличаться!

https://pastecode.io/

Теперь, когда у нас есть 3D-модель, её можно нарисовать.
Сначала нам необходимо трансформировать каждую вершину геометрии в Clip-space, матрица — ModelViewProj. Обратите внимание, что на этом этапе, нормальный рендерер реализовывает клиппинг геометрии. У нас его нет, используется аппроксимация, что обязательно будет выливаться в пропадание геометрии, если одна из её вершин уходят «назад» за камеру. Современные видеокарты делают клиппинг аппаратно:

https://pastecode.io/s/x6fs137q

После того, как мы подготовили вершины, необходимо преобразовать их из Clip-Space в абсолютные координаты окна и посчитать для них UV в координатной системе 3dfx Voodoo:

https://pastecode.io/s/amtmjmkw

Обратите внимание на то, что каждая координата в Clip-Space делится на координату W — это называется перспективным делением, благодаря которому вершины отдаляются и приближаются в зависимости от позиции относительно глаз игрока! Здесь же рассчитывается координата Z для отрисовки перекрытой геометрии.

Перевод из Clip-Space в абсолютные координаты:

#define XVALUE_TO_WINDOW_SPACE(srcX, width) (width / 2) + (srcX * width);

#define YVALUE_TO_WINDOW_SPACE(srcY, width) width - ((width / 2) + (srcY * width));

И теперь, мы наконец-то, готовы нарисовать 3D-модель! Обратите внимание, что UV-координаты переводятся из 0..1 в 0..255 из-за особенностей TMU.

https://pastecode.io/s/3pcp07ba

Игровая легенда из 90-х: Как работала 3dfx Voodoo «под капотом»? Пишем 3D-приложение нуля на Glide (1/2) Гаджеты, Покупка, 3D графика, Графика, Программирование, C++, 3dfx, Voodoo, Видеокарта, 90-е, Железо, Старое железо, Ретро-игры, Игры, Ретро, Видео, YouTube, Длиннопост

Вторая часть материала вот здесь. Пришлось бить на две части из-за ограничения в 30.000 символов.

Больше бэкстейджа, мыслей и проектов у меня вTelegram.

Показать полностью 23 1
[моё] Гаджеты Покупка 3D графика Графика Программирование C++ 3dfx Voodoo Видеокарта 90-е Железо Старое железо Ретро-игры Игры Ретро Видео YouTube Длиннопост
18
17876
Beasiofun
Beasiofun
1 год назад
Истории из жизни

Мамкин хацкер⁠⁠3

В один из 366-ти дней 1996-го года я всё таки окончательно заебал своего батю и он решил, что если мы и протянем ноги с голоду, то это будет хотя бы в тишине, без "когда когда когда когда когда когда мы купим компьютер? ". Это был очень короткий период нашего достатка (достатка по меркам 90-х, т.е мы могли даже кушать и даже еду:) и таки хитрыми путями нашлась сумма на прекрасный DX 386 с 8 мегабайтами оперативки, 40 МЕГАбайтами на жёстком диске, EGA видеокартой, в лежачем корпусе.

Как только это чудо заработало случился фундаментальный разрез моей жизни. На "до" и после. Больше моя жизнь никогда не будет прежней.

Мамкин хацкер Истории из жизни, 90-е, Детство, Воспоминания, Глупость, IT, Мат, Длиннопост, DOS, Программирование, Математика

Проработал компьютер неделю - я убрал в папку ненужный файл command.cоm и потом он почему-то перестал загружаться.

По братски взрослый сын наших друзей семьи починил нам ПК. Сказал, что бы я, не лазил, где не надо и с гордым видом удалился. Примерно на неделю. Ещё через неделю он опять вытаскивал из своего компьютера дисковод 3.5, своего у меня не было, брал дискету с Ms DOS и шёл к нам. На 6-7 неделе он сдался. В очередную итерацию починки(уже на аппаратном уровне) он усадил меня за комп, зашёл в появившуюся папку и сказал - еще раз и я тебя прикопаю за гаражами это Паскаль, такой язык программирования, на нём ты можешь делать всё. Вообще всё, что захочешь. Даже написать свою операционную систему, что бы это не значило. Читай книги, повзрослеешь- расскажу тебе про Си и ассемблер.

Это был выстрел в яблочко. Меня потеряли. Меня потеряли родители, друзья, двор, школьная учёба. Я сидел днём после школы в компьютере, пока силком не загоняли в кровать, сидел сутками совсем не спав, в субботу и воскресенье.

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

Мамкин хацкер Истории из жизни, 90-е, Детство, Воспоминания, Глупость, IT, Мат, Длиннопост, DOS, Программирование, Математика

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

Масштабный взлом всей системы образования, виде авторешатель.exe занял несколько большее количество времени, чем я себе представлял по фильмам про крутых хакеров, но оно пролетело незаметно. Каждый аргумент функции print наполнялась зловещей гениальностью и я чувствовал как от моего детища содрогается  сам Линус Торвальдс, а Кевин Митник будет ссать кипятком и охотится за исходниками из самой Калифорнии. Хотя не о первом ни о втором я тогда не знал. Когда через неделю программа выдала первый раз правильное решение я не мог усидеть на месте от своего всемогущества. Если бы не домашка по другим предметам я бы и банки научился взламывать - думал я, упиваясь своим превосходством. Мухахаха!
Нюанс возник чуть позже, у школьной  доски. У учителя неожиданно вкрались сомнения по сданному материалу в виду отсутствия ошибок и она дала контрольную задачу для решения на доске.
Я впал в ступор.. А потом случайно его решил почти устно. Как так то?
И только тут меня осенило какая вселенская несправедливость со мной сыграла злую шутку. Только тут, стоя у доски до меня дошёл совсем незначительный просчёт сверх гениального плана - что бы написать алгоритм по решению квадратных уравнений я всю неделю их решал и нарешал в сумме штук 200 пока прога не заработала.

Сдать надо было 17.

Мамкин хацкер Истории из жизни, 90-е, Детство, Воспоминания, Глупость, IT, Мат, Длиннопост, DOS, Программирование, Математика
Показать полностью 3
[моё] Истории из жизни 90-е Детство Воспоминания Глупость IT Мат Длиннопост DOS Программирование Математика
705
Партнёрский материал Реклама
specials
specials

Раз проценты, два проценты⁠⁠

Звучит приятно, если речь о выгоде и начисленном кешбэке. Сделали самый приятный калькулятор, который считает исключительно выгоду!

Реклама Реклама. ПАО «Банк ВТБ», ИНН: 7702070139

Калькулятор Выгода
339
monobogdan
monobogdan
1 год назад
TECHNO BROTHER

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х?⁠⁠

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



В наше время большинство портативных устройств работает на базе достаточно мощных микроконтроллеров, которые способны запускать даже интерпретируемый код на Lua/Python. Чего уж там говорить — даже современная кофеварка или умный электрочайник может быть в разы мощнее оригинального IBM-PC, не говоря уже о автомобильных бортовых компьютерах, которые зачастую мощнее топовых ПК из начала нулевых. Но давайте вспомним конец 90-х и начало 2000-х, когда разработка собственной электроники была практически недоступна рядовому пользователю, а микроконтроллеры программировались в основном только на ассемблере. Недавно я нашёл некоторую информацию о том, какой процессор вероятно использовался в таких знакомых нам приставках Brick Game, которые мы называли «Тетрисами»! Более того, мне удалось найти полный даташит с описанием всех модулей этого процессора, который гордо можно назвать «система на кристалле». Какой была разработка микроэлектроники в 90-х? Читайте в статье!

❯ Немного о «Тетрисе»


Пожалуй, Тетрис или Brick Game был одной из самых популярных портативных игровых консолей в странах СНГ. Появившись где-то в конце 90-х, этот гаджет быстро стал бестселлером среди детишек благодаря наличию сразу нескольких игр, полноценного ЖК-экрана, звука и невероятной дешевизны. Не знаю, сколько Тетрис стоил в момент выхода, но в нулевых цена на него была крайне низкой — около 100-200 рублей в зависимости от корпуса. Типичный школяр мог накопить на собственный Тетрис за несколько недель, что делало его самым доступным игровым девайсом на рынке.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Конечно же, на рынке уже были различные консоли с гораздо более богатым функционалом — например GameBoy и даже GameBoy Color с цветным дисплеем, а люди, родившиеся в конце 90-х или начале 2000-х уже застали PlayStation Portable с реально крутой 3D-графикой и телефоны с хорошим игровым потенциалом — как, например, SE K500i. Однако цена на них была непозволительной роскошью для небогатых семей: PSP стоила 250$ (около 7-8 тысяч рублей по тому курсу), плюс каждый UMD-диск с игрой стоил около 1.000 рублей, GameBoy были относительно редкими в России, а телефоны — это всё же прерогатива более юных ребят, да и в нулевых далеко не всем перепадал крутой K500i — чаще всего покупали телефон попроще типа Siemens A55 (грузчика помним?) или Motorola C350 (а мотоциклиста?). Поэтому тетрисы оставались чуть ли не единственным средством развлечения у небогатых ребят.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Ощутимым плюсом было и то, что Тетрис работал от батареек: они были не слишком дорогими в то время, а если носить с собой в кармане парочку, то можно не бояться, что консоль сядет в долгой дороге и продолжать себя забавлять, да и сам Тетрис работал довольно долго, мне хватало на неделю игры (может и меньше). Несмотря на низкое разрешением всего в 10x20 пикселей, Тетрис обладал достаточно большим монохромным дисплеем без подсветки, на котором было комфортно играть.
Ещё одним немаловажным плюсом консоли была возможность «кооперативной» игры и эдакого азарта: будучи неискушенными детьми, многие из нас пытались поставить рекорды и выбить как можно больший счёт в каждой из доступных игр. Чем больше счёт, тем ты круче среди друзей!

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Но что же у Тетриса «под капотом»? На чём он работал внутри? Недавно я нашёл информацию о том, что потенциально в Тетрисе могла использоваться 4х-битная система на чипеHoltek HT1130, которая использовалась в самой разной носимой электроники: от часов на батарейках, до полноценных игровых консолей. Причём я ничуть не преувеличиваю, это действительно SoC: уже в 90-х, тайваньская компания смогла объединить звуковой модуль, контроллер ЖК-дисплея, ввод/вывод и таймер в один чип! Однако тут важно понять, что 100% сказать, на чём работал Тетрис, нельзя — процессор спрятан под компаундом и у него нет корпуса с маркировкой, лишь «голый» кристалл. Тем не менее, мы можем предположить, что это был один из чипов Holtek и посмотреть, на чём же работала портативная электроника тех лет поближе!

Заранее прошу прощения за отсутствие нормальных фотографий. Под рукой у меня не оказалось «старого» Тетриса, а на новодельных показывать как-то не очень.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



На данный чипсет есть «утёкший» в сеть даташит с полным описанием регистров микроконтроллера и его ТТХ. Чип был спроектирован так, чтобы не требовать практически никакой обвязки в виде конденсаторов/резисторов и других SMD-элементов — он работал фактически напрямую от пальчиковых батареек и его легко было развести на плате даже начинающему инженеру. Микроконтроллер стабильно оперировал при напряжении от 2.4в до 3.3в, что позволяло просто вставить две последовательно соединенные AA или AAA батарейки с напряжением 1.5-1.6в и получить необходимое питание для работы всей «приставки».

❯ Вычислительное ядро


Саму систему на кристалле можно разделить на несколько соединенных модулей в один чип. Основным, конечно же, является 4х-битное вычислительное ядро неизвестной архитектуры, которое компания Holtek разработала сама или лицензировала как IP-ядро у другой компании для использования в собственном чипе (как, например, MediaTek лицензирует у ARM ядра Cortex). Система команд, по крайней мере, описание мнемоник ассемблера в даташите наводят на мысли о некоторой схожести с микроконтроллером Intel 8051 (однако 8051 был 8-битным) и в целом, напоминают типичную интеловскую архитектуру из 80х. Однако только по мнемоникам точно определить архитектуру невозможно: здесь есть «проприетарные» команды типа SOUND и TIMER.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост
Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост
Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост


Чип работает на частоте 1мгц от встроенного тактового генератора, большинство команд выполняется за один такт, максимум — два. Если говорить совсем грубо, то даже ATMega328 в Arduino условно в 16-раз мощнее HT1130, хотя это совсем некорректное сравнение.

Длина машинного слова HT1130 — 4 бита, что отсылает нас в начало 70х годов, если мы говорим о компьютерах. Это означает, что процессор «аппаратно» мог выполнять операции только с числами от 0 до 16, хотя при программной реализации мог пересчитывать хоть 32х-битные числа. Ширина шины данных — 12 бит, что позволяло адресовать вплоть до 4Кб встроенной ROM-памяти. Кроме того, в МК было встроено 128 ячеек оперативной памяти (или 64 байта), где в00H..7FHхранились временные данные программы (например, позиция танчиков на экране) и сE0H..FFHхранился «буфер» кадра, который определял текущую на экране. Также у микроконтроллера были следующие регистры:

  1. R0-R4 — регистры общего назначения. Пары из регистров используются для адресации памяти.

  2. ACC — регистр-аккумулятор, который хранит результаты текущей операции.

  3. PC — указатель на текущую инструкцию в ROM, которую выполняет процессор.

  4. Стековый регистр — судя по всему, «невидимая» связка регистров, которую процессор использует для хранения PC при вызове функций. Ограничен максимум двумя адресами, что не даёт возможность писать программы с вложенностью более двух функций.


С стековым регистром всё интересно получается. В отличии от привычных нам архитектур, HT1130 не хранит в этом регистре указатель на память, он сам по себе как-бы является стеком. Пример допустимого и недопустимого кода:

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост

Выбор 4х-битного процессора очевиден — они очень недорогие в производстве и достаточно простые. Примеры использования 4х-битных архитектур можно найти даже в советских играх: например, в игре «Волк и яйца» (клоне Nintendo Game & Watch) использовалась «микроЭВМ» КБ1013ВК1-2.
В встраиваемой и переносной электронике, 4х-битные вычислительные ядра продолжают использоваться и сейчас: в калькуляторах, в пультах для управления техникой, в часах. Связано это с простой и дешевизной подобных решений, да и если честно, реализация этих устройств была готова ещё в прошлом веке. Зачем дополнительно тратить деньги на R&D существующих решений? :)

❯ Графика


HT1130 специально разрабатывался для переносимых устройств с новомодными LCD-дисплеями. В те годы было нормой, когда на дисплейной матрице не было собственного контроллера с распространенным интерфейсом по типу 8080 или MIPI: частенько, драйвер дисплея либо выделялся в отдельный чип, либо реализовывался прямо в системе на кристалле. У Brick Game был дисплей разрешением в 10x20 пикселей, причём кастомизированный — с «захардкоженными» значками и сегментными индикаторами:

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Работа с дисплеем была не особо сложной: один сегмент памяти был отведен специально под эдакий «фреймбуфер» — всё, что мы записывали туда, контроллер дисплея моментально отображал на нашу ЖК-матрицу. Поскольку дисплей был одноцветным, без градаций цвета, память была организована 1 бит — 1 пиксель. Работать со всем этим было как-то так:

MOV A, 0 ; Первая часть адреса (если я не напутал endianness)

MOV R1, A

MOV A, 0b0111 ; Вторая часть адреса. Не удивляйтесь, что по факту получается 224 при 128 байт ОЗУ - часть адресного пространства была как-бы зарезервирована

MOV R0, A

MOV A, 1 ; Закрасим первый пиксель в строке

MOV [R1R0], A ; И запишем это значение в ОЗУ

Частичным доказательством того, что этот чип мог использоваться в Brick Game — это то, что компания Holtek производила готовые «игры на кристалле» — вероятно, уже запрограммированные с завода HT1130 с определенными играми:

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Примечательно, что даташит на готовые игры датируются ноябрём 1998 года, в то время как даташит на HT1130 — 1999. Если у вас появился Тетрис раньше этого времени — напишите пожалуйста в комментариях!

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост

❯ Звук


Помимо этого, чипсет имел собственный генератор звука, или как вы вероятно подумаете — «пищалку». В чип (или SDK, если честно, не особо понятно из даташита) была уже встроена звуковая библиотека — причём половину из них как раз таки для игр, что ещё раз косвенно подтверждает догадки об использовании этого чипа в «Тетрисе». Всего поддерживалось до 16 «каналов», в которых было по 3 тональности. В звуковой библиотеке содержались следующие звуки:

  • Шумы

  • Мелодии

  • Выстрелы

  • Будильники



Управлять звуковым трактом было очень просто — буквально несколькими командами на ассемблере. Команда SOUND <номер канала> выбирала один из предопределенных звуков (причем не совсем ясно, где они хранились — возможно в ROM), а команда SOUND ONE/LOOP воспроизводила его в одном из режимов — один раз или повторяющийся. SOUND OFF же выключала звук совсем. Как-то так:

play:

SOUND A

SOUND ONE

SOUND OFF

CLC ; А если нет, то снова выполняем, пока не переполнится, эта операция очищает флаг переноса

loop:

INC A ; Увеличиваем значение в аккумуляторе

JC play ; Если флаг переноса установлен, то наш "таймер" как-бы переполнился и пора снова проиграть звук

JMP loop;

Совсем немудрено, согласитесь? :)

❯ Порты ввода/вывода и кнопки


Кроме этого, HT1130 имел несколько портов ввода-вывода, которые, однако, назвать GPIO нельзя — было 12 портов для вывода, которые могли читать логический уровень (для кнопок), и 4 пина, который мог задавать логический уровень (например, управлять вибромотором или светодиодом). Настройки портов задавались с помощью флагов: можно было настроить встроенные pull-up резисторы и они могли вызывать прерывания при переходе из высокого уровня в низкий.

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х? Гаджеты, Разработка, Тетрис, 90-е, Электроника, Китай, Девайс, Программирование, Микроконтроллеры, Ретро, Микроэлектроника, Embedded, Длиннопост



Выходной порт мог быть сконфигурирован под тип выхода — CMOS или NMOS. Работа с портами шла с помощью команд IN и OUT — как в x86, а обрабатывать их можно было как-то так:

loop: IN A,0b00110010 ; Загрузить в аккумулятор значение порта PM

AND A,0b0001 ; Отсекаем биты состояний других кнопок и проверяем, нажата ли первая кнопка?

JNZ A, btn_pressed ; Если в аккумуляторе не 0 (а значит кнопка нажата) - то переходим на другую метку

JMP loop ; Если нет - то проверяем по новой

btn_pressed:

SOUND 0

SOUND ONE ; Воспроизвести звук при нажатии


❯ Таймер


В чипсете есть встроенный таймер — ну его ж не просто так для часов использовали. :) Основная суть работы аппаратных таймеров заключается в том, что его тактирует какой-либо внешний тактовый генератор с определенным делителем, в нашем случае — от 1 до 6 относительно системного генератора частоты (т.е 1мгц) и с определенной частотой он делает инкремент внутреннего регистра. Как только регистр переполняется — он очищается и вызывается соответствующее прерывание в основном процессоре.

Это позволяет регулировать скорость работы таймера, а посчитать количество тиков в таком случае не особо сложно. Однако учтите, что чем выше делитель таймера (а значит и обратно-пропорционально снижается точность таймера) — тем реже вызываются прерывания и меньше «кушают» наше процессорное время!

❯ Можно ли написать свою программу для Тетриса?


К сожалению, написать какую-нибудь свою игру для этой консоли в домашних условиях невозможно — таких удобных инструментов для прошивки, как у AVR ещё не было. Holtek предлагала собственный SDK, в которое входила IDE, ассемблер и симулятор отладки финальной программы. Однако дабы получить настоящее «хардварное» устройство, необходимо было заказывать у компании Holtek производство кастомизированного чипа с вашей программой на борту.

Чипсет использовал настоящую масочную Read-Only Memory, которая прожигалась один раз и навсегда на заводе. Производитель электроники отсылал скомпилированную программу Holtek, а они в свою очередь производили кастомный чип с прошитой программой. Несмотря на всю простоту ассемблера и устройства в целом, самому под него ничего написать не получится — внешних шин то у него нет. :(

Однако, в наше время можно разработать и собрать «Тетрис» самому: в том числе, с цветным дисплеем и на базе гораздо более мощного железа! Тут тебе и готовые мощные микроконтроллеры, и возможность собрать приставку на базе легендарного процессора Z80, да при желании можно симулировать почти настоящий HT1130 на FPGA!

❯ Заключение


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

Однако embedded-разработка тех лет была весьма интересной: когда полноценные игры вмещали в ПЗУ размером пару килобайт, на ремейки Space Invaders на современных движках весом в под сотню мегабайт смотришь с некоторой улыбкой. :)

Спасибо за наводку ресурсу retroscene:
Пост Legnahar, который один из первых опубликовал предположения насчет HT1130 и комментарию =A=L=X= под тем же постом.

Показать полностью 13
[моё] Гаджеты Разработка Тетрис 90-е Электроника Китай Девайс Программирование Микроконтроллеры Ретро Микроэлектроника Embedded Длиннопост
65
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии