AIeosha (aleosha) wrote,
AIeosha
aleosha

Categories:

О Кармаке

Давеча опять всплыла тема о том, как умненький Кармак всех перехитрил и сумел сделать плавный scrolling на ПеКа. Якобы никому до этого такое не удавалось, ибо Nintendo рвенно хранила секрет, как этого достичь в Mario. А Кармак взял да этот секрет поведал всему миру, безвозмездно. Такой вот классный парень этот Кармак.

Понятное дело, что миф этот сам же Кармак и раздул. Будучи посредственным программистом (другие в те времена в написание игр не шли), Кармак, тем не менее, всегда был силен в PR. Потому все, кто пересказывает этот миф цитируют “книгу” Masters of Doom. Книга же соврать не может.



Давайте все же разберемся, в чем же заключалась проблема Nintendo и ее решение. Которое Кармак как некий Прометей похитил и раздал людям.

А проблема заключалась в том, что консольки – продукт массовый. И как любой массовый продукт, маржи они сами по себе не несут. Значит необходимо сделать консоль как можно дешевле. А какая самая дорогая часть консоли? Гуманитарии было подумают, что это корпус. Или в крайнем случае CPU. На деле же, самой дорогой частью консоли до недавнего времени оставалась оперативка. Соответственно чтобы хоть как то выйти на массовый рынок и начать наконец то стричь лоха, производителям консоли нужно было память экономить. Потому у NES этой памяти было 2KB.

Понятное дело, что в 2KB много не нарендеришь. Потому использовался трюк знакомый любому написать ХаТэМэЛэ: sprite. Мелких картинок много, таскать тяжело? Слепим всю в одну, и будем указывать только offset’ы. У NES с этим все было ещё строже, и картинки были всегда 16×16. С дискретными шагами могли справиться даже японские “программисты”, которых как лепили из инженеров электроники, так и лепят.

Это все хорошо, но почему у Кармака было всего 2KB? Лезем читать про EGA: а там 256KB. Правда ПеКа – архитектура своеобразная. Ему вообще плевать что выводить на экран. Лучше всего конечно выводить текстовой редактор. Но и кадр из игры вполне можно засунуть. Но для того, чтобы плавно продвинуть картину на 1px, нужно побольше памяти. Лучше всего 512KB, чтобы умещалось сразу два экрана. К счастью, ПеКа уже в те времена покупались с запасом. Так что гениальный Кармак просто рисовал два экрана вместо одного.



Проблема с таким подходом в том, что тупо два экрана за tick не отрисовать, шина не позволит. Тогда было “изобретено” другое гениальное решение, знакомое в наши дни любому индусу наложившему свои лапки на Unity: писать только ту часть, которая поменялась. Субматрицы кажись подходят в CS101.

Такая вот прущая из всех щелей гениальность.


Tags: *.bak, *.exe, Кармак, гений
Subscribe

  • Бедуинский стройбат

    Бедуинским прапорам в Израиле вообще оружие не выдают. Приходится консервную банку на палку надевать 🤡 ---

  • SF News

    Так вот почему в SF на велосипедах кататься не любят: Останавливаюсь на перекрестке в минуте от дома, вижу как ко мне по проезжей части спешит…

  • Blade of Darkness и зумеры

    Зумеры открывают для себя, что Blade of Darkness на самом деле намного лучше чем Dark Souls, и это невыносимо смешно. Все благодаря переизданию в…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 11 comments

  • Бедуинский стройбат

    Бедуинским прапорам в Израиле вообще оружие не выдают. Приходится консервную банку на палку надевать 🤡 ---

  • SF News

    Так вот почему в SF на велосипедах кататься не любят: Останавливаюсь на перекрестке в минуте от дома, вижу как ко мне по проезжей части спешит…

  • Blade of Darkness и зумеры

    Зумеры открывают для себя, что Blade of Darkness на самом деле намного лучше чем Dark Souls, и это невыносимо смешно. Все благодаря переизданию в…